HPVM 2.0 คอมไพเลอร์สำหรับ CPU, GPU, FPGA และตัวเร่งฮาร์ดแวร์ได้รับการเผยแพร่แล้ว

โครงการ LLVM ประกาศการเปิดตัว HPVM 2.0 (Heterogeneous Parallel Virtual Machine) ซึ่งเป็นคอมไพเลอร์ที่มีจุดมุ่งหมายเพื่อทำให้การเขียนโปรแกรมง่ายขึ้นสำหรับระบบที่ต่างกัน และจัดหาเครื่องมือสร้างโค้ดสำหรับ CPU, GPU, FPGA และเครื่องเร่งฮาร์ดแวร์เฉพาะโดเมน รหัสโครงการเผยแพร่ภายใต้ลิขสิทธิ์ Apache 2.0

การเขียนโปรแกรมสำหรับระบบคู่ขนานที่ต่างกันมีความซับซ้อนเนื่องจากมีส่วนประกอบในระบบเดียวกันที่ใช้โมเดลที่แตกต่างกันเพื่อให้เกิดการขนาน (แกน CPU, คำสั่งเวกเตอร์, GPU ฯลฯ) ชุดคำสั่งที่แตกต่างกัน และลำดับชั้นหน่วยความจำที่แตกต่างกัน แต่ละระบบใช้ส่วนประกอบเหล่านี้รวมกัน แนวคิดหลักของโครงการ HPVM คือการใช้การแสดงแบบรวมของโปรแกรมที่ดำเนินการแบบขนานเมื่อทำการคอมไพล์ ซึ่งสามารถใช้กับฮาร์ดแวร์ประเภทต่าง ๆ ที่รองรับการประมวลผลแบบขนาน รวมถึง GPU, คำแนะนำแบบเวกเตอร์, โปรเซสเซอร์แบบมัลติคอร์, FPGA และ ชิปเร่งความเร็วพิเศษต่างๆ

ต่างจากระบบอื่นๆ HPVM พยายามรวมความสามารถสามประการในการจัดระเบียบการประมวลผลแบบต่างกัน - ภาษาการเขียนโปรแกรมและการเป็นตัวแทนระดับกลางที่ไม่ขึ้นกับฮาร์ดแวร์ (IR) สถาปัตยกรรมชุดคำสั่งเสมือน (V-ISA) และกำหนดเวลารันไทม์:

  • การแสดงระดับกลางของ HPVM จะขยายการแสดงคำแนะนำระดับกลางของ LLVM โดยใช้กราฟการไหลของข้อมูลแบบลำดับชั้นเพื่อบันทึกความขนานที่ระดับงาน ข้อมูล และไปป์ไลน์ การแสดงระดับกลางของ HPVM ยังรวมถึงคำสั่งเวกเตอร์และหน่วยความจำแบบแบ่งใช้ วัตถุประสงค์หลักของการใช้การแสดงระดับกลางคือการสร้างโค้ดที่มีประสิทธิภาพและการเพิ่มประสิทธิภาพสำหรับระบบที่ต่างกัน
  • สถาปัตยกรรมชุดคำสั่งเสมือน (V-ISA) สรุปคุณลักษณะฮาร์ดแวร์ระดับต่ำและรวมรูปแบบต่างๆ ของความขนานและสถาปัตยกรรมหน่วยความจำเข้าด้วยกัน โดยใช้เพียงแบบจำลองความขนานพื้นฐานเท่านั้น นั่นคือกราฟการไหลของข้อมูล V-ISA ช่วยให้คุณสามารถพกพาระหว่างอุปกรณ์ประเภทต่างๆ สำหรับการประมวลผลแบบขนาน และทำให้ไม่สูญเสียประสิทธิภาพเมื่อใช้องค์ประกอบที่แตกต่างกันของระบบที่ต่างกัน ISA เสมือนยังสามารถใช้เพื่อส่งมอบโค้ดโปรแกรมปฏิบัติการสากลที่สามารถรันโดยใช้ CPU, GPU, FPGA และตัวเร่งความเร็วต่างๆ
  • นโยบายการกำหนดตารางเวลาที่ยืดหยุ่นสำหรับกระบวนการคำนวณจะถูกนำไปใช้ในขณะรันไทม์และนำไปใช้ทั้งโดยอิงตามข้อมูลเกี่ยวกับโปรแกรม (โครงสร้างกราฟ) และผ่านการรวบรวมโหนดโปรแกรมแต่ละโหนดเพื่อดำเนินการบนอุปกรณ์ประมวลผลเป้าหมายใดๆ ที่มีอยู่ในระบบ

ตัวสร้างโค้ดที่พัฒนาโดยโปรเจ็กต์มีความสามารถในการแปลโหนดแอปพลิเคชันที่กำหนดโดยใช้ ISA เสมือนสำหรับการดำเนินการโดยใช้ NVIDIA GPU (cuDNN และ OpenCL), คำแนะนำเวกเตอร์ Intel AVX, FPGA และซีพียู x86 แบบมัลติคอร์ มีข้อสังเกตว่าประสิทธิภาพของนักแปล HPVM นั้นเทียบได้กับโค้ด OpenCL ที่เขียนด้วยมือสำหรับ GPU และอุปกรณ์ประมวลผลแบบเวกเตอร์

นวัตกรรมที่สำคัญของ HPVM 2.0:

  • มีการเสนอส่วนหน้าของภาษา Hetero-C++ ซึ่งช่วยให้การขนานของโค้ดแอปพลิเคชันใน C/C++ สำหรับการคอมไพล์ใน HPVM ง่ายขึ้น Hetero-C++ กำหนดส่วนขยายสำหรับงานความเท่าเทียมระดับข้อมูลและงานตามลำดับชั้นที่แมปกับกราฟเธรด HPVM
  • มีการเพิ่มแบ็กเอนด์ FPGA เพื่อให้รองรับการเรียกใช้โค้ดบน Intel FPGA เพื่อจัดระเบียบการดำเนินการ จะใช้ Intel FPGA SDK สำหรับ OpenCL
  • มีการเพิ่มเฟรมเวิร์ก DSE (Design Space Exploration) ซึ่งรวมถึงการปรับแต่งคอมไพเลอร์ให้เหมาะสมและกลไกในการระบุปัญหาคอขวดสำหรับการปรับแต่งแอปพลิเคชันโดยอัตโนมัติสำหรับแพลตฟอร์มฮาร์ดแวร์ที่กำหนด เฟรมเวิร์กประกอบด้วยโมเดลประสิทธิภาพสำเร็จรูปสำหรับ FPGA จาก Intel และทำให้สามารถเชื่อมต่อโปรเซสเซอร์ของคุณเองเพื่อเพิ่มประสิทธิภาพให้กับอุปกรณ์ใดๆ ที่รองรับโดย HPVM การเพิ่มประสิทธิภาพสามารถใช้ได้ทั้งในระดับกราฟโฟลว์ข้อมูล HPVM และ LLVM
  • ส่วนประกอบ LLVM ได้รับการอัพเดตเป็นเวอร์ชัน 13.0
  • โค้ดได้รับการจัดระเบียบใหม่เพื่อให้ง่ายต่อการใช้งานฐานโค้ด ไลบรารี และยูทิลิตี้ต่างๆ
  • โครงสร้างพื้นฐานการทดสอบได้รับการปรับปรุง มีการเพิ่มการทดสอบใหม่สำหรับส่วนประกอบ HPVM ต่างๆ

ที่มา: opennet.ru

เพิ่มความคิดเห็น