Parallelization ใน VASP
ฉันมีระบบที่มี 1 k-point, 54 อะตอมNBANDS=152
และNGZ=80
. ฉันใช้การจำลอง AIMD บน VASP เวอร์ชัน 5.4.4
ซูเปอร์คอมพิวเตอร์มี 32 คอร์ / โหนด เป็นคลัสเตอร์ LINUX ที่เชื่อมโยงโดย Infiniband ซึ่งเป็นเครื่องมัลติคอร์ที่ทันสมัย ฉันสงสัยว่าวิธีใดเป็นวิธีที่ดีที่สุดในการเลือกพารามิเตอร์และขอทรัพยากรเพื่อให้ได้การคำนวณที่มีประสิทธิภาพและรวดเร็ว นี่คือสถานการณ์บางอย่างที่ฉันได้พิจารณา ฉันอยากรู้ว่าอะไรคือวิธีที่ "ดีที่สุด" (ในแง่ของประสิทธิภาพและความเร็ว)
- จากสิ่งที่ฉันอ่านที่นี่
- ฉันควรขออะไรสักอย่างเช่น 19 วง (152/8) อาจตั้งค่า NBANDS = 160 เพื่อขอแกน 20
- ฉันจะตั้งค่า NCORE = 20 ในไฟล์ INCAR ของฉันและขอ 20 คอร์ใน 1 โหนดได้หรือไม่
- หรือจะดีกว่าถ้าตั้งค่า NCORE = 10 แล้วขอบางอย่างเช่น 2 โหนดและ 10 คอร์ต่อโหนด? หรือนั่นจะสร้างค่าใช้จ่ายในการสื่อสารมากเกินไปและทำให้การจำลองช้าลง?
- ถ้าฉันตัดสินใจใช้ # ของคอร์ = # ของอะตอม = 54
- ฉันจะตั้งค่า NCORE = 32 จากนั้นขอ 54 คอร์มากกว่า 2 โหนด (32 ใน 1 โหนด + 22 ในวินาที) หรือไม่ หรือ 9 คอร์ / โหนดและ 6 โหนด?
- ฉันขอโหนดทั้งหมดไม่ได้หรือ 1 โหนด 32 คอร์
- ดังนั้นตั้งค่า NCORE = 32 และฉันก็ขอโหนดทั้งหมด อย่างไรก็ตามคู่มือ VASPแนะนำให้ต่อต้านสิ่งนี้เนื่องจากจะทำให้ NPAR = 1
- สิ่งนี้ทำให้ฉันสับสนเล็กน้อยเพราะฉันคิดว่า 32 คอร์ในหนึ่งโหนดจะมีประสิทธิภาพมากกว่าการมีคอร์ในหลาย ๆ โหนดที่สื่อสารกัน
คำตอบ
ในฐานะที่เป็นคนที่ทำการเปรียบเทียบสำหรับ VASP มามากมายฉันขอแนะนำให้คุณลองใช้วิธีการทดลอง ฉันเชื่อว่า VASP จะเพิ่มวงดนตรีเพิ่มเติมให้คุณหากจำเป็นต้องใช้สำหรับการขนานดังนั้นฉันจึงไม่ต้องกังวลเกี่ยวกับเรื่องนี้เป็นการส่วนตัว โครงร่างของโหนดทางกายภาพ (32 คอร์บนโปรเซสเซอร์ 1 ตัวเทียบกับ 16 คอร์บน 2 โปรเซสเซอร์เทียบกับโครงร่างโปรเซสเซอร์ AMD พิเศษบน CPU ตัวเดียว) อาจแตกต่างกันอย่างมากในแต่ละคลัสเตอร์ที่คุณไม่สามารถทราบได้ว่าอะไรเหมาะสมที่สุดโดยไม่ต้องพยายาม
เนื่องจากคุณใช้การจำลองแบบ MD ฉันคิดว่ามันคุ้มค่าที่จะเปรียบเทียบแต่ละระบบก่อนที่คุณจะทำการจำลองแบบยาว การเปลี่ยนแปลงเล็กน้อยไม่จำเป็นต้องให้คุณปรับแต่งใหม่ แต่ถ้าคุณเปลี่ยนจาก 50 เป็น 150 ถึง 300 อะตอมอุดมคติอาจเปลี่ยนไป เรียกใช้ชุดการคำนวณอย่างรวดเร็วด้วย NCORE ทั้งช่วงที่ดูสมเหตุสมผล ใช้ผลลัพธ์ที่ดีที่สุด ฉันมักจะตรวจสอบทุกปัจจัยของโหนดที่ใหญ่ที่สุด
สำหรับ 32 คอร์ฉันจะตรวจสอบ NCORE = (1, 2, 4, 8, 16, 32) ฉันจะใช้เวลาเทียบกับขั้นตอนทางเรขาคณิต 10 ขั้นตอน อาจดูเหมือนเสียเวลา แต่อาจทำให้ประหยัดเวลาได้มากในอนาคต
ฉันมักจะแนะนำให้ขอโหนดทั้งหมดเว้นแต่คุณจะมีเหตุผลที่ดีที่จะไม่ทำเช่นนั้น ในที่สุดคุณอาจเห็นตัวเลือก KPAR เช่นกันในขณะที่มองไปรอบ ๆ ฉันได้ยินความคิดเห็นที่หลากหลาย โดยส่วนตัวแล้วฉันไม่เคยได้ผลลัพธ์ที่ดีกว่าด้วยการขนาน kpoint มากกว่าการไม่มีเลย มันอาจสร้างความแตกต่างของความทรงจำได้
ฉันคิดว่าฉันจะโพสต์ผลลัพธ์ของการเปรียบเทียบตามคำแนะนำของ Tristan บางทีมันอาจจะมีประโยชน์สำหรับใครบางคนในอนาคต ฉันทำเพียง 10 ขั้นตอนใน MD (ขนาดขั้นตอน 1 fs รวม 10 fs)
ความแตกต่างของเปอร์เซ็นต์ทั้งหมดสัมพันธ์กับการรัน NCORE = 1 ที่มี 32 คอร์และ 1 โหนด มีการเร่งความเร็ว 33% โดยไปที่ 2 โหนดที่มี 64 คอร์ (NCORE = 32)
เห็นได้ชัดว่าสิ่งนี้อาจแตกต่างกันไปขึ้นอยู่กับคลัสเตอร์ของคุณ นี่คือคลัสเตอร์ Graham ใน Sharcnet ในแคนาดาดังนั้นหวังว่าจะเป็นประโยชน์กับเพื่อนชาวแคนาดาที่นั่น :)
