ตามที่ชี้แจงโดย @Raphael การคำนวณแบบกระจายเป็นส่วนย่อยของการคำนวณแบบขนาน ในทางกลับกันการคำนวณแบบขนานเป็นส่วนย่อยของการคำนวณแบบพร้อมกัน
การเกิดขึ้นพร้อมกันหมายถึงการแบ่งปันทรัพยากรในกรอบเวลาเดียวกัน ตัวอย่างเช่นกระบวนการหลายอย่างใช้ CPU ร่วมกัน (หรือแกนประมวลผล CPU) เดียวกันหรือแชร์หน่วยความจำหรืออุปกรณ์ I / O ระบบปฏิบัติการจัดการทรัพยากรที่ใช้ร่วมกัน เครื่องมัลติโปรเซสเซอร์และระบบกระจายเป็นสถาปัตยกรรมที่การควบคุมภาวะพร้อมกันมีบทบาทสำคัญ การเกิดขึ้นพร้อมกันทั้งในระดับฮาร์ดแวร์และซอฟต์แวร์ อุปกรณ์หลายตัวทำงานพร้อมกันตัวประมวลผลมีความเท่าเทียมภายในและทำงานกับคำสั่งหลายตัวพร้อมกันระบบมีตัวประมวลผลหลายตัวและระบบโต้ตอบผ่านเครือข่ายการสื่อสาร การเกิดขึ้นพร้อมกันที่ระดับแอปพลิเคชันในการจัดการสัญญาณในการทับซ้อนของ I / O และการประมวลผลในการสื่อสารและในการแบ่งปันทรัพยากรระหว่างกระบวนการหรือระหว่างเธรดในกระบวนการเดียวกัน
กระบวนการ (หรือเธรด) สองตัวที่ดำเนินการบนระบบเดียวกันเพื่อให้การประมวลผลของพวกเขาถูกอินเตอร์ลีฟในเวลาพร้อมกัน: กระบวนการ (เธรด) กำลังแชร์ทรัพยากร CPU ฉันชอบคำจำกัดความต่อไปนี้: กระบวนการที่สอง (เธรด) ที่ดำเนินการบนระบบเดียวกันจะเกิดขึ้นพร้อมกันหากกระบวนการที่สอง (เธรด) เริ่มต้นการดำเนินการเมื่อกระบวนการที่หนึ่ง (เธรด) ยังไม่ยุติการทำงานของมัน
การเกิดขึ้นพร้อมกันจะเกิดขึ้นพร้อมกันเมื่อกระบวนการ (หรือเธรด) ทำงานบนCPU ที่แตกต่างกัน (หรือแกนของ CPU เดียวกัน) การขนานในกรณีนี้ไม่ใช่ "เสมือน" แต่เป็น "ของจริง"
เมื่อซีพียูเหล่านั้นเป็นของเครื่องเดียวกันเราจะอ้างถึงการคำนวณว่า "ขนาน"; เมื่อซีพียูเป็นของเครื่องที่แตกต่างกันอาจแพร่กระจายทางภูมิศาสตร์เราอ้างถึงการคำนวณว่า "กระจาย"
ดังนั้น Distributed Computing จึงเป็นเซตย่อยของ Parallel Computing ซึ่งเป็นเซตย่อยของ Concurrent Computing
แน่นอนว่ามันเป็นความจริงที่ว่าโดยทั่วไปการคำนวณแบบขนานและแบบกระจายนั้นแตกต่างกัน การคำนวณแบบขนานนั้นเกี่ยวข้องกับแอปพลิเคชันที่มีการเชื่อมโยงกันอย่างแน่นหนาและถูกนำมาใช้เพื่อให้บรรลุหนึ่งในเป้าหมายต่อไปนี้
- แก้ปัญหาการประมวลผลแบบเร่งรัดได้เร็วขึ้น
- แก้ไขปัญหาที่ใหญ่กว่าในเวลาเดียวกัน
- แก้ไขปัญหาขนาดเดียวกันโดยมีความแม่นยำสูงกว่าในเวลาเดียวกัน
ในอดีตเป้าหมายแรกคือเหตุผลหลักสำหรับการคำนวณแบบขนาน: เร่งการแก้ปัญหา ในขณะนี้และเมื่อเป็นไปได้ที่นักวิทยาศาสตร์ส่วนใหญ่ใช้การคำนวณแบบขนานเพื่อให้บรรลุทั้งเป้าหมายที่สอง (เช่นพวกเขายินดีที่จะใช้จ่ายจำนวนเดียวกันของเวลา พวกเขาใช้เวลาในการแก้ปัญหาที่ผ่านมาในปัญหาขนานขนาดที่จะแก้ปัญหาในขณะนี้ปัญหา ขนาด ) หรือหนึ่งในสาม (กล่าวคือพวกเขายินดีที่จะใช้จ่ายจำนวนเดียวกันของเวลาพวกเขาใช้เวลาในการแก้ปัญหาที่ผ่านมาในปัญหาขนานขนาดในการแก้ปัญหาที่เกิดขึ้นในขณะนี้ที่มีขนาดx 5 x T x xTx5xTxxแต่ด้วยความแม่นยำที่สูงขึ้นโดยใช้แบบจำลองที่ซับซ้อนยิ่งขึ้นสมการตัวแปรและข้อ จำกัด ที่มากขึ้น) การคำนวณแบบขนานอาจใช้หน่วยความจำที่แชร์การส่งผ่านข้อความหรือทั้งสองอย่าง (เช่นอินทรา - หน่วยความจำที่แชร์กันโดยใช้ OpenMP, การส่งผ่านข้อความระหว่างโหนดโดยใช้ MPI); มันอาจใช้ตัวเร่ง GPU เช่นกัน เนื่องจากแอปพลิเคชันทำงานในซูเปอร์คอมพิวเตอร์แบบขนานหนึ่งเครื่องเรามักไม่คำนึงถึงปัญหาต่าง ๆ เช่นความล้มเหลวพาร์ติชันเครือข่าย ฯลฯ เนื่องจากความน่าจะเป็นของเหตุการณ์เหล่านี้คือเพื่อการปฏิบัติงานใกล้กับศูนย์ อย่างไรก็ตามแอปพลิเคชันแบบขนานขนาดใหญ่เช่นการจำลองการเปลี่ยนแปลงสภาพภูมิอากาศซึ่งอาจทำงานเป็นเวลาหลายเดือนมักเกี่ยวข้องกับความล้มเหลวและใช้กลไกการตรวจสอบ / รีสตาร์ทเพื่อหลีกเลี่ยงการเริ่มการจำลองอีกครั้งตั้งแต่ต้นหากมีปัญหาเกิดขึ้น
การคำนวณแบบกระจายนั้นเกี่ยวข้องกับแอพพลิเคชั่นแบบหลวม ๆ ซึ่งเป้าหมาย (สำหรับการประมวลผลแบบซูเปอร์คอมพิวติ้งแบบกระจาย ) คือการแก้ปัญหาอย่างอื่นที่ใหญ่เกินไปหรือการประมวลผลอาจแบ่งออกเป็นส่วนต่าง ๆ มีหลายรุ่นรวมถึงไคลเอนต์ - เซิร์ฟเวอร์, peer-to-peer ฯลฯ ปัญหาที่เกิดขึ้นในการคำนวณแบบกระจายเช่นการรักษาความปลอดภัยความล้มเหลวเครือข่ายพาร์ทิชัน ฯลฯ จะต้องนำมาพิจารณาในขณะออกแบบเนื่องจากความล้มเหลวในบริบทนี้เป็นกฎและ ไม่ใช่ข้อยกเว้น
ในที่สุดGridและCloud computing นั้นเป็นเซตย่อยของการคำนวณแบบกระจาย กระบวนทัศน์การคำนวณแบบกริดเกิดขึ้นในฐานะเขตข้อมูลใหม่ที่แตกต่างจากการคำนวณแบบกระจายทั่วไปเนื่องจากมุ่งเน้นไปที่การแบ่งปันทรัพยากรขนาดใหญ่และแอปพลิเคชันประสิทธิภาพสูงที่เป็นนวัตกรรมใหม่ ทรัพยากรที่ใช้ร่วมกันมักเป็นของโดเมนการดูแลระบบที่แตกต่างกันหลายแห่ง (เรียกว่าองค์กรเสมือน ) การคำนวณแบบกริดในขณะที่นักวิทยาศาสตร์ใช้งานอย่างหนักในทศวรรษที่ผ่านมาเป็นเรื่องยากสำหรับผู้ใช้ทั่วไป การคำนวณแบบคลาวด์พยายามเชื่อมช่องว่างโดยอนุญาตให้ผู้ใช้ทั่วไปสามารถใช้ประโยชน์จากหลาย ๆ เครื่องได้อย่างง่ายดายซึ่งอยู่ในศูนย์ข้อมูลเดียวกันและไม่กระจายทางภูมิศาสตร์ผ่านการใช้เครื่องเสมือนที่ผู้ใช้งานสามารถเรียกใช้งานได้ เนื่องจากฮาร์ดแวร์โดยเฉพาะอย่างยิ่งการขาดการเชื่อมต่อเครือข่ายที่มีประสิทธิภาพสูง (เช่น Infiniband ฯลฯ ) ตามปกติแล้วคลาวด์ไม่ได้ถูกกำหนดเป้าหมายสำหรับการใช้งานแอพพลิเคชั่น MPI แบบขนาน แอปพลิเคชันแบบกระจายที่ทำงานบนคลาวด์มักจะใช้งานเพื่อใช้ประโยชน์จากแผนที่ / ลดกระบวนทัศน์ โดยวิธีการที่หลายคนคิดว่าแผนที่ / ลดเป็นแบบจำลองการไหลของข้อมูลแบบขนาน