Tags:
Node Thumbnail

เดวิด เคิร์ค (David Kirk) หัวหน้านักวิทยาศาสตร์ของ NVIDIA Corporation บริษัทผู้ผลิตหน่วยประมวลผลกราฟฟิกส์รายใหญ่ได้กล่าวว่า "การประมวลผลแบบขนานกำลังมีบทบาทสำคัญยิ่งในยุคนี้" โดยโปรเซสเซอร์ประเภท GPU และ multi-core เป็นเทคโนโลยีที่ต้องการการพัฒนาโปรแกรมให้สามารถประมวลผลแบบขนาน แม้ว่าเราจะสามารถเป็นเจ้าของคอมพิวเตอร์แบบ multi-core ได้แล้วก็ตามที แต่โปรแกรมหลายตัวที่ถูกพัฒนาขึ้นมายังไม่สามารถใช้สมรรถนะจาก multi-core ได้เต็มที่เนื่องจากโปรแกรมยังขาดความสามารถในการทำงานแบบขนานนั่นเอง

เคิร์คได้เล่าว่าหากเรามองย้อนไปเมื่อ 20 ถึง 30 ปีก่อน นักพัฒนาซอฟต์แวร์ไม่มีความจำเป็นต้องศึกษาวิธีการพัฒนาโปรแกรมแบบขนานเพราะในสมัยนั้นเราใช้ความสามารถของความเร็วสัญญาณนาฬิกาของโปรเซสเซอร์ที่สูงขึ้นเรื่อยๆ แต่ปัจจุบันนี้ ผู้ผลิตโปรเซสเซอร์ต่างมุ่งเน้นการออกแบบโปรเซสเซอร์multi-core ซึ่งการประมวลผลแบบขนานกลายเป็นสมมติฐานเบื้องต้นของการออกแบบซอฟต์แวร์ไปด้วย เคิร์กจึงสรุปว่า ถึงเวลาแล้วที่เราจะต้องให้การศึกษาแก่นักพัฒนาโปรแกรมให้เข้าใจหลักการพัฒนาโปรแกรมเพื่อการประมวลผลแบบขนานได้

ที่มา - Nikkei Electronics Asia รายละเอียดของข่าวยาวและก็น่าสนใจมาก

Get latest news from Blognone

Comments

By: HudchewMan
ContributorAndroidWindowsIn Love
on 23 August 2008 - 18:51 #62188
HudchewMan's picture

ถึงยุคที่การประมวลผลแบบขนานเป็น "ส่ิง" จำเป็น
ถึงยุคที่การประมวลผลแบบขนานเป็น "สิ่ง" จำเป็น

ความสามารถของความเร็ว "สัญญา" นาฬิกา
ความสามารถของความเร็ว "สัญญาณ" นาฬิกา

:)

เว็บพจนานุกรม แปลภาษาจีน-ไทย ไทย-จีน
http://www.zhongtai.org


~ HudchewMan's Station & @HudchewMan~

By: javaboom
WriteriPhone
on 23 August 2008 - 20:40 #62196 Reply to:62188
javaboom's picture

ขอบคุณครับ รีบพิมพ์ไปหน่อย

Sivadon Chaisiri (JavaBoom) http://javaboom.wordpress.com


My Blog

By: bow_der_kleine
WriterAndroidUbuntu
on 23 August 2008 - 18:57 #62190
bow_der_kleine's picture

ช่วงนี้ผมกำลังศึกษาเรื่องนี้อยู่พอดีครับ หากให้ผมประเมิน ผมคิดว่าตอนนี้ทั้ง GPU และ multi-cores ยังไม่พร้อมทั้งคู้ครับ คงต้องรอไปสักพักก่อน

เท่าที่ทดสอบ GPU มีปัญหาสามอย่างคือ

1 การส่งข้อมูลไปมาระหว่าง CPU และ GPU บางครั้งการส่งข้อมูลใช้เวลาเยอะกว่าการะประมวลผลด้วยซ้ำ

2 คำนวนแบบ recursive ไม่ได้ เช่น y[n] =x[n]+y[n-1]

3 ตอนนี้มีเพียง CUDA เท่านั้นที่ถูกใช้ในการคำนวนแบบ GPU แต่ CUDA มันมีปัญหากับตัวแปรที่เป็น double precision พอสมควร

ซึ่งปัญหาที่ว่ามาไม่ใช่ปัญหาใหญ่ในงานพวก image processing แต่งานอื่น ๆ อย่างน้อยก็งานที่ผมทำอยู่ ปัญหาที่ว่ามา ทำให้การใช้ GPU ไม่เร็วอย่างที่คิด

ส่วน multi-cores นั้น เน้นการทำงานที่เป็น multi-processing หรือ multi-threading มากกว่า มันไม่ได้คำนวนแบบ vector แบบ GPU

BioLawCom.De

By: javaboom
WriteriPhone
on 23 August 2008 - 20:40 #62197 Reply to:62190
javaboom's picture

เห็นด้วยครับ

Sivadon Chaisiri (JavaBoom)
http://javaboom.wordpress.com


My Blog

By: shikima
Windows PhoneAndroidUbuntu
on 23 August 2008 - 19:14 #62193

ผมว่ายังไง Compiler ต้องฉลาดพอด้วยอ่ะ

P1 : a=1
P2 : a+c
P3 : c=1

ยังไง P3 ก็ต้องรอ P2 เสร็จล่ะครับ

CMDEVHUB

เขียนเอามันส์ ลองเข้าไปดูความมันส์ได้ครับ

By: javaboom
WriteriPhone
on 23 August 2008 - 20:41 #62199 Reply to:62193
javaboom's picture

ครับ อีกวิธีหนึ่งของการประมวลผลแบบขนานคือพึ่ง compiler ที่ฉลาดครับ เช่นยัดเยียดให้เกิดการประมวลผลแบบขนานตั้งแต่ระดับคำสั่งหรือ Instruction Level Parallelism (ILP) สำหรับระดับ circuit หรือ processor เองก็ทำได้อย่างที่คุณ bow_der_kleine อ้างถึง vector processing รวมไปถึง SIMD

Sivadon Chaisiri (JavaBoom)
http://javaboom.wordpress.com


My Blog

By: tekkasit
ContributorAndroidWindowsIn Love
on 23 August 2008 - 19:47 #62200
tekkasit's picture

บางที ข้อจำกัดอยู่ที่วิธีการคิดของมนุษย์ทั่วๆไป
ผมว่าคนเราคิดแบบเชิงเส้น จึงไม่น่าแปลกใจที่ภาษาโปรแกรมมิ่ง จะได้ออกมาอย่างนั้น

อย่าลืมนะครับ ถ้ามันยากเกินไป ถึงมนุษย์จะเขียนขึ้นมาได้ แต่มนุษย์เองก็จะสามารถไม่แม้แต่จะดีบักมัน

By: javaboom
WriteriPhone
on 23 August 2008 - 20:41 #62204 Reply to:62200
javaboom's picture

ใช่ครับ การดีบั๊ก parallel app มันยากมากๆ ผมเลยอยากทราบว่า Intel Parallel Studio ในส่วนของ Parallel Inspector มันทำได้เยี่ยมแค่ไหน มองโลกแง่ดีผมว่ามันต้องมีจุดเริ่มต้นของยุคสมัยบ้างแหละครับ อย่างน้อยที่สุดก็เริ่มจาก data parallel หรือ embarassingly parallel ก็ยังดีครับ แฮๆๆ :)

Sivadon Chaisiri (JavaBoom)
http://javaboom.wordpress.com


My Blog

By: giver
iPhone
on 23 August 2008 - 20:39 #62205 Reply to:62200

+1 กับความเห็นนี้ครับ

By: rerngrit
Android
on 24 August 2008 - 00:36 #62228

ผมจำได้สมัยเรียนที่ภาคพิเศษที่ ม.บูรพา ช่วงปี 44-45
อ.ภุชงค์ไปบรรยาย แล้วก็มีประโยคเด็ดว่า "dubuging pararell program is hell"
ยังฮาไม่เลิก ถ้าอ่านเจอ กราบสวัสดีด้วยครับ :)

Rerng®IT

By: runnary
iPhoneWindows PhoneAndroidBlackberry
on 24 August 2008 - 03:07 #62251
runnary's picture

ขั้นเทพคุยกานผมไม่รู้เรื่องอะ ขออ่านผ่านตาแล้วกันครับ

By: invisibleMind on 25 August 2008 - 09:35 #62356

การประมวลผลแบบขนาน มันน่าที่จะเป็นหน้าที่ของ OS. หน้าที่ของโปรแกรมเมอร์ ควรจะมีหน้าที่เพียงออกแบบ และกำหนด logic การทำงานแค่นั้นนะครับ

By: javaboom
WriteriPhone
on 25 August 2008 - 11:00 #62366 Reply to:62356
javaboom's picture

เห็นด้วยครับว่า ถ้า OS ทำให้ได้ก็คงเป็นเรื่องดีมากๆ ถือว่าเป็นงานวิจัยที่ยากมากๆในฟิลด์ HPC เลยแหละครับที่จะทำให้ parallelism ถูกซ่อนไปจากโปรแกรมเมอร์ให้มากที่สุดหรือการแปลงโปรแกรมแบบ sequential ให้เป็น parallel โดยอัตโนมัติ มันเป็นศาสตร์ AI แฝงมาด้วยน่ะครับ เพราะ OS จะรู้ได้อย่างไรว่าโปรแกรม single thread ที่กำลังจะรันต้องถูกแบ่งเป็นกี่ thread และแต่ละ thread จะพูดคุยกันอย่างไร

ตอนนี้ทำได้แค่ระดับ ILP - VLWI แต่ก็พึ่งพา Processor และ Compiler เป็นหลักครับ

จะเห็นได้ว่า Intel พยายามส่งเสริมให้โปรแกรมเมอร์หันมาให้ความสำคัญกับการเขียนโปแกรมแบบแบ่ง thread หรือ concurrency มากขึ้น อย่างเว็บ go-parallel.com

จากไอเดียของคุณเป็นเรื่องที่ดีมากๆ มีงานวิจัยบางงานใช้หลักการ Workflow เพื่อให้โปรแกรมเมอร์หรือ SA กำหนด logic ของโปรแกรมหรือแม้แต่ใช้ UML เข้ามาออกแบบร่วม และจากนั้นก็ให้ compiler แปลงโค้ดพร้อมกับ workflow ให้เป็นโปรแกรมแบบขนานครับ

Sivadon Chaisiri (JavaBoom)
http://javaboom.wordpress.com


My Blog

By: lew
FounderJusci's WriterMEconomicsAndroid
on 25 August 2008 - 11:23 #62369 Reply to:62366
lew's picture

มีหลายๆ อย่างที่ต้านการเปลี่ยนแปลงจากฝั่งผู้ใช้เหมือนกันนะครับ

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

LewCPE


lewcpe.com, @wasonliw

By: javaboom
WriteriPhone
on 25 August 2008 - 13:18 #62375 Reply to:62369
javaboom's picture

เห็นด้วยอย่างยิ่งครับ มันเป็น paradigm shift ทำให้คนยากจะเปลี่ยนใจครับ พอๆกับสะใภ้ใหม่จำใจต้องอยู่กับแม่ย่า ดังนั้น นักพัฒนา/อาจารย์/นักวิจัยจึงต้องทำงานหนักครับ มันจะมี 3 สายก็คือ 1. การให้การศึกษาให้คนเข้าใจวิธีเขียนโปรแกรมแบบขนาน (ยากในเชิงปฎิบัติ) 2. พัฒนาเฟรมเวิร์คที่สนับสนุนการเขียนโปรแกรมแบบขนานให้ง่าย (ลดความยากลง แต่ยังต้องเข้าใจหลักการบางอย่างอยู่) ท้ายที่สุดต้องพึ่งข้อ 1 อยู่ดี 3. พัฒนาซอฟต์แวร์/ฮาร์ดแวร์ ให้แปลงโปรแกรมโดยอัตโนมัติเพื่อใช้ความสามารถของโปรเซสเซอร์ได้เต็มที่ เช่น แปลงโปรแกรมแบบ sequential ให้เป็น parallel โดยอัตโนมัติ เป็นต้น (โปรแกรมเมอร์สบาย แต่นักวิจัยทำงานหนัก)

ผมเชื่อในโลกเรายังมีโดเรมอนครับ (หมายถึง มีวิวัฒนาการที่ก้าวหน้าขึ้นไป) ดังนั้น ทุกอย่างเป็นไปได้แต่ต้องใช้เวลา

Sivadon Chaisiri (JavaBoom) http://javaboom.wordpress.com


My Blog