GPU Testbed พลัง Tesla (ภาค 2)

ใน GPU Testbed พลัง Tesla (ภาค 1) ก็ได้แนะนำคลัสเตอร์จีพียูในที่ทำงานของผมไปแล้ว มาครั้งนี้ ขอพูดถึงสเปคเครื่องทั้งระบบว่าเป็นอย่างไร

ก่อนอื่น ขอสรุปข้อมูลของ testbed จากภาค 1 สั้นๆก่อนว่า testbed ประกอบด้วย เซิร์ฟเวอร์ 4 เครื่อง แต่ละเซิร์ฟเวอร์ติดตั้งการด์จีพียู Tesla เข้าไป 2 ใบ ทำให้ทั้งระบบ testbed มีจำนวน Tesla ทั้งหมด 8 ใบ ในเชิงทฤษฎี (หรือ peak performance) รวมพลังประมวลผลแบบ single precision ได้ถึง 7.4 เทราฟลอป หรือ 622 กิกะฟลอปสำหรับ double precision

Continue reading

GPU Testbed พลัง Tesla (ภาค 1)

เพิ่ม GPU Testbed เข้าไปรวมกับ Cloud Computing Testbed

ผมเคยพูดถึง Cloud Computing Testbed ในที่ทำงานของผม ซึ่งผมและเพื่อนของผม (คือ อลัน) ได้ติดตั้งขึ้นมาเพื่อใช้ในงานวิจัยและพัฒนาโซลูชันสำหรับ cloud computing สำหรับครั้งนี้ ผมอยากมาอัพเดตข้อมูลเจ้า testbed ตัวนี้อีกนิดนึงว่า ที่ทำงานผมได้ลงทุนติดตั้งเซิร์ฟเวอร์ของหน่วยประมวลผลกราฟิก (จีพียู – GPU) รุ่น NVIDIA Tesla เข้าไปทั้งหมด 8 การ์ด เข้าไปยังเซิร์ฟเวอร์ของ HP ทั้งหมด 4 เครื่อง (แต่มันถูกแพ็คให้เข้าไปใน rack server 2 เครื่อง งงไหม?) โดยมี Tesla 2 ใบต่อเครื่อง ทำให้ได้จำนวนคอร์รวมกันได้ 1,920 (จีพียู)คอร์ และเราก็เรียกเซิร์ฟเวอร์ชุดนี้ว่า GPU Testbed (หรือ GPU Cluster)

จุดประสงค์ของ testbed ตัวนี้คือ เอาไว้ใช้ในงานวิจัย อย่างการทดลองโมเดลหรืออัลกอริธึมต่างๆที่เกี่ยวกับ GPU รวมถึง Hybrid CPU+GPU และก็เอาไว้พัฒนาซอฟต์แวร์ทั่วไปเพื่อใช้พลังของ GPU โดยการใช้ CUDA และ OpenCL

Continue reading

แนะนำหัวข้อ Project ปี 4 – Linear Programming with CUDA

  • หัวข้อปัญหา – การแก้ปัญหาโปรแกรมเชิงเส้นโดยใช้ความสามารถของโปรเซสเซอร์ประมวลผลกราฟิก
  • อธิบายปัญหาคร่าวๆ – เป็นการพัฒนาซอฟต์แวร์ประเภท optimization solver ให้สามารถแก้ปัญหาโปรแกรมเชิงเส้น (linear programming) โดยใช้สมรรถนะของโปรเซสเซอร์ประมวลผลกราฟิก (หรือ GPU)
  • เครื่องมือในการพัฒนา – CUDA (แนะนำว่าควรใช้ C/C++ binding ของ CUDA เนื่องจากเป็นโค้ดที่เสถียรสุด)
  • ทักษะในการพัฒนา 1. ภาษา C/C++ 2. เข้าใจ simplex method 3. เข้าใจพื้นฐานการพัฒนาโปรแกรมแบบขนาน (parallel programming) อย่างไรก็ตาม ข้อ 2. กับ 3. พัฒนาหรือรื้อฟื้นกันได้
  • งานที่เกี่ยวข้อง – ลองอ่านผลงานชื่อ Linear Programming on modern GPUs อย่างไรก็ดี เราควรหาแนวทางที่แตกต่าง อย่าเช่นเราควรพัฒนา optimization solver ที่สนับสนุนให้ผู้ใข้สามารถแก้ปัญหาโปรแกรมเชิงเส้นด้วยเครื่องมือหรือภาษาทางคณิตศาสตร์ที่ได้รับการยอมรับหรือใช้อย่างกว้างขวาง เช่น MATLAB OCTAVE หรือ GNU MathProg ซึ่งจะทำให้ซอฟต์แวร์ใช้ได้กับปัญหาโปรแกรมเชิงเส้นแบบทั่วไปได้อีกด้วย
  • ตัวอย่างของผลลัพธ์ที่คาดหวัง – ได้ออกมาเป็น optimization solver ที่สามารถแก้ปัญหาเชิงเส้นด้วยการเขียนสคริปต์ของ MathProg ด้วยการใช้ GPU และความเร็วที่ได้ควรเร็วกว่า CPU อย่างมีนัยสำคัญ
  • แนวทางที่พลิกแพลงได้ – ถ้าหากค้นคว้างานที่เกี่ยวข้องเพิ่มเติมเองแล้ว พบว่ามีคนทำไปแล้ว ลองพิจารณาปัญหาประเภท non-linear programming, quadratic programming, และ integer programming ดูก็ได้ งานนี้จึงสามารถพัฒนาแตกแขนงจากรุ่นหนึ่งไปสู่รุ่นหนึ่งได้เรื่อยๆ

โพสต์ครั้งแรกที่ blognone