การประมวลผลแบบขนานและแบบกระจาย
แนะนำใหม่| English | ความหมาย |
|---|---|
| sequential computing/siːˈkwenʃl kəmˈpjuːtɪŋ/ | การคำนวณแบบลำดับ |
| Parallel computing/ˈpærəlel kəmˈpjuːtɪŋ/ | การคำนวณแบบขนาน |
| processors/ˈprəʊsesəz/ | หน่วยประมวลผล |
| Distributed computing/ˈdɪstrɪbjuːtɪd kəmˈpjuːtɪŋ/ | การคำนวณแบบกระจาย |
| speedup/ˈspiːdʌp/ | อัตราเร่ง |
ก้าวทีละก้าว
- โดยปกติคอมพิวเตอร์จะดำเนินการขั้นตอนต่างๆ ไปทีละขั้นตอน
- นี่คือ การคำนวณแบบเรียงลำดับ (sequential computing): แต่ละขั้นตอนต้องเสร็จสิ้นก่อนจึงจะเริ่มต้นขั้นตอนถัดไป
- มันง่ายแต่อาจช้าสำหรับงานขนาดใหญ่
- เพื่อความเร็วขึ้น เราสามารถทำหลายขั้นตอน พร้อมกัน ได้
ในการประมวลผลแบบลำดับ:
Difficulty 1/5 · 100 coins + a small bonus on first completion today
ทีละขั้นตอนตามลำดับ
การคำนวณแบบขนานและการกระจาย
- การคำนวณแบบขนาน (parallel computing) ใช้ โปรเซสเซอร์ (processors) หลายตัวในเครื่องเดียวเพื่อรันส่วนหนึ่งของงาน ในเวลาเดียวกัน
- การคำนวณแบบกระจาย (distributed computing) กระจายงานไปยัง คอมพิวเตอร์แยกต่างหากจำนวนมาก มักอยู่ในสถานที่ต่างกัน เชื่อมต่อกันด้วยเครือข่าย
- ขนาน = โปรเซสเซอร์หลายตัว, เครื่องเดียว; กระจาย = เครื่องหลายเครื่อง
- ทั้งสองมีเป้าหมายเพื่อทำงานขนาดใหญ่ให้เร็วขึ้น
แบบลำดับ, ขนาน หรือ กระจาย?
แบบลำดับรันทีละขั้นตอน; แบบขนานใช้โปรเซสเซอร์หลายตัวในเครื่องเดียวพร้อมกัน; แบบกระจายกระจายงานข้ามคอมพิวเตอร์แยกต่างหากหลายเครื่อง
จับคู่แต่ละคำศัพท์กับความหมาย
Difficulty 2/5 · 140 coins + a small bonus on first completion today
แบบขนานคือเครื่องเดียว; แบบกระจายคือหลายเครื่อง
ความเร็วเพิ่มขึ้นและข้อจำกัด
- ประโยชน์ของการคำนวณแบบขนานวัดได้จาก ความเร็วเพิ่มขึ้น (speedup):
- $\text{speedup} = \dfrac{\text{time using one processor}}{\text{time using several processors}}$.
- แต่ส่วนใดส่วนหนึ่งที่ต้อง รันแบบเรียงลำดับ ไม่สามารถทำให้เร็วขึ้นด้วยการเพิ่มโปรเซสเซอร์
- ดังนั้นส่วนที่เรียงลำดับจะกำหนดขอบเขตล่าง — หรือเพดานสูงสุดของความเร็วเพิ่มขึ้นทั้งหมด
งานหนึ่งใช้เวลา 100 วินาทีบนโปรเซสเซอร์หนึ่ง และ 40 วินาทีบนโปรเซสเซอร์หลายตัว ผลลัพธ์ของการเร่งความเร็วคืออะไร?
Difficulty 2/5 · 140 coins + a small bonus on first completion today
speedup = 100 / 40 = 2.5×
หาก 20 วินาทีของงาน 100 วินาทีต้องรันแบบลำดับ ผลลัพธ์สูงสุดที่เป็นไปได้คืออะไร?
Difficulty 2/5 · 140 coins + a small bonus on first completion today
แม้จะมีโปรเซสเซอร์ไม่จำกัด 20 วินาทีก็ยังคงอยู่: 100 / 20 = 5×
ทำไมการเพิ่มโปรเซสเซอร์จึงไม่สามารถขจัดข้อจำกัดของการเร่งความเร็วได้?
Difficulty 1/5 · 100 coins + a small bonus on first completion today
ส่วนแบบลำดับกำหนดขอบเขตล่างของเวลาทั้งหมด
การประมวลผลแบบกระจายเหมาะสำหรับงานขนาดใหญ่เกินกว่าเครื่องเดียวจะจัดการได้ เช่น การทำดัชนีเว็บทั้งชุด
Difficulty 1/5 · 100 coins + a small bonus on first completion today
งานถูกแบ่งปันตามธรรมชาติข้ามคอมพิวเตอร์นับพันเครื่อง
เมื่อการกระจายโดดเด่น
- โซลูชันแบบกระจายโดดเด่นในงาน ขนาดมหาศาล — ข้อมูลชุดใหญ่ หรือระบบค้นหา索引ทั้งอินเทอร์เน็ต
- งานมากเกินกว่าเครื่องเดียวจะจัดการได้ จึงถูกแบ่งปันตามธรรมชาติ Across thousands of machines
ความเร็วเพิ่มขึ้นที่มีเพดาน งานที่ใช้เวลา 100 วินาที มี 80 วินาทีที่เป็นแบบขนานและ 20 วินาทีที่เป็นแบบเรียงลำดับ บนโปรเซสเซอร์ 4 ตัว ส่วนแบบขนานคือ $80 / 4 = 20$ วินาที บวกกับ 20 วินาทีแบบเรียงลำดับ = 40 วินาที ความเร็วเพิ่มขึ้น $= 100 / 40 = 2.5\times$ แม้จะใช้โปรเซสเซอร์ หนึ่งล้าน ตัว ส่วนแบบเรียงลำดับ 20 วินาทีก็ยังคงอยู่ ดังนั้นความเร็วเพิ่มขึ้นจึงไม่สามารถชนะ $100 / 20 = 5$ ได้
การคำนวณแบบเรียงลำดับ รันขั้นตอนทีละขั้นตอน การคำนวณแบบขนาน ใช้ โปรเซสเซอร์ หลายตัวในเครื่องเดียวพร้อมกัน; การคำนวณแบบกระจาย กระจายงาน across many machines. ผลลัพธ์จากการคำนวณแบบขนานวัดเป็น ความเร็วเพิ่มขึ้น (speedup) (เวลาใช้โปรเซสเซอร์หนึ่งตัว ÷ เวลาใช้โปรเซสเซอร์หลายตัว) แต่ส่วนแบบเรียงลำดับจะจำกัดมันไว้ (ในที่นี้ คือ 5 เท่า)