การคำนวณแบบขนานและแบบกระจาย


15

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

ในบางวิธีการคำนวณดูเหมือนจะขนานกันเสมอเนื่องจากมีสิ่งต่าง ๆ ที่ทำงานพร้อมกัน แต่การคำนวณแบบกระจายนั้นเกี่ยวข้องกับการใช้มากกว่าหนึ่งเครื่องหรือมีความเฉพาะเจาะจงเพิ่มเติมใด ๆ ที่ทำให้การประมวลผลทั้งสองประเภทนี้แตกต่างกันหรือไม่? มันจะไม่ซ้ำซ้อนที่จะพูดเช่นการคำนวณที่ขนานและกระจาย ?

คำตอบ:


16

เพียงตั้ง 'ขนาน' หมายถึงการทำงานพร้อมกันในทรัพยากรที่แตกต่างกัน (CPUs) ในขณะที่ 'กระจาย' หมายถึงการทำงานในคอมพิวเตอร์ที่แตกต่างกันที่เกี่ยวข้องกับปัญหาที่เกี่ยวข้องกับเครือข่าย

การคำนวณแบบขนานที่ใช้เช่นOpenMPไม่ได้ถูกแจกจ่ายขณะที่การคำนวณแบบขนานด้วยMessage Passingมักจะมีการแจกจ่าย

การอยู่ในการตั้งค่าแบบ 'กระจาย แต่ไม่ขนาน' จะหมายถึงการใช้ทรัพยากรน้อยเกินไปดังนั้นจึงไม่ค่อยพบ แต่เป็นไปได้ที่จะเกิดแนวคิด


4

คำว่า "การคำนวณแบบขนาน" และ "การคำนวณแบบกระจาย" แน่นอนว่ามีการทับซ้อนกันมาก แต่สามารถสร้างความแตกต่างได้มากขึ้น ที่จริงแล้วคุณทำสิ่งนี้ในคำถามของคุณโดยถามในภายหลังเกี่ยวกับ "การประมวลผลแบบขนาน" และ "การประมวลผลแบบกระจาย"

หนึ่งอาจพิจารณา "การคำนวณแบบกระจาย" เป็นคำทั่วไปที่เกี่ยวข้องกับ "การประมวลผลแบบกระจาย" เช่นเดียวกับ "การจัดเก็บแบบกระจาย" คำทั่วไป "กระจาย" มักจะหมายถึงประเภทของการส่งข้อความผ่านเครือข่ายระหว่างเครื่องที่แยกทางร่างกาย

คำว่า "การคำนวณแบบขนาน" ยังอยู่ในกระบวนการของการกำหนดเพิ่มเติมเช่นโดยการแยกความแตกต่างระหว่างคำว่า "ขนาน" และ "พร้อมกัน" โดยที่ - ประมาณ - คนแรกหมายถึงข้อมูลขนานและหลังงานขนานแม้ว่าจะมี แทบจะไม่เข้มงวดและมีผลผูกมัด

ดังนั้นอาจกล่าวได้ว่า

  • "การประมวลผลแบบกระจาย" มักจะ (แม้ว่าไม่จำเป็น) หมายความว่ามันเป็น "การประมวลผลแบบขนาน"
  • "การคำนวณแบบกระจาย" นั้นกว้างกว่าและครอบคลุมทุกแง่มุมที่ไม่เกี่ยวข้องกับการขนาน
  • และเห็นได้ชัดว่า "การคำนวณแบบขนาน" / "การประมวลผลแบบขนาน" ไม่ได้แปลว่า "กระจาย"

3

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

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

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.