โครงการเพิ่มการสนับสนุนกระบวนการคอมไพล์แบบขนานไปยัง GCC

เป็นส่วนหนึ่งของโครงการวิจัย GCC แบบขนาน งานได้เริ่มเพิ่มฟีเจอร์ให้กับ GCC ที่ทำให้กระบวนการคอมไพล์สามารถแบ่งออกเป็นเธรดคู่ขนานหลายเธรด ในปัจจุบัน เพื่อเพิ่มความเร็วในการสร้างบนระบบมัลติคอร์ ยูทิลิตี้ make จะใช้การเรียกใช้กระบวนการคอมไพเลอร์แยกกัน ซึ่งแต่ละกระบวนการจะสร้างไฟล์โค้ดแยกต่างหาก โปรเจ็กต์ใหม่กำลังทดลองการให้การขนานในระดับคอมไพเลอร์ ซึ่งอาจปรับปรุงประสิทธิภาพบนระบบมัลติคอร์ได้

สำหรับการทดสอบ เตรียมไว้ สาขาการขนานที่แยกต่างหากของ GCC ซึ่งมีพารามิเตอร์ใหม่ “—param=num-threads=N” เพื่อกำหนดจำนวนเธรด ในระยะเริ่มแรก เราได้ปรับใช้การถ่ายโอนการเพิ่มประสิทธิภาพระหว่างโพรซีเดอร์ไปยังเธรดที่แยกจากกัน ซึ่งเรียกว่าแบบวนรอบสำหรับแต่ละฟังก์ชันและสามารถขนานกันได้อย่างง่ายดาย การดำเนินการ GIMPLE ที่รับผิดชอบในการเพิ่มประสิทธิภาพโดยไม่ขึ้นกับฮาร์ดแวร์ที่ประเมินการโต้ตอบของฟังก์ชันระหว่างกันจะถูกวางไว้ในเธรดที่แยกจากกัน

ในขั้นตอนต่อไป มีการวางแผนที่จะย้ายการเพิ่มประสิทธิภาพ RTL ระหว่างโพรซีเดอร์ไปยังเธรดที่แยกจากกัน โดยคำนึงถึงลักษณะของแพลตฟอร์มฮาร์ดแวร์ หลังจากนั้น เราวางแผนที่จะใช้การปรับให้เหมาะสมภายในกระบวนการ (IPA) แบบขนานที่ใช้กับโค้ดภายในฟังก์ชัน โดยไม่คำนึงถึงลักษณะเฉพาะของการโทร ลิงก์ที่จำกัดในตอนนี้คือตัวรวบรวมขยะ ซึ่งได้เพิ่มการล็อกส่วนกลางที่ปิดใช้งานการดำเนินการรวบรวมขยะในขณะที่ทำงานในโหมดมัลติเธรด (ในอนาคต ตัวรวบรวมขยะจะถูกปรับใช้สำหรับการดำเนินการแบบมัลติเธรดของ GCC)

เพื่อประเมินการเปลี่ยนแปลงประสิทธิภาพ เราได้เตรียมชุดทดสอบที่รวบรวมไฟล์ gimple-match.c ซึ่งประกอบด้วยโค้ดมากกว่า 100 บรรทัดและฟังก์ชัน 1700 รายการ การทดสอบบนระบบที่ใช้ CPU Intel Core i5-8250U พร้อม 4 คอร์จริงและ 8 เสมือน (Hyperthreading) แสดงให้เห็นการลดลงของเวลาดำเนินการของการเพิ่มประสิทธิภาพ Intra Procedural GIMPLE จาก 7 เป็น 4 วินาทีเมื่อรัน 2 เธรด และเหลือ 3 วินาทีเมื่อรัน 4 กระทู้เช่น ความเร็วของขั้นตอนการประกอบที่พิจารณาเพิ่มขึ้น 1.72 และ 2.52 เท่า ตามลำดับ การทดสอบยังแสดงให้เห็นว่าการใช้คอร์เสมือนกับ Hyperthreading ไม่ได้ทำให้ประสิทธิภาพเพิ่มขึ้น

โครงการเพิ่มการสนับสนุนกระบวนการคอมไพล์แบบขนานไปยัง GCC

เวลาในการสร้างโดยรวมลดลงประมาณ 10% แต่ตามการคาดการณ์ การเพิ่มประสิทธิภาพ RTL แบบขนานจะช่วยให้บรรลุผลลัพธ์ที่จับต้องได้มากขึ้น เนื่องจากขั้นตอนนี้ใช้เวลาในการคอมไพล์มากขึ้นอย่างมาก ประมาณหลังจากการขนาน RTL เวลาการประกอบทั้งหมดจะลดลง 1.61 เท่า หลังจากนี้ จะสามารถลดเวลาในการสร้างลงอีก 5-10% โดยการเพิ่มประสิทธิภาพ IPA แบบขนาน

โครงการเพิ่มการสนับสนุนกระบวนการคอมไพล์แบบขนานไปยัง GCC

ที่มา: opennet.ru

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