การลดการใช้งานMPI_Allreduce()
นั้นสามารถทำซ้ำได้ตราบใดที่คุณใช้โปรเซสเซอร์จำนวนเท่าเดิมหากการใช้งานสังเกตว่าบันทึกต่อไปนี้ปรากฏในส่วน 5.9.1 ของมาตรฐาน MPI-2.2
คำแนะนำเพื่อ implementors ขอแนะนำอย่างยิ่งให้MPI_REDUCE
ดำเนินการเพื่อให้ได้ผลลัพธ์เดียวกันทุกครั้งที่มีการใช้ฟังก์ชันในอาร์กิวเมนต์เดียวกันโดยปรากฏในลำดับเดียวกัน โปรดทราบว่าสิ่งนี้อาจป้องกันการปรับให้เหมาะสมที่ใช้ประโยชน์จากตำแหน่งทางกายภาพของโปรเซสเซอร์ ( สิ้นสุดการให้คำแนะนำแก่ผู้ดำเนินการ )
หากคุณต้องการรับประกันความสามารถในการทำซ้ำได้ทั้งหมดคุณสามารถทำตามคำแนะนำในย่อหน้าถัดไป:
แนะนำให้กับผู้ใช้ แอปพลิเคชันบางอย่างอาจไม่สามารถเพิกเฉยต่อลักษณะที่ไม่เกี่ยวข้องของการดำเนินการจุดลอยตัวหรืออาจใช้การดำเนินการที่ผู้ใช้กำหนดเอง (ดูหัวข้อ 5.9.5) ที่จำเป็นต้องมีคำสั่งลดพิเศษและไม่สามารถใช้เป็นสมาคมได้ แอปพลิเคชันดังกล่าวควรบังคับใช้ลำดับการประเมินผลอย่างชัดเจน ตัวอย่างเช่นในกรณีของการดำเนินการที่ต้องการลำดับการประเมินผลจากซ้ายไปขวา (หรือจากขวาไปซ้าย) ที่เข้มงวดสามารถทำได้โดยรวบรวมตัวถูกดำเนินการทั้งหมดในกระบวนการเดียว (เช่นกับ
MPI_GATHER
) โดยใช้การดำเนินการลด ในลำดับที่ต้องการ (เช่นด้วย
MPI_REDUCE_LOCAL
) และหากจำเป็นให้กระจายหรือกระจายผลลัพธ์ไปยังกระบวนการอื่น ๆ (เช่นด้วยMPI_BCAST
) ( สิ้นสุดการให้คำแนะนำแก่ผู้ใช้ )
ในรูปแบบที่กว้างขึ้นของสิ่งต่าง ๆ อัลกอริธึมที่มีประสิทธิภาพสำหรับการใช้งานส่วนใหญ่ใช้ประโยชน์จากพื้นที่ เนื่องจากอัลกอริทึมนั้นแตกต่างกันอย่างแท้จริงเมื่อทำงานกับกระบวนการที่แตกต่างกันจำนวนมากจึงไม่เหมาะที่จะทำซ้ำผลลัพธ์อย่างแน่นอนเมื่อทำงานกับกระบวนการที่แตกต่างกัน ข้อยกเว้นที่เป็นไปได้คือ multigrid ที่มี Jacobi หรือ polynomial (เช่น Chebyshev) ที่นุ่มนวลซึ่งเป็นไปได้ที่วิธีการง่ายๆนี้จะทำงานได้ดีมาก
ด้วยจำนวนกระบวนการที่เท่ากันก็มักจะเป็นประโยชน์ต่อประสิทธิภาพในการประมวลผลข้อความตามลำดับที่ได้รับ (เช่นการใช้MPI_Waitany()
) ซึ่งแนะนำการไม่กำหนดระดับ ในกรณีเช่นนี้คุณสามารถใช้สองรูปแบบได้คือแบบเร็วที่ได้รับในลำดับใด ๆ และแบบ "ดีบั๊ก" ที่ได้รับในลำดับคงที่ สิ่งนี้ต้องการให้ไลบรารีพื้นฐานทั้งหมดเขียนขึ้นเพื่อเสนอพฤติกรรมนี้
สำหรับการดีบักในบางกรณีคุณสามารถแยกส่วนของการคำนวณที่ไม่ได้เสนอพฤติกรรมที่ทำซ้ำได้และดำเนินการซ้ำซ้อน การเปลี่ยนแปลงนั้นอาจเป็นรหัสจำนวนเล็กน้อยหรือล่วงล้ำมากขึ้นอยู่กับวิธีการออกแบบส่วนประกอบ