Parallelism หมายถึงภาวะพร้อมกัน แต่ไม่ใช่วิธีอื่น ๆ ใช่ไหม?


15

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

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

ในขณะที่ถ้าฉันเพียงแค่ใช้พูด Java และจัดการกับเหตุการณ์ UI และ repaints บน Event Dispatch Thread บวกกับการรันเธรดเดียวที่ฉันสร้างขึ้นเองฉันจะมีโปรแกรมที่ทำงานพร้อมกัน (EDT + GC เธรด + เธรดหลักของฉัน ฯลฯ ) แต่ไม่ขนาน

ฉันต้องการที่จะรู้ว่าฉันได้รับสิทธินี้และหากการขนาน (ในระบบ "เดี่ยว แต่หลายแกน") หมายถึงการทำงานพร้อมกันหรือไม่?

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


คำตอบ:


13

ตามที่ Wikipedia :

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

นั่นคือความเท่าเทียมมักหมายถึงการเกิดพร้อมกัน

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

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

สาระสำคัญของการเกิดพร้อมกันคือจำนวนของเธรด (หรือกระบวนการหรือคอมพิวเตอร์) กำลังทำอะไรบางอย่างพร้อมกันอาจเป็นไปได้ (แต่ไม่จำเป็น) ปฏิสัมพันธ์ในบางวิธี Wikipedia อีกครั้ง :

การทำงานพร้อมกันเป็นคุณสมบัติของระบบที่มีการคำนวณหลายอย่างพร้อมกันและอาจมีการโต้ตอบซึ่งกันและกัน


4
โพสต์ยอดเยี่ยม Parallelism เป็นเซตย่อยของ Concurrency

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

@KaiSellgren: โปรดอ้างอิงบางแหล่งที่มาเพื่อสนับสนุนคำสั่งของคุณ
Joonas Pulakka

wikiquote แรกนั้นผิดไปหมด โชคดีที่มันได้รับการแก้ไขเมื่อไม่นานมานี้และตอนนี้มันถูกต้องแล้วว่าการขนานกันนั้นไม่ได้เกิดขึ้นพร้อมกัน
Kai Sellgren

แท้จริงแล้วนั่นคือสิ่งที่รายการ wiki กล่าวในปัจจุบัน ( เป็นไปได้ที่จะมีความเท่าเทียมโดยไม่มีการเกิดขึ้นพร้อมกัน (เช่นการขนานในระดับบิต) ) แต่ฉันไม่เข้าใจประเด็นนั้นเลย ไม่ใช่การขนานในระดับบิตที่เกิดขึ้นพร้อมกันมากที่สุดเท่าที่จะเป็นไปได้ - การดำเนินการที่มากขึ้นโดยใช้คำสั่งน้อยกว่านั้นการดำเนินการบางอย่างนั้นไม่ได้ดำเนินการภายในคำสั่งเดียวกันคือพร้อมกันหรือไม่
Joonas Pulakka

3

รหัสสามารถพร้อมกัน แต่ไม่ขนาน

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


0

ความเท่าเทียมหมายถึงการทำงานหลายอย่างพร้อมกัน การทำงานพร้อมกันคือความสามารถของเคอร์เนลในการทำงานหลายอย่างโดยการสลับระหว่างกระบวนการต่างๆ

เพื่อให้เกิดความขนานมันเป็นสิ่งสำคัญที่ระบบควรมีหลายแกนเท่านั้น และมีจำนวนมากในประสิทธิภาพและจำนวนมากที่เกิดขึ้นหากพยายามขนานในเครื่องแกนเดียว

ตัวอย่างเช่นระบบก่อนหน้านี้มีเพียงแกนเดียวและตัวกำหนดเวลา CPU จะให้ภาพลวงตาของความขนานโดยการสลับระหว่างกระบวนการที่อนุญาตให้แต่ละกระบวนการก้าวหน้า

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