เจาะประเด็น
Hardware
Intel เปิดตัว PISA เปลี่ยนวิธีที่ซอฟต์แวร์คุยกับ GPU ครั้งใหญ่
เขียนโค้ดครั้งเดียวแล้วรันข้าม GPU หลายเจนได้จริงหรือแค่ทฤษฎีสวยๆ มาดูกันว่า Intel กำลังเล่นเกมอะไร
ทีมข่าว เอไอไทย.com
⏱ อ่าน 4 นาที
ถ้าเขียนโค้ดครั้งเดียวแล้วรันได้ทุก GPU โดยไม่ต้องมานั่งแก้ทีละเจน นี่คือความฝันของนักพัฒนา หรือแค่การย้ายปัญหาไปที่อื่น?
วันนี้ Intel อัปเดต Compute Runtime ของตัวเอง เพิ่ม support ให้กับ Portable Instruction Set Architecture หรือ PISA ซึ่งเป็น virtual ISA ตัวใหม่และ programming model สำหรับ GPU ของ Intel ฟังดูเป็นศัพท์เทคนิคหนักๆ ใช่ไหม แต่ถ้าลองถอยออกมาดูภาพใหญ่ มันคือการพยายามแก้ปัญหาที่วงการ GPU แบกมานานมาก นั่นคือเรื่องของ software portability หรือพูดง่ายๆ คือ "เขียนโค้ดครั้งเดียวแล้วรันได้หลายที่" นั่นเอง
ก่อนจะไปต่อ ลองนึกภาพ CPU ก่อน มันต่างจาก GPU เยอะมาก เพราะ CPU มี ISA มาตรฐานที่ทุกคนรู้จัก เช่น Arm หรือ x86 นักพัฒนาก็แค่เขียนโค้ดให้ตรงกับ ISA พวกนั้น แล้ว compiler จัดการที่เหลือ แต่ GPU นี่สิ โลกมันคนละเรื่องเลย เพราะ GPU แต่ละตัวมี native instruction set ของตัวเอง และสถาปัตยกรรมก็ผูกกับฮาร์ดแวร์เฉพาะรุ่นไปเลย
พอมันเป็นแบบนี้ ทุกครั้งที่ GPU เจนใหม่โผล่มา พร้อมความสามารถฮาร์ดแวร์ใหม่ execution feature ใหม่ และ native instruction ใหม่ๆ compiler ที่ยิงตรงไปที่ machine ISA ก็ต้องคอยปรับตามความต่างระหว่างสถาปัตยกรรม ซึ่งหมายความว่านักพัฒนาต้องนั่งแก้โค้ดใหม่ทุกครั้งที่เปลี่ยนเจน ต้นทุนตรงนี้มหาศาลและน่ารำคาญสุดๆ
คำตอบคือ virtual ISA มาตรฐานที่ทำหน้าที่เป็น abstraction layer คั่นกลางระหว่าง output ของ compiler กับ native machine code ของ GPU พูดแบบบ้านๆ ก็คือ PISA เป็นเหมือนเป้าหมายกลางที่ compiler ยิงไปหา แล้วค่อยเอา representation ที่ได้ไป finalize เป็น native machine instruction สำหรับ GPU ตัวเป้าหมายอีกที
ผลลัพธ์ที่ Intel หวังคือ workload ที่ compile ไปเป็น PISA แล้วสามารถรันข้าม GPU ของ Intel หลายเจนที่เข้ากันได้ โดยไม่ต้อง generate โค้ดเฉพาะสถาปัตยกรรมใหม่ทุกเจน แถมยังใช้ความสามารถของฮาร์ดแวร์ใหม่ได้ด้วยถ้ามัน support โดยไม่ต้องแก้ PISA code ต้นทางเลย
แต่ตรงนี้ต้องพูดให้ชัด อย่าเพิ่งฝันหวาน เพราะ Intel เองก็ยอมรับว่าไม่ใช่ทุก PISA workload จะรันบน Intel GPU ทุกตัวได้อัตโนมัติ ความเข้ากันได้มันขึ้นอยู่กับสถาปัตยกรรมเป้าหมาย และ feature กับ instruction ที่โปรแกรมนั้นเรียกใช้ นี่คือจุดที่หลายคนอาจเข้าใจผิดคิดว่าเขียนครั้งเดียวจบทุกที่ ซึ่งไม่จริง
อีกอย่างที่หลายคนอาจไม่รู้คือ PISA ไม่ใช่ virtual GPU ISA ตัวแรกของ Intel เพราะบริษัทมี vISA อยู่ก่อนแล้ว ซึ่งทำหน้าที่เป็น intermediate representation ให้กับ GPU compiler stack ของตัวเองมานาน แต่ PISA มาพร้อมกับ portable ISA และ programming model ตัวใหม่ที่ต่างออกไป
ตรงนี้แหละที่น่าสนใจ เพราะมันสะท้อนว่า Intel กำลังมองเกมระยะยาว ในการดึงนักพัฒนาให้มาเขียนโค้ดบนแพลตฟอร์มตัวเองมากขึ้น ถ้า PISA ทำงานได้จริงตามที่โฆษณา มันจะลดกำแพงที่ทำให้นักพัฒนาไม่อยากย้ายค่าย เพราะกลัวต้องมานั่งแก้โค้ดใหม่ทั้งหมด
แต่ในมุมกลับกัน นี่ก็เป็นดาบสองคม เพราะ abstraction layer แบบนี้มักแลกมาด้วย overhead บางอย่างเสมอ และคำถามใหญ่คือ performance ที่ได้จริงจะใกล้เคียงกับเขียนโค้ด native ตรงๆ แค่ไหน อันนี้ยังต้องรอดูของจริง
PISA เป็นก้าวที่ถูกทิศของ Intel ในการลดกำแพงให้นักพัฒนา แต่คำว่า "portable" ในข่าวนี้ยังมีเงื่อนไขเยอะกว่าที่ชื่อมันสื่อ อย่าเพิ่งเชื่อโฆษณาเต็มร้อย รอวัดกันที่ performance จริงและ ecosystem ที่ตามมาถึงจะรู้ว่าเขียนครั้งเดียวรันได้จริงหรือแค่ทฤษฎีสวย
ที่มา: TechPowerUp — อ่านต้นฉบับ
ความคิดเห็น 6
กำลังโหลดความคิดเห็น...