ลองคิดถึงตอนที่คุณต้องเก็บของเล่นเป็นกองโต ถ้าเราทำคนเดียวอาจจะใช้เวลานาน แต่ถ้าเรียกเพื่อนๆมาช่วยกัน เราก็จะเก็บของเล่นเสร็จสิ้นได้เร็วขึ้นเยอะเลยใช่ไหม? High-Performance Computing (HPC) ก็เหมือนกับการที่เราเรียกเพื่อนๆมาช่วยเก็บของเล่นนั่นแหละ แต่สำหรับเครื่องคอมพิวเตอร์แล้ว การที่จะทำให้ทุกอย่างเร็วขึ้น พวกเขาก็จะเรียกเพื่อนมาในรูปแบบของ 'หน่วยประมวลผล' (processors) เพื่อทำงานหนักๆและแบ่งงานกันทำ
เวลาเราทำงานเป็นทีม เราต้องมีการวางแผน ใครจะทำอะไร ให้เข้าใจถูกต้องและชัดเจน เช่นเดียวกับ HPC, การโปรแกรมที่มีประสิทธิภาพสูงทำให้คอมพิวเตอร์รู้ว่าจะแบ่งหน้าที่การทำงานอย่างไร เพื่อให้ได้ผลลัพธ์ที่รวดเร็วที่สุด
ลองนึกถึงเวลาที่เราเล่นเกมจิ๊กซอว์ จะทำอย่างไรให้เสร็จเร็วที่สุด? ถ้าเรามีเพื่อนๆมาช่วยหาชิ้นที่เข้ากัน และวางไปที่ละชิ้น งานนี้ก็จะเสร็จเร็วมากๆ
เรามาลองดูโค้ดง่ายๆในภาษา Python ที่ทำแบบนั้นกัน
import concurrent.futures
def find_matching_piece(jigsaw_pieces, piece_to_match):
# ทำฟังก์ชันหาชิ้นที่ตรงกัน
for piece in jigsaw_pieces:
if piece.fits_with(piece_to_match):
return piece
# สมมติว่าเรามีชิ้นจิ๊กซอว์ 1000 ชิ้น
jigsaw_pieces = [...]
matching_pieces = []
# ใช้ concurrent.futures ในการหาชิ้นที่ตรงกัน
with concurrent.futures.ThreadPoolExecutor() as executor:
# เรียกใช้งานฟังก์ชันหาชิ้นที่ตรงกันแบบพร้อมๆกันหลายๆงาน
futures = [executor.submit(find_matching_piece, jigsaw_pieces, piece) for piece in jigsaw_pieces]
for future in concurrent.futures.as_completed(futures):
matching_pieces.append(future.result())
# ตอนนี้เราก็ได้ชิ้นที่ตรงกันมาแล้ว!
โค้ดนี้แสดงให้เห็นว่าการทำงานหลายอย่างพร้อมกันด้วยเทคนิค HPC เป็นเหมือนการที่มีเพื่อนๆช่วยกันหาชิ้นจิ๊กซอว์ ทำให้งานเสร็จเร็วขึ้น
ในทางเขียนโปรแกรมนั้น HPC ช่วยให้เราสามารถทำภารกิจที่ใหญ่โตได้แบบไม่เหนื่อยล้า และใน EPT เรามีหลักสูตรที่จะช่วยให้คุณเรียนรู้การใช้วิธีการเหล่านี้ไปใช้ในโลกจริง ไม่ว่าคุณจะเขียนโปรแกรมเพื่องานวิจัย หรือพัฒนาผลิตภัณฑ์ใหม่ๆ การเรียนรู้ทักษะเหล่านี้จะช่วยเปิดประตูไปสู่โอกาสใหม่ๆในอาชีพของคุณ!
หมายเหตุ: ข้อมูลในบทความนี้อาจจะผิด โปรดตรวจสอบความถูกต้องของบทความอีกครั้งหนึ่ง บทความนี้ไม่สามารถนำไปใช้อ้างอิงใด ๆ ได้ ทาง EPT ไม่ขอยืนยันความถูกต้อง และไม่ขอรับผิดชอบต่อความเสียหายใดที่เกิดจากบทความชุดนี้ทั้งทางทรัพย์สิน ร่างกาย หรือจิตใจของผู้อ่านและผู้เกี่ยวข้อง
หากเจอข้อผิดพลาด หรือต้องการพูดคุย ติดต่อได้ที่ https://m.me/expert.Programming.Tutor/
หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor
085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM