แนวคิดการคำนวณแบบขนาน ไม่ใช่เรื่องใหม่

ว่าไปแล้ว ก็เก่าตั้งแต่ยุคแรก ๆ ของคอมพิวเตอร์

ผมจำได้ว่า เมื่อนานมาแล้ว (สมัยยุคอรุโณทัยของแวดวง IT โน่นแน่ะ) ผมเคยไปห้องสมุด ยืมหนังสือ คู่มือการใช้ DOS  ควบกับ Parallel Programing in ADA มาอ่าน

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

คณิตศาสตร์ยุคโบราณที่เรียก บัญญัติไตรยางค์ ที่คนรุ่นก่อนเรียนกัน ก็กล่าวถึงเรื่องนี้

เช่น คนทั้งสังคม รับรู้กันดีว่า

ขนมหนึ่งชิ้น คนหนึ่งคน กินหมดในหนึ่งวัน

ขนมหนึ่งชิ้น คนสองคน กินหมด ในครึ่งวัน

ซึ่งกรณีศึกษาปัจจุบันที่เข้ากับยุคสมัยหน่อย ก็ต้องเป็น

เมื่อมีอุบัติเหตุ มีไทยมุงหนึ่งคน จะมีการยื่นมือช่วยเหลือหนึ่งคน

เมื่อมีอุบัติเหตุ มีไทยมุงสิบคน จะมีการยื่นมือช่วยเหลือหนึ่งในสิบคน

 

...(อย่าซีเรียสครับ ! ประเด็นนี้ คุณบ่าววีร์ แซวไว้ในคนมากอาสาน้อย คนน้อยอาสามาก? ผมลอกมุขมา)

 

ก่อนถึงยุคควอนตัมคอมพิวเตอร์  ถ้าจะทำให้เครื่องทำงานเร็ว ต้องพึ่งจิ๊กซอว์หลายตัว

 

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

จตุคอร์์  (quad-core ) เป็นตัวอย่างหนึ่ง ที่แนวคิดการคำนวณแบบขนานฝังตัวมาในฮาร์ดแวร์

ถัดไป ก็เป็น 8-core (อัฏฐะคอร์; octa -core) [ขอบคุณ บ่าววีร์ สำหรับความเอื้อเฟื้อข้อมูล ว่ามีวางตลาดแล้ว]

ถัดไปอีก ก็เป็น 16-core (โสฬสคอร์; hexadeca -core) ที่รอจ่อคิว

และ 32-core (dotriaconta-core; เห็นแล้วเคล็ด-คอร์) ที่คงจะตามมา

สงสัยว่า ต่อไป คนแวดวง IT ต้องเรียนเรื่อง prefix ของ IUPAC ด้วยหรือเปล่า เอาไว้เรียกหมายเลขคอร์...

นอกเหนือจากวิธี พหุ-คอร์ ทางเลือกอื่น ๆ ก็พอมี อย่างเช่น แนวคิดเรื่อง reconfigurable computing ซึ่งใช้ฮาร์ดแวร์ที่สามารถปรับแต่ง logic gate เองในระดับผู้ใช้ เช่น Field-programmable Gate Arrays (FPGAs) ซึ่งฮาร์ดแวร์สามารถแปลงกายข้าม platform กันได้ ซึ่งประมาณกันว่า น่าจะเร่งความเร็วได้ตั้งแต่ 10-100 เท่า เพราะสามารถจูนให้เข้ากับ algorithm ที่ใช้ได้ และยังสามารถแปลงกายให้กลายเป็น processor แบบขนานได้ (อย่างน้อยก็ในทางทฤษฎี...ถ้าสั่งเป็น)

 

จิ๊กซอว์ชิ้นถัดมา ต้องมีระบบเครือข่าย ระบบปฎิบัติการ compiler & interpreter ที่รองรับเรื่อง massively parallelism 

ที่ผ่านมา มี เอกะ-คอร์ ทวิ-คอร์ จตุ-คอร์ ยังถือว่าเห็นไม่ชัดเท่าไหร่ อาจมองว่า มีตัวคำนวณหลายตัว เพื่อใช้จัดการฮาร์ดแวร์ให้เร็วทันใจเท่านั้น แต่ตัวคำนวณหลัก ยังเป็นตัวเดียว

สถานการณ์ เป็นดังภาพในบล็อก เทคนิคการทำงานเป็นทีมอย่างแท้จริง

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

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

ถึงตอนนั้น คำถามเร่งด่วนแบบไฟลนก้น คงเป็นว่า เอ๊ะ ใครใช้ระบบขนานคล่องมั่ง ? เพราะไม่งั้น 8-core กับ 4-core จะไม่ต่างกัน เพราะ software ดึงพวกคอร์ตัวหลัง ๆ มาทำงานไม่ได้

เพราะเมื่อก่อน คนทำคล่อง ก็คือคนที่จับเรื่อง distributed network หรือ supercomputer ซึ่งคงไกลตัวคนทั่วไปสักหน่อย แต่ก็มีระดับหนึ่ง

แต่วันไหน ระบบนี้มาตั้งตรงหน้า บนโต๊ะทำงานของเรา คนที่ต้องใช้งานคำนวณมหาศาล คงเหมือนลูกหมาฟันไม่ขึ้น มีของกินอร่อยแต่แข็งโป๊กวางตรงหน้า คงได้แต่ดูตาปริบ ๆ แล้ว 

ระบบพอมีิ แม้จะไม่คุ้นหู และคนทำเป็น ก็มีอยู่ แต่คงมีไม่มาก  คนที่คล่อง คงหายาก 

ตรงนี้แหละครับ ที่ผมมองว่าคอขวดในแวดวง IT ไม่ได้เกิดปัญหาแต่กับไทย แต่ทั้งโลก คือระบบคิดที่เกี่ยวข้องกับเรื่อง parallel programming   โตไม่ทัน parallel hardware

มองให้ดี ๆ นี่เป็นช่องว่างโอกาสการเติบโตของแวดวงวิชาการที่บ่มเพาะ IT ของไทย ที่จะเตรียมรับมือคลื่น massively parallel hardware ที่จะมาในรูปคอมพิวเตอร์สามัญประจำบ้านในอีกไม่กี่ปีนี้

 

จิ๊กซอว์ชิ้นที่สาม คือ algorithm ที่รองรับ parallel  ได้ดี ซึ่งผมมองว่า ส่วนนี้ พอมีคนทำอยู่แล้ว แม้จะโดยไม่ค่อยรู้ตัวก็ตาม (อย่างเช่น ใช้ Genetic algorithm นี่ก็ใช่)


ส่วนที่ขาดตอนนี้คือส่วนที่สองครับ

ใครเตรียมตัวได้ก่อน ก็เท่ากับยึดทำเลยุทธศาสตร์ของวงการได้ อย่างน้อยก็จนกว่าควอนตัวคอมพิวเตอร์เกิดเต็มตัว

คำถามคือ เรากำลังอยู่ที่ไหนในขณะนี้ ?