โครงการล่าสุด LLVM ประกาศเปิดตัว เวอร์ชั่นใหม่ของคอมไพเลอร์ เอชพีวีเอ็ม 2.0 (เครื่องเสมือนแบบขนานต่างกัน), ซึ่งมีเป้าหมายเพื่อลดความซับซ้อนของการเขียนโปรแกรมสำหรับระบบ และจัดเตรียมเครื่องมือสำหรับสร้างโค้ดสำหรับ CPU, GPU, FPGA และตัวเร่งฮาร์ดแวร์เฉพาะโดเมน
การเขียนโปรแกรมระบบขนานที่แตกต่างกันนั้นซับซ้อนเนื่องจากการมีอยู่ในระบบของส่วนประกอบที่ใช้แบบจำลองที่แตกต่างกันเพื่อให้เกิดความเท่าเทียมกัน (แกน CPU, คำสั่งเวกเตอร์, GPU เป็นต้น) ชุดคำสั่งที่แตกต่างกัน และลำดับชั้นหน่วยความจำที่แตกต่างกัน แต่ละระบบใช้ส่วนประกอบเหล่านี้ร่วมกัน
แนวคิดหลัก ของโครงการ HPVM คือการใช้การแทนค่าแบบรวมของโปรแกรมปฏิบัติการแบบคู่ขนานเมื่อทำการคอมไพล์ ซึ่งสามารถใช้ได้กับฮาร์ดแวร์ประเภทต่างๆ ที่รองรับการประมวลผลแบบขนาน เช่น GPU, vector instructions, multi-core processors, FPGAs และชิปเร่งความเร็วแบบพิเศษต่างๆ
ต่างจากระบบอื่นๆ HPVM พยายามรวมสามความเป็นไปได้ เพื่อจัดระเบียบการคำนวณที่แตกต่างกัน: การเป็นตัวแทนระดับกลาง (IR) สถาปัตยกรรมชุดคำสั่งเสมือน (V-ISA) และการเขียนโปรแกรมรันไทม์โดยไม่คำนึงถึงภาษาการเขียนโปรแกรมและฮาร์ดแวร์
การเป็นตัวแทนระดับกลางของ HPVM ขยายการแสดงระดับกลางของคำสั่ง LLVM โดยใช้กราฟการไหลของข้อมูลแบบลำดับชั้น เพื่อจับความขนานที่ระดับงาน ข้อมูล และไปป์ไลน์การคำนวณ การแสดงระดับกลางของ HPVM ยังรวมถึงคำแนะนำเวกเตอร์และหน่วยความจำที่ใช้ร่วมกัน เป้าหมายหลักของการใช้ตัวแทนระดับกลางคือการสร้างโค้ดที่มีประสิทธิภาพและการเพิ่มประสิทธิภาพสำหรับระบบที่ต่างกัน
สถาปัตยกรรมชุดคำสั่งเสมือน (V-ISA) ย่อฮาร์ดแวร์ระดับต่ำและรวมรูปแบบต่าง ๆ ของสถาปัตยกรรมคู่ขนานและหน่วยความจำโดยใช้เฉพาะแบบจำลองการทำงานพร้อมกันที่อยู่ภายใต้ กราฟการไหลของข้อมูล
V-ISA ช่วยให้พกพาระหว่างฮาร์ดแวร์ประเภทต่างๆ สำหรับการประมวลผลแบบขนาน และทำให้ไม่สามารถสูญเสียประสิทธิภาพได้เมื่อใช้องค์ประกอบต่างๆ ของระบบที่ต่างกัน นอกจากนี้ยังสามารถใช้ Virtual ISA เพื่อส่งรหัสโปรแกรมทั่วไปที่สามารถเรียกใช้บน CPU, GPU, FPGA และตัวเร่งความเร็วต่างๆ
นโยบายการกำหนดตารางเวลาการประมวลผลที่ยืดหยุ่นจะนำไปใช้ที่รันไทม์และดำเนินการตามข้อมูลเกี่ยวกับโปรแกรม (โครงสร้างกราฟิก) และโดยการรวบรวมโหนดโปรแกรมแต่ละรายการเพื่อดำเนินการบนอุปกรณ์ประมวลผลเป้าหมายใดๆ ที่มีอยู่ในระบบ
ตัวสร้างโค้ดที่พัฒนาโดยโครงการนี้มีความสามารถในการแปลโหนดแอปพลิเคชันที่กำหนดโดย ISA เสมือนเพื่อทำงานบน NVIDIA GPU (cuDNN และ OpenCL), คำแนะนำเวกเตอร์ Intel AVX, FPGA และ x86 multicore CPU มีข้อสังเกตว่าประสิทธิภาพเอาต์พุตของตัวแปล 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) ซึ่งรวมถึงการปรับแต่งคอมไพเลอร์และกลไกการตรวจจับคอขวดเพื่อปรับแต่งแอปพลิเคชันโดยอัตโนมัติสำหรับแพลตฟอร์มฮาร์ดแวร์ที่กำหนด
- เฟรมเวิร์กประกอบด้วยโมเดลประสิทธิภาพที่พร้อมใช้งานทันทีสำหรับ Intel FPGA และช่วยให้คุณสามารถเชื่อมต่อโปรเซสเซอร์ของคุณเองเพื่อปรับแต่งอุปกรณ์ที่เปิดใช้งาน HPVM ได้
- การเพิ่มประสิทธิภาพสามารถใช้ได้ทั้งในระดับกราฟการไหลของข้อมูล HPVM และระดับ LLVM
- อัปเดตคอมโพเนนต์ LLVM เป็นเวอร์ชัน 13.0
- โค้ดได้รับการจัดระเบียบใหม่เพื่อให้นำทางผ่านฐานโค้ด ไลบรารี และยูทิลิตี้ได้ง่ายขึ้น
- โครงสร้างพื้นฐานสำหรับการทดสอบได้รับการปรับปรุง มีการเพิ่มการทดสอบใหม่สำหรับส่วนประกอบ HPVM ต่างๆ
ในที่สุด หากคุณสนใจที่จะเรียนรู้เพิ่มเติมเกี่ยวกับ HPVM คุณสามารถตรวจสอบรายละเอียดได้ใน ลิงค์ต่อไปนี้