กลับไปหน้าบทความ

อ่าน 2 นาที

ไม่มีชื่อบทความ

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

อัลกอริทึมแบบขนาน

ในวิทยาการคอมพิวเตอร์อัลกอริทึมแบบขนานซึ่งแตกต่างจากอัลกอริทึมแบบอนุกรมแบบ ดั้งเดิม คืออัลกอริทึมที่สามารถดำเนินการหลายอย่างได้ในเวลาที่กำหนด ธรรมเนียมปฏิบัติของวิทยาการคอมพิวเตอร์คือการอธิบายอัลกอริทึมแบบอนุกรมใน แบบจำลอง เครื่องจักรนามธรรมซึ่งมักจะเป็นเครื่องจักรแบบเข้าถึงแบบสุ่ม (random-access machine ) ในทำนองเดียวกัน นักวิจัยวิทยาการคอมพิวเตอร์หลายคนได้ใช้เครื่องจักรแบบเข้าถึงแบบสุ่มแบบขนาน (Parallel Random-Access Machine: PRAM) เป็นเครื่องจักรนามธรรมแบบขนาน (หน่วยความจำร่วม) [ 1 ] [ 2 ]

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

ความสามารถในการขนาน

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

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

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

ในหลายกรณี การพัฒนาอัลกอริทึมแบบขนานที่มีประสิทธิภาพเพื่อแก้ปัญหางานหนึ่งๆ จำเป็นต้องพัฒนาแนวคิดและวิธีการใหม่ๆ ซึ่งไม่จำเป็นในการออกแบบอัลกอริทึมแบบลำดับเพื่อแก้ปัญหาเดียวกัน ตัวอย่างของกรณีดังกล่าว ได้แก่ ปัญหาที่สำคัญในทางปฏิบัติ เช่น การค้นหาองค์ประกอบเป้าหมายในโครงสร้างข้อมูลและการประเมินนิพจน์พีชคณิต[ 4 ]

แรงจูงใจ

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

ปัญหา

การสื่อสาร

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

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

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

หากภาระการสื่อสารของโปรเซสเซอร์เพิ่มเติมมีมากกว่าประโยชน์ของการเพิ่มโปรเซสเซอร์อีกตัว จะทำให้เกิดการทำงานแบบขนานช้าลง

การปรับสมดุลภาระงาน

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

อัลกอริทึมแบบกระจาย

อัลกอริทึมแบบกระจาย (Distributed Algorithms ) เป็น ประเภทย่อยของอัลกอริทึมแบบขนาน ซึ่งออกแบบมาเพื่อใช้งานใน สภาพแวดล้อม การประมวลผลแบบคลัสเตอร์และการประมวลผลแบบกระจาย โดยต้องจัดการกับข้อกังวลเพิ่มเติมที่อยู่นอกเหนือขอบเขตของอัลกอริทึมแบบขนาน "แบบดั้งเดิม"

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

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

อัลกอริทึมแบบกระจายมีแอปพลิเคชันเชิงปฏิบัติมากมายในฐานข้อมูลแบบกระจาย ระบบทนต่อความผิดพลาด และแอปพลิเคชันเครือข่ายขนาดใหญ่

ดูเพิ่มเติม

  • การออกแบบและสร้างโปรแกรมคู่ขนานห้องปฏิบัติการแห่งชาติอาร์กอน สหรัฐอเมริกา

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ ไม่มีชื่อบทความ

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

ความสามารถในการขนาน

อัลกอริทึมแต่ละตัวมีความแตกต่างกันอย่างมากในด้านความสามารถในการประมวลผลแบบขนาน โดยมีตั้งแต่ประมวลผลแบบขนานได้ง่ายไปจนถึงไม่สามารถประมวลผลแบบขนานได้เลย นอกจากนี้ ปัญหาหนึ่งๆ อาจรองรับอัลกอริทึมที่แตกต่างกัน...

แรงจูงใจ

อัลกอริทึมแบบขนานบนอุปกรณ์แต่ละเครื่องเริ่มแพร่หลายมากขึ้นตั้งแต่ต้นทศวรรษ 2000 เนื่องจาก ระบบ มัลติโปรเซสซิ่ง มีการพัฒนาอย่างมาก และ โปรเซสเซอร์ แบบมัลติคอร์ ก็ได้รับความนิยมเพิ่มขึ้น จนกระทั่งถึงปลายปี 2004...

การสื่อสาร

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