CUDA คือ ... ( Introduction to CUDA )

posted on 28 Jan 2009 13:19 by mekpro

บทความนี้จะนำพามารู้จักกับ CUDA กันครับ

 

CUDA™ ย่อมาจาก Compute Unified Device Architecture เป็นโปรแกรมมิ่งโมเดล พัฒนาโดย NVIDIA® โดยมีจุดประสงค์ให้โปรแกรมเมอร์ สามารถใช้ GPU (หรือการ์ดจอ nVidia นั่นเอง) ในการประมวลผลได้

แล้วทำไมถึงต้องใช้ GPU ให้ยุ่งยากด้วย ก็เอา CPU คำนวณไม่ได้หรือ ? ... คำตอบคือ งานคำนวณบางอย่างนั้น เหมาะกับ GPU มากกว่า และอาจเร็วกว่าได้ถึง 10 หรือ 100 เท่าเลยทีเดียว 

 

ภาพที่ 1 ความแตกต่างของ CPU และ GPU โดย GPU จะมีส่วนของการประมวลผลมากกว่า แทนที่จะมีส่วน Control หรือ Cache มากเหมือน CPU

 

งานที่เหมาะกับ GPU คือ งานที่ต้องคำนวณด้วย โปรแกรมแบบเดียวกัน แต่ต้องทำบนข้อมูลที่ใหญ่ ในทางคอมพิวเตอร์ จะเรียกว่า SIMD (Single Instruction Multiple Data : เคยได้ยินอาจารย์เรียกว่า "ซิมดี้") ยกตัวอย่างงาน SIMD ที่เห็นได้บ่อยๆ เช่น งานประมวลผลภาพ ซึ่งในหนึ่งภาพจะประกอบด้วยจำนวณพิกเซลในหลักล้าน จะเห็นว่า เวลาเราเปิด Photoshop เพื่อใส่เอฟเฟ็คภาพในไฟล์ใหญ่ๆ จะใช้เวลานาน นั่นก็คือ CPU จะต้องคำนวณผลของเอฟเฟคภาพในแต่ละพิกเซล

แต่สำหรับ GPU ซึ่งมีโครงสร้างหน่วยประมวลผล เป็นแบบขนานจำนวนมาก (nVidia เรียกแต่ละท่อว่า Stream Processor ผมเรียกว่า"ท่อ" ) ทำให้เหมาะกับงาน SIMD มาก จินตนาการปัญหาการประมวลผลภาพอีกครั้ง บน GPU ที่มีถึง 112 ท่อพร้อมๆ กัน ... งานนี้จึงเสร็จเร็วขึ้นมาก

 

What is Not Cuda

  • CUDA ไม่ใช่ Physic Engine เพราะ CUDA เป็นเพียงโปรแกรมมิ่งโมเดลเท่านั้น แต่ก็ไ่ม่ใช่ว่าจะไม่เกี่ยวกันเสียทีเดียว เพราะโมเดลการประมวลผลแบบ CUDA นั้น มีความเหมาะสมที่จะใช้ในการจำลอง Physic Engine ซึ่ง nVidia ก็ได้สร้าง Physic Engine ชื่อ Physx ซึ่งใช้ความสามารถของ CUDA ในการจำลองฟิสิกส์อย่างเต็มรูปแบบ
  • CUDA ไม่ใช่เครื่องมือแสดงผล ไม่ใช่สิ่งทีเ่พิ่มเฟรมเรตให้ทุกเกมในโลก แต่เป็นเครื่องมือคำนวณ ซึ่งจะช่วยให้การคำนวณในเกมมีซับซ้อนขึ้นได้ในเวลาแบบ real-time เหมือนเดิม เพราะปรากฏการณ์ในเกมมีความสมจริงกว่าเดิม 

 

แล้วเกี่ยวข้องกับเรายังไงบ้าง

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

ภาพที่ 2 ภาพการทำงานของ Folding@Home ซอฟต์แวร์จำลองโมเลกุลโปรตีน ที่มีเวอร์ชั่นสำหรับรันบน CUDA โดยเฉพาะ (ภาพจาก www.legitreviews.com )

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

 

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

ที่มา

http://www.nvidia.com/object/cuda_what_is.html

edit @ 29 Jan 2009 13:14:41 by mekpro

Comment

Comment:

Tweet

มือใหม่หัดอัพบล้อก มีอะไรเสนอแนะได้เลยนะครับ big smile

#1 By mekpro on 2009-01-29 13:15