คำตอบที่นำเสนอนั้นดีมาก แต่ฉันก็คาดหวังว่าจะให้ความสำคัญกับความแตกต่างระหว่างการประมวลผลแบบขนานและแบบกระจาย: โค้ดที่เรียกใช้ เมื่อพิจารณาถึงกระบวนการแบบขนานรหัสที่เรียกใช้จะเหมือนกันโดยไม่คำนึงถึงระดับของความขนาน (คำสั่งข้อมูลงาน) คุณเขียนรหัสเดียวและมันจะถูกประมวลผลโดยเธรด / โปรเซสเซอร์ที่แตกต่างกันเช่นในขณะที่คำนวณผลิตภัณฑ์เมทริกซ์หรือสร้างการเรียงสับเปลี่ยน
ในอีกทางหนึ่งการคำนวณแบบกระจายเกี่ยวข้องกับการดำเนินการของอัลกอริทึม / โปรแกรมที่แตกต่างกันในเวลาเดียวกันในโปรเซสเซอร์ที่แตกต่างกัน (จากเครื่องหนึ่งเครื่องหรือมากกว่า) การคำนวณดังกล่าวจะถูกรวมเข้ากับผลลัพธ์ระดับกลาง / สุดท้ายโดยใช้วิธีการสื่อสาร / การซิงโครไนซ์ข้อมูลที่มีอยู่ (หน่วยความจำที่แชร์เครือข่าย) นอกจากนี้การคำนวณแบบกระจายนั้นเป็นที่สนใจอย่างมากสำหรับการประมวลผล BigData เนื่องจากสามารถใช้ประโยชน์จากความขนานของดิสก์ (โดยปกติจะเป็นคอขวดสำหรับฐานข้อมูลขนาดใหญ่)
ในที่สุดสำหรับระดับของการขนานมันอาจถูกนำมาใช้เป็นข้อ จำกัด ในการประสาน ตัวอย่างเช่นใน GPGPU ซึ่งเป็นคำสั่งเดียวหลายข้อมูล (SIMD) ความขนานเกิดขึ้นโดยมีอินพุตที่แตกต่างกันสำหรับคำสั่งเดียวแต่ละคู่(data_i คำสั่ง)ถูกเรียกใช้โดยเธรดอื่น นี่เป็นข้อ จำกัด ที่ในกรณีสาขาแตกต่างกันมีความจำเป็นต้องทิ้งการคำนวณที่ไม่จำเป็นจำนวนมากจนกว่าเธรดจะกลับคืนมา สำหรับเธรด CPU แม้ว่าพวกเขาจะแยกจากกันโดยทั่วไป แต่หนึ่งอาจใช้โครงสร้างการซิงโครไนซ์เพื่อให้การเรียกใช้งานพร้อมกันของส่วนเฉพาะของรหัส