Score:2

ฉันจะเปลี่ยนตัวแปรสภาพแวดล้อมสำหรับ OpenMPI ได้อย่างไร

ธง cn

ฉันติดตั้ง Ubuntu 20.04 แล้วและจำเป็นต้องติดตั้ง OpenMPI 3.1.6 ด้วย gcc 8.4.0

ฉันดาวน์โหลด tar ball จาก OpenMPI และติดตั้งด้วยคำสั่งต่อไปนี้

tar-xzf openmpi-3.1.6.tar.gz && ซีดี openmpi-3.1.6
PARGS="env CC=/usr/bin/gcc FC=/usr/bin/gfortran CXX=/usr/bin/g++"
ARGS=" --enable-shared --enable-mpi-fortran=usempi"
ARGS+=" --enable-mpi-thread-multiple"
ARGS+=" --prefix=/openmpi/3.1.6/gcc/8.4.0"
mkdir -p สร้าง && สร้างซีดี
$PARGS ../configure $ARGS
$PARGS ทำ -j8 && ทำการติดตั้ง

มันติดตั้งได้ดีไม่มีปัญหา แต่เมื่อได้ลอง

เอ็มพิรัน --version

ฉันได้รับข้อผิดพลาดต่อไปนี้

ไม่พบคำสั่ง 'mpirun' แต่สามารถติดตั้งได้ด้วย:

จากนั้นให้ตัวเลือกต่าง ๆ โดยใช้ sudo apt-get (ซึ่งเป็นวิธีที่ฉันติดตั้งในตอนแรก แต่ไม่รองรับ 3.1.6)

ฉันคิดว่ามันเกี่ยวข้องกับตัวแปรด้านสิ่งแวดล้อม นั่นคือ Linux ไม่พบซอฟต์แวร์ ดังนั้นฉันจึงไปหาและพบว่าในคำถามที่พบบ่อยของ OpenMPI มันกล่าวถึงสิ่งต่อไปนี้:

"สมมติว่าคุณได้ปรับ PATH และ/หรือตัวแปรสภาพแวดล้อม LD_LIBRARY_PATH ของคุณไปยังตำแหน่งใหม่ที่ Open MPI อยู่ในขณะนี้"

...แต่มันไม่ได้บอกว่าต้องทำอย่างไร ฉันพยายามค้นหา แต่มันพูดถึง ~/.FILE ที่แตกต่างกันทุกประเภท (โดยที่ไฟล์คือ bash หรือ lib64 หรือ lib32 หรือไฟล์อื่นๆ)

ฉันต้องเปลี่ยนอะไรในตัวแปรสภาพแวดล้อมและในไฟล์ใด ฉันใช้เทอร์มินัล Ubuntu สำหรับทุกอย่าง

============================================ ขอบคุณ ubfan1! ฉันต้องเพิ่มสิ่งต่อไปนี้ใน /.profile:

# กำหนดเส้นทาง OpenMPI
ส่งออก OMPI=/openmpi/3.1.6/gcc/8.4.0
ส่งออก PATH=$PATH:$OMPI/bin
ส่งออก LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$OMPI/lib

และตอนนี้ใช้งานได้แล้ว! ระบบของฉันพบ mpirun และเวอร์ชันคือ 3.1.6!

N0rbert avatar
zw flag
เกิดอะไรขึ้นกับ OpenMPI 4.0.3 จาก [ที่เก็บข้อมูลอย่างเป็นทางการ] (https://packages.ubuntu.com/focal/libopenmpi-dev) ความคิดสุดท้ายของคุณคืออะไร?
sfwalter avatar
cn flag
ซอฟต์แวร์ที่ฉันใช้ไม่ทำงานกับ OpenMPI ที่ใหม่กว่า 3.1.6 เป็นรหัสการวิจัยดังนั้นจึงไม่ได้รับการอัปเดตเมื่อมีการอัปเดตแพ็คเกจอื่น
Score:1
ธง cc

ดูใน .profile ของโฮมไดเร็กทอรีของคุณเพื่อดูวิธีเพิ่มสิ่งต่างๆ ลงใน PATH ของคุณ
ตำแหน่งที่คุณติดตั้ง openmpi อาจมีไดเร็กทอรีย่อยชื่อ bin, lib64 เป็นต้น ตัวอย่างเช่น $HOME/openMPI คือตำแหน่งที่คุณเลือกติดตั้ง ดังนั้นให้เพิ่ม $HOME/openMPI/bin ใน PATH ของคุณที่ส่วนท้ายของ .profile: ส่งออก PATH="$HOME/openMPI/bin:$PATH" จากนั้นเพิ่มบรรทัด:" ส่งออก LD_LIBRARY_PATH=$HOME/openMPI/lib64 (สมมติว่าคุณไม่มี LD_LIBRARY_PATH อยู่แล้ว) เมื่อคุณมีตำแหน่ง ...openMPI/bin ในช่วงต้นของ PATH ของคุณแล้ว คุณสามารถแทนที่คำสั่งระบบมาตรฐานได้โดยการใส่คำสั่งใหม่ลงไป เช่น ลิงก์ชื่อ gcc ไปยังเวอร์ชัน gcc-8.4 (ซึ่งพร้อมใช้งานใน 20.04) หากคุณต้องการเวอร์ชันของ gcc ที่ไม่มีในแพ็คเกจมาตรฐาน คุณสามารถใส่ไฟล์ปฏิบัติการทั้งหมด (จากทุกที่ที่คุณหาได้) แทนลิงก์ บางทีคุณอาจไม่ต้องการแทนที่ gcc ทุกครั้งที่คุณเข้าสู่ระบบ ในกรณีนั้น ให้ตั้งค่าสคริปต์ให้ทำงานแทนการใส่การเปลี่ยนแปลงลงใน .profile ของคุณ

gotchas ปกติ:

  1. การเข้าสู่ระบบของคุณไม่ได้สร้างเชลล์การเข้าสู่ระบบ ดังนั้น .profile จึงไม่ถูกดำเนินการ (โดยปกติจะไม่ใช่ปัญหาของ Ubuntu แต่คำแนะนำทั้งหมดสำหรับการใส่ PATH mods ลงใน .bashrc เกิดจากปัญหานี้
  2. คุณสร้าง .bash_profile ซึ่งแทนที่ .profile -- คุณควรทราบหากคุณทำเช่นนั้น และแก้ไข .bash_profile แทน
  3. คำแนะนำในการแก้ไข /etc/alternatives เพื่อเปลี่ยน gcc เริ่มต้นของระบบโดยทั่วไปจะทำให้ระบบของคุณล้มเหลวในครั้งต่อไปที่คุณอัปเดตและต้องการคอมไพเลอร์มาตรฐานที่เผยแพร่และทดสอบแล้ว

การเพิ่มพาธของคุณควรขึ้นต้นด้วย / ดังนั้น /home/openmpi/... แทนที่จะเป็นแค่ openmpi/... อย่างไรก็ตาม ดูในไดเร็กทอรี openmpi และดูว่ามีไดเร็กทอรี bin หรือไม่ นั่นคือไดเร็กทอรีที่ฉันคาดหวัง หากมีไฟล์ปฏิบัติการ openmpi ให้เรียกใช้จริง คุณสามารถเพิ่มลิงก์ gcc ไปที่ระดับล่าง gcc...bin เพียงเพื่อรวมโปรแกรม openmpi ทั้งหมดเข้าด้วยกัน โปรดทราบว่า gcc 8.4 มีให้ใช้งานเป็นแพ็คเกจมาตรฐานใน Ubuntu 20.04 แต่ถ้าการติดตั้ง openmpi ของคุณมีการติดตั้ง คุณสามารถใช้มันได้ แต่จะไม่ได้รับการอัปเดตใดๆ หากมี

sfwalter avatar
cn flag
ขอบคุณมากสำหรับเรื่องนี้. สิ่งที่ฉันไม่แน่ใจเกี่ยวกับ... .profile ของฉันมีดังต่อไปนี้: # ตั้งค่า PATH เพื่อให้มีถังขยะส่วนตัวของผู้ใช้หากมีอยู่ ถ้า [ -d "$HOME/bin" ] ; แล้ว PATH="$HOME/bin:$PATH" ไฟ ฉันจะเพิ่ม # ตั้งค่า PATH สำหรับ OpenMPI (โปรดทราบว่าไม่ได้อยู่ใน $HOME/openmpi แต่เป็นไดเร็กทอรีหนึ่งรายการด้านบน...เป็นปัญหาหรือไม่ ถ้า [ -d "openmpi/3.1.6/gcc/8.4.0/bin" ] ; แล้ว PATH="openmpi/3.1.6/gcc/8.4.0/bin:$PATH" ไฟ มันดูถูกต้องไหม?
sfwalter avatar
cn flag
มันได้ผล! # กำหนดเส้นทาง OpenMPI ส่งออก OMPI=/openmpi/3.1.6/gcc/8.4.0 ส่งออก PATH=$PATH:$OMPI/bin ส่งออก LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$OMPI/lib
cc flag
ง่ายกว่าสำหรับคุณในการเพิ่มลงในโพสต์ต้นฉบับ และคุณสามารถจัดรูปแบบเป็นโค้ดได้

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา