เราปรับตัวรองรับการคำนวณแบบขนานได้แค่ไหน ?


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

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

ผมจำได้ว่า เมื่อนานมาแล้ว (สมัยยุคอรุโณทัยของแวดวง 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 นี่ก็ใช่)


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

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

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

หมายเลขบันทึก: 115423เขียนเมื่อ 29 กรกฎาคม 2007 01:35 น. ()แก้ไขเมื่อ 16 มิถุนายน 2012 13:30 น. ()สัญญาอนุญาต: จำนวนที่อ่านจำนวนที่อ่าน:


ความเห็น (9)

8-core ของ Intel มาแล้วนะครับ Macpro[1] ใช้แล้ว. อีกตัวนึงคือ Web server ของ Sun ใช้ UltraSparc T1 ก็ 8-core. ผมไม่แน่ว่า Cell นับเป็น 8-core ได้หรือเปล่า. แต่ก็คงใกล้เคียง เพราะมี SPE 8 ชุด.แต่ถ้านับ PPE + SPE อาจจะเรียกได้ว่า Cell มี 9 Core?

เราต้องมาคิดเรื่อง parallel เยอะขึ้นส่วนหนึ่งอาจจะเพราะเราเร่ง clock ของ CPU ไปมากกว่านี้ไม่ไหวแล้ว? ข่าวว่า Power6 จะออก 4.7 GHz. ถ้าจำไม่ผิด. 

ผมสงสัยอยู่ว่าขาดจริงหรือเปล่า? มีบริษัทไหนในประเทศไทยต้องการจ้างพนักงานไปทำ parallel programming บ้าง (หมายถึงว่าใช้หลาย core นะครับ. ไม่ใช่คนเดียวทำหลาย project พร้อมกัน :-P)

[1] http://www.apple.com/macpro/ 

[2] http://en.wikipedia.org/wiki/UltraSPARC_T1

[3] http://en.wikipedia.org/wiki/Cell_microprocessor

 

ขอบคุณ  
P

वीर

  • (สงสัยนิดหน่อยว่าคุณบ่าววีร์เปลี่ยนชื่อ หรือว่า font แผลงฤทธิ์ ?)

ประเด็นที่คุณบ่าววีร์ยกมา ผมเห็นด้วยในส่วน มีบริษัทไหนในประเทศไทยต้องการจ้างพนักงานไปทำ parallel programming บ้าง แต่ประเด็นเรื่องขาดจริงหรือเปล่า ก็คงขึ้นกับว่า ใครใช้

เพราะถ้าคิดว่า เอาไว้ใช้เป็นพิมพ์ดีด กดเครื่องคิดเลข ท่องเน็ต ถ้าเป็นตอนนี้ คงไม่ขาด และอีกสิบปีข้างหน้า ก็คงไม่ขาด

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

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

ผมยกตัวอย่างสักเรื่อง เอาที่ใกล้ตัว เป็นโจทย์ที่ผมเองก็รอมานาน เพราะเครื่องช้าไป

กรณีของการเก็บฐานข้อมูลที่มีชื่อคนอยู่ เป็นหลักพันคนขึ้นไป ปัญหาจุกจิกอย่างหนึ่ง คือการตรวจสอบความซ้ำซ้อนของตัวตน ที่มีอยู่ก่อนในฐาน เพราะพิมพ์ต่างกันหน่อยนึงก็กลายเป็นอื่นแล้ว แบบนี้ต้องใช้ fuzzy check ว่ามีที่ record คล้ายกันหรือเปล่า ซึ่งตอนนี้ ต่อให้ทำได้ แต่คงไม่มีใครอยากทำเท่าไหร่ เพราะเสียเวลารอคำนวณนานนนนน..มาก โดยเฉพาะถ้าต้องจัดการรวดเดียวทั้งฐานข้อมูล แต่เมื่อไหร่มันเร็วพอ คนที่ตอนนี้ไม่อยากทำ ก็อาจทำได้บ่อย ๆ ได้ทุกวัน

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

 

P
  • data mining ตอนนี้ก็ใช้ tool กันเป็นส่วนมาก ไม่ได้เขียนเอง? 
  • check ชื่อคนซ้ำในฐานข้อมูล แปลงไปเป็น soundex หรืออะไรคล้ายๆ soundex ก่อน แล้วทำ index ไปด้วย ตอน check ก็น่าจะเร็วขึ้น?
  • ที่โรงเรียนต้องการ parallel programming มาก ต้องการเครื่องหลายๆ core ด้วย เดิมใช้แบบ 1 เครื่อง 2 cpu มา 5-6 ปีกแล้ว. แต่ก็ดีว่าได้ cluster และ grid ของ Thaigrid มาช่วยได้บ้าง. แต่ที่โรงเรียนเองก็ขาดคนเหมือนกัน. 
  • ตลาดนอกโรงเรียนผมก็ได้แต่เดาๆว่าจะออกมาท่าไหนอะครับ. ยังไม่เห็นภาพเท่าไหร่ว่าพอออกมาจากโรงเรียนแล้วจะได้่ใช้ท่า parallel programming ตอนไหน.
  • ชื่อผมจริงๆก็ชื่อเดิมหละครับ แต่ใช้อักษรเทวนาครี.
ผมจิตนาการไปอีกอย่างหนึ่งอาจจะเป็น tool ที่ทำงานแบบ parallel ได้ แล้วคนใช้ก็ต้องมีความรู้เรื่อง parallel บ้าง?
P

वीर

  • ผมแค่ลองยกตัวอย่าง จริง ๆ ก็นึกไม่ออกครับ ว่าภาพรวมมีใครใช้ทำอะไร
  • นึกออกกรณีของตัวเอง มีโครงการ simulation งานวิจัยเล็ก ๆ หลายเรื่อง ที่ตอนนี้ขี้เกียจทำ เพราะเครื่องที่มีอยู่ช้าไป และไม่ได้เร่งด่วนจนถึงขั้นต้องไปขอทุนใคร เพราะขี้เกียจขอ ก็รอ ๆ ให้วันไหนเครื่องเร็วสะใจค่อยหา upgrade เอา ค่อย ๆ ทำไป ก็ยังเล็ง ๆ อยู่ว่าจะเริ่มจากตรงไหนดีถ้าระบบขนานแบบนั้นมาถึง 
  • อีกอย่าง ผมติดนิสัยเขียนโปรแกรมคำนวณใช้เองเฉพาะกิจ  และตัวเองคงไม่ใช่ตัวอ้างอิงที่ดีเท่าไหร่ เพราะขี้เกียจซอกแซกหาเครื่องมือช่วย ปรกติก็ใช้โปรแกรมที่ลง ๆ ไว้ในเครื่องทั่วไปนั่นแหละครับ ทำงานเอา
  • มองในมุมผู้ใช้ จะ serial หรือขนาน ไม่ใช่เรื่องใหญ่เท่า "เร็ว" พอ ในราคาสมเหตุสมผล สำหรับเขาไหม ?
  • คงมีผู้ใช้ส่วนหนึ่ง หันมาเล่นตรงนี้ แต่คงไม่ใช่กลุ่มหลัก
  • กลุ่มหลักคงเป็นผู้ผลิต softwareนั่นแหละครับ ว่าใครจะเห็นว่านี่เป็นช่องว่างการตลาด ที่น่าถมให้เต็ม
  • อีกไม่กี่ปีข้างหน้า ผู้ผลิตซอฟท์แวร์ที่มองว่านี่ไม่ใช่เรื่องน่าสนใจ ก็เท่ากับพอใจที่จะใช้ความเร็ว ที่นิ่งใกล้เคียง 4-core ที่แคะออกมาได้จากเครื่อง 16/32/64/128...-core เพราะเทคโนโลยีคงวิวัฒนาการ ไปทางเพิ่มจำนวนคอร์มากกว่าลดขนาดคอร์
  • ซึ่งก็คงไม่มีปัญหา ในการสร้างซอฟท์แวร์ที่ต้องการ สมรรถนะระดับใกล้เคียง dumb-terminal อย่างเช่นในกลุ่ม ผู้ที่ใช้คอมพิวเตอร์เป็น เครื่องพิมพ์ดีด เครื่องคิดเลข เครื่องท่องเน็ต
  • เพียงแต่ผมมองว่่า นี่เป็นโอกาสเปิดกว้างทางการตลาด ที่ประเทศไหนขยับตัวเร็ว ก็น่าจะเข้าไปจับจองที่ได้ก่อน ซึ่งจะทำให้รุกออกไปตลาดต่างประเทศได้
เรื่อง simulation กับ parallel computing ชัดเจนทีเดียวครับ. รุกตลาดต่างประเทศก็น่าสนใจดีครับ. แต่ผมก็รู้เรื่องอุตสาหกรรมซอฟต์แวร์น้อยเหลือเกิน.

สำหรับ simulation แล้ว Cell ใน PlayStation3 หรือว่า GPU (เช่น Nvidia, ATI, Intel GMA) ผมคิดว่าน่าสนใจดีครับ เหมือนกับว่ามีจำนวณ core เยอะอยู่แล้ว แต่ว่าแต่ละ core ทำงานไม่เหมือนกัน. ถ้านับเฉพาะการคำนวณเลขทศนิยมแล้ว GPU และ Cell เร็วกว่า Intel Core อยู่มากเหมือนกัน. เครื่อง Playstation ก็ไม่แพงมากด้วย. 
  • ที่คุณบ่าวว่ามา ผมเองก็ไม่กระดิก เพราะไม่ได้ตามเรื่องฮาร์ดแวร์เลย จะตามเฉพาะเวลาคิดจะซื้อเครื่องใหม่ของตัวเอง ซึ่งก็ไม่บ่อย เพราะเครื่องที่มี ก็ช่างทนมือเสียนี่กระไร
  • เพียงแต่มองภาพใหญ่ แล้วรู้สึกว่า ช่องว่างทางการตลาดตรงนี้ ชวนให้น้ำลายหกมาก :p - - - - 
ผมก็อยากเล่นเหมือนกันครับ.
  • ผมจำแนกว่าเรื่องนี้ เป็นเมนูอาหารประเภทหนึ่ง
  • คือเห็นแล้วน่ากิน :p - - - - 
  • ก็เลยชี้ชวนคนอื่นให้มาดู เพื่อให้เกิดอาการเดียวกัน
  • :p - - - - 
  • :p - - - - 
  • :p - - - - 
  • :p - - - - 
พบปัญหาการใช้งานกรุณาแจ้ง LINE ID @gotoknow
ClassStart
ระบบจัดการการเรียนการสอนผ่านอินเทอร์เน็ต
ทั้งเว็บทั้งแอปใช้งานฟรี
ClassStart Books
โครงการหนังสือจากคลาสสตาร์ท