ในวันพฤหัสบดีที่เปิดตัวโปรเซสเซอร์ AMD 4th Gen EPYC Genoa AMD ยังเผยแพร่ AOCC 4.0 เป็นเวอร์ชันล่าสุดของ AMD Optimizing C/C++ Compiler ฉันได้ดำเนินการผ่านขั้นตอนในวันที่ผ่านมาและยังคงแสดงผลกระทบด้านประสิทธิภาพในเชิงบวกของการปรับแต่งคอมไพเลอร์ที่เหมาะสมต่อไป

การเปิดตัว AMD Optimizing C/C++ Compiler 4.0 ที่โดดเด่นที่สุด การสนับสนุนและการเพิ่มประสิทธิภาพ Zen 4″znver4″เริ่มต้น บันทึกการเปลี่ยนแปลงสาธารณะเรียกง่ายๆ ว่า”โปรเซสเซอร์ AMD Family 19h (สถาปัตยกรรมหลักของ AMD”Zen4″) รองรับและเพิ่มประสิทธิภาพ”ไม่ชัดเจนจากขอบเขตของการเพิ่มประสิทธิภาพ Zen 4 ในขั้นตอนนี้ โดยเฉพาะอย่างยิ่งเมื่อ AOCC เป็นดาวน์สตรีมแบบปิดของ LLVM/Clang

นอกเหนือจาก AOCC 4.0 แล้ว รองรับ Zen 4 และปรับให้เหมาะสม มีการปรับปรุงรองรับ OpenMP 4.5 สำหรับ Fortran, การปรับปรุงการดีบัก/การวินิจฉัย, การปรับแต่ง AMD Math Library 4.0, รองรับเวกเตอร์และตัวแปร lib ที่เร็วขึ้นของ AMD Math Library และตัวแปรที่ปรับปรุงของสเกลาร์/เวกเตอร์/การแปลงแบบวนซ้ำ รายละเอียดเพิ่มเติมเกี่ยวกับ AOCC 4.0 ผ่านทาง developer.amd.com

No pending Zen แพตช์ 4 (znver4) สำหรับอัปสตรีม LLVM

AOCC 4.0 ได้มาจากต้นทาง LLVM/Clang 14.0.6 LLVM 15 ออกเมื่อต้นเดือนกันยายนในขณะที่ AOCC ยังไม่ได้รับการ re-based ใหม่จากการเปิดตัวคุณลักษณะครึ่งปีล่าสุด สำหรับการเปรียบเทียบเบื้องต้น ฉันจึงใช้เกณฑ์เปรียบเทียบบางตัวบน Zen 4 ระหว่าง AOCC 4.0 และ LLVM Clang 14.0 ตามที่จัดเป็นแพ็กเกจบน Ubuntu Linux

เนื่องจากเซิร์ฟเวอร์ Titanite เป็น EPYC 9004 ของฉันเพียงคนเดียว แพลตฟอร์มการทดสอบซีรีส์สำหรับตอนนี้และกำลังยุ่งอยู่กับการวัดประสิทธิภาพอื่นๆ สำหรับการทดลองใช้ AOCC 4.0 ฉันใช้การวัดประสิทธิภาพบน AMD Ryzen 9 7950X AOCC 4.0 รองรับผลิตภัณฑ์ Ryzen/Threadripper/EPYC ทั้งหมด และยังคงรองรับโปรเซสเซอร์ Zen รุ่นก่อนๆ ไว้ได้

ระหว่างการทดสอบ CFLAGS/CXXFLAGS ทั้งหมดนั้นยังคงเหมือนเดิมแต่เพิ่งสร้างใหม่ ซอฟต์แวร์ทั้งหมดที่อยู่ระหว่างการทดสอบกับ AMD AOCC 4.0 หรือ LLVM Clang 14.0 อัปสตรีม

เนื่องจากอัปสตรีม LLVM/Clang Git และ GCC Git ได้รับการปรับแต่งเพิ่มเติมสำหรับ Zen 4 แน่นอนว่าฉันจะรันซอฟต์แวร์ที่ใหญ่ขึ้นและ การเปรียบเทียบคอมไพเลอร์ที่กว้างขึ้นใน Zen 4–รวมถึงการรันบนโปรเซสเซอร์ซีรีส์ EPYC 9004 ที่มีความเกี่ยวข้องมากขึ้นด้วย

เช่นเดียวกับ AOCC ที่ออกก่อนหน้านี้สำหรับ Zen 1/2/3 AOCC 4.0 พร้อม Zen 4 ช่วยในการบีบเพิ่มเติม ประสิทธิภาพเหนือกว่าที่พบในคอมไพเลอร์โอเพ่นซอร์สอัปสตรีม:

LLVM Clang 14 กำลังสร้างซอฟต์แวร์ด้วย AVX-512 และส่วนขยายใหม่อื่นๆ ที่เปิดใช้งาน ดังนั้นสำหรับการเปรียบเทียบ AOCC กับ Clang จะดูที่ ผลกระทบของการปรับจูน/การปรับให้เหมาะสมของ AMD และไม่ใช่ความแตกต่างของ ISA

AOCC 4.0 ดูเหมือนจะเป็นสถานะที่ดี rt สำหรับการช่วยเพิ่มประสิทธิภาพโปรเซสเซอร์ Zen 4 ให้สูงสุดในด้านคอมไพเลอร์

AOCC 4.0 แสดงให้เห็นถึงการปรับปรุงที่ดีบางประการนอกเหนือจากประสิทธิภาพ AMD Ryzen 9 7950X Linux ที่ยอดเยี่ยมอยู่แล้ว:

การใช้ AOCC 4.0 ผ่านคอมไพเลอร์อัพสตรีม LLVM Clang 14 มีประสิทธิภาพเพียงเล็กน้อยถึงใจกว้างซึ่งเป็นไปได้ หวังว่า GCC จะได้เห็นตารางราคาที่ปรับแต่งแล้วสำหรับ Zen 4 สำหรับการเปิดใช้งาน Znver4 เริ่มต้น จากนั้นยังคงรอการเปิดใช้งาน LLVM/Clang znver4 ต้นน้ำและการปรับแต่งใดๆ ที่นั่น

เรื่องยาว สั้น ๆ AOCC 4.0 ดูดีอย่างน้อยในการทดสอบครั้งแรกของฉันที่ดำเนินการกับ AMD Ryzen 9 7950X นอกเหนือจากเส้นทาง AOCC ในฐานะคอมไพเลอร์ที่เน้น AMD ที่ปรับให้เหมาะสมแล้ว ฉันยังคงหวัง-และกด-สำหรับ AMD ต่อไปเพื่อให้แน่ใจว่าคอมไพเลอร์อัปสตรีม GCC และ LLVM/Clang จะได้รับการสนับสนุนที่ทันท่วงทีและมีเกียรติ AMD ทำเครื่องหมายในช่องที่ถูกต้องทั้งหมดด้วยการประมวลผลฮาร์ดแวร์ในขณะที่อยู่ในฝั่งซอฟต์แวร์ Linux/โอเพ่นซอร์ส พวกเขายังคงแสดงพื้นที่สำหรับการปรับปรุง โดยเฉพาะอย่างยิ่งหากพวกเขาต้องการให้ตรงกับประเพณีและระดับการสนับสนุนที่ลูกค้า Intel Linux ใช้งานมายาวนาน คุณภาพของการสนับสนุนโอเพ่นซอร์สต้นน้ำเมื่อเปิดตัว ในส่วนของ AMD ได้รับการปรับปรุงในด้านซอฟต์แวร์และการว่าจ้างอย่างต่อเนื่อง (หลังจากคลื่นลูกแรกของความสำเร็จ EPYC ในศูนย์ข้อมูลทำให้มีการลงทุนเพิ่มขึ้น) กำลังทำงานเพื่อชี้ทิศทางนั้นอย่างแน่นอน

นอกจากนี้ โดยส่วนตัวแล้วฉันยังรู้สึกงงเล็กน้อยว่าทำไม AMD จึงรอจนกระทั่ง EPYC เปิดตัวในภายหลังก่อนที่จะโพสต์ AOCC 4.0 แทนที่จะโดดเด่นในตอนแรกเมื่อ Ryzen 7000 series เปิดตัวครั้งแรก การดำเนินการก่อนหน้านี้อาจนำไปสู่ประสบการณ์ที่ดีขึ้นสำหรับเดสก์ท็อป/เวิร์กสเตชันสำหรับนักพัฒนา และผู้ที่อาจใช้ซีรี่ส์ Ryzen 7000 เป็นขั้นตอนในการประเมิน/ก้าวเพื่อเริ่มเตรียมฐานรหัสซอฟต์แวร์ของตนเองสำหรับ Zen 4 กับเซิร์ฟเวอร์ EPYC ในที่สุด มันเป็นแบบนี้เช่นกันกับ Zen 3 ที่รอมิลานก่อนที่จะเผยแพร่ AOCC 3.0 โดยมีช่องว่างหลายเดือนที่เดสก์ท็อปสำหรับนักพัฒนา Ryzen, ผู้ที่รันลีนุกซ์บนซอร์ส, นักพัฒนาคอมไพเลอร์โอเพนซอร์ซมีเวลามากขึ้นในการสร้างโปรไฟล์ความแตกต่างในโค้ดที่สร้างขึ้น, และคนอื่น ๆ สามารถช่วย”เตะยาง”ใน AOCC ใหม่ได้ก่อนที่จะมี EPYC เฮ้ทำไมไม่จัดส่งก่อนหน้านี้เป็น AOCC”เบต้า”สำหรับการทดสอบ Ryzen? ฉันคิดว่าสิ่งนี้มาจากทรัพยากรด้านวิศวกรรมและต้องการเวลาทั้งหมดเพื่อเพิ่มประสิทธิภาพคอมไพเลอร์

คอยติดตามมาตรฐาน AOCC 4.0 เพิ่มเติมจาก EPYC Genoa และการเปรียบเทียบคอมไพเลอร์ที่ใหญ่กว่ารวมถึง Clang-15/GCC-13/etc บน Zen 4 เนื่องจากการรองรับคอมไพเลอร์เหล่านี้มีการปรับปรุงให้ดีขึ้น จากเกณฑ์มาตรฐาน AMD EPYC 9654 และ 9554 Genoa ของเมื่อวาน คงจะสนุกดีถ้าเห็นว่าผลการวัดประสิทธิภาพชุดใหญ่โดยรวมเร็วแค่ไหนเมื่อใช้ AOCC 4.0 เหนือ GCC 12 ซึ่งใช้สำหรับคอมไพเลอร์ระบบในโปรเซสเซอร์ที่ทดสอบทั้งหมด