Vào thứ Năm khi ra mắt bộ vi xử lý AMD EPYC Genoa thế hệ thứ 4, AMD cũng đã công bố AOCC 4.0 là phiên bản mới nhất của Trình biên dịch C/C ++ AMD Tối ưu hóa. Tôi đã vượt qua các bước của nó vào ngày hôm qua và tiếp tục cho thấy tác động tích cực về hiệu suất của việc điều chỉnh trình biên dịch thích hợp.
Bản phát hành AMD Optimizing C/C ++ Compiler 4.0 giới thiệu đáng chú ý nhất hỗ trợ và tối ưu hóa Zen 4″znver4″ban đầu. Nhật ký thay đổi công khai chỉ đơn giản gọi nó là”Hỗ trợ và tối ưu hóa bộ xử lý AMD Family 19h (kiến trúc lõi AMD”Zen4″).”Không rõ mức độ tối ưu hóa của Zen 4 ở giai đoạn này, đặc biệt với AOCC là nguồn đóng của LLVM/Clang.
Ngoài AOCC 4.0 còn có Hỗ trợ và tối ưu hóa Zen 4, có các cải tiến hỗ trợ OpenMP 4.5 cho Fortran, cải tiến gỡ lỗi/chẩn đoán, điều chỉnh Thư viện Toán học AMD 4.0, hỗ trợ các biến thể vectơ và lib nhanh hơn của Thư viện Toán học AMD và các biến thể được cải thiện của nhiều vô hướng/vectơ/các phép biến đổi vòng lặp. Thêm chi tiết về AOCC 4.0 qua developer.amd.com .
Không có Zen nào đang chờ xử lý 4 bản vá (znver4) cho LLVM ngược dòng.
AOCC 4.0 được lấy từ các nguồn LLVM/Clang 14.0.6 ngược dòng. LLVM 15 được phát hành vào đầu tháng 9 trong khi AOCC vẫn chưa được dựa trên bản phát hành tính năng mới nhất nửa năm đó. Đối với một số điểm chuẩn sơ bộ, tôi đã chạy một số điểm chuẩn so sánh trên Zen 4 giữa AOCC 4.0 và LLVM Clang 14.0 như được đóng gói trên Ubuntu Linux.
Do máy chủ Titanite là EPYC 9004 duy nhất của tôi. nền tảng thử nghiệm hàng loạt hiện tại và đang bận thực hiện các điểm chuẩn khác, để thử AOCC 4.0, tôi đã chạy các điểm chuẩn trên AMD Ryzen 9 7950X. AOCC 4.0 hỗ trợ tất cả các sản phẩm Ryzen/Threadripper/EPYC và vẫn duy trì hỗ trợ cho các thế hệ vi xử lý Zen trước đó.
Trong quá trình thử nghiệm, tất cả các CFLAGS/CXXFLAGS đều được duy trì như cũ nhưng chỉ được xây dựng lại tất cả phần mềm đang được thử nghiệm với AMD AOCC 4.0 hoặc LLVM Clang 14.0 ngược dòng.
Khi LLVM/Clang Git và GCC Git ngược dòng có nhiều tối ưu hóa hơn cho Zen 4, tất nhiên tôi sẽ chạy phần mềm lớn hơn nhiều và so sánh trình biên dịch rộng hơn trên Zen 4-đồng thời chạy trên các bộ xử lý dòng EPYC 9004 có liên quan hơn.
Cũng như các bản phát hành AOCC trước đây cho Zen 1/2/3, AOCC 4.0 với Zen 4 giúp tiết kiệm thêm hiệu suất vượt quá những gì hiện được tìm thấy trong các trình biên dịch nguồn mở ngược dòng:
LLVM Clang 14 đang xây dựng phần mềm với AVX-512 và các phần mở rộng mới khác được kích hoạt, vì vậy đối với điểm chuẩn AOCC so với Clang này, nó đang xem xét tác động của việc điều chỉnh/tối ưu hóa của AMD chứ không phải bất kỳ sự khác biệt nào về ISA.
AOCC 4.0 trông giống như một tấm nền tốt rt để giúp tối đa hóa hiệu suất của bộ xử lý Zen 4 về mặt trình biên dịch.
AOCC 4.0 đã thể hiện một số cải tiến tốt ngoài hiệu năng AMD Ryzen 9 7950X Linux vốn đã tuyệt vời:
Có thể đạt được hiệu suất từ nhỏ đến lớn khi sử dụng AOCC 4.0 qua trình biên dịch LLVM Clang 14 ngược dòng mà nó dựa trên. Hy vọng rằng GCC sẽ sớm xem được bảng chi phí điều chỉnh cho Zen 4 cho lần kích hoạt Znver4 ban đầu và sau đó vẫn đang chờ kích hoạt LLVM/Clang znver4 ngược dòng và bất kỳ điều chỉnh nào ở đó.
Câu chuyện dài ngắn gọn, AOCC 4.0 trông tuyệt vời ít nhất là trong các thử nghiệm ban đầu của tôi được thực hiện trên AMD Ryzen 9 7950X. Ngoài lộ trình AOCC như một trình biên dịch tập trung vào AMD được tối ưu hóa, tôi tiếp tục hy vọng-và nhấn mạnh-để AMD đảm bảo các trình biên dịch mã nguồn mở GCC và LLVM/Clang ngược dòng nhận thấy sự hỗ trợ kịp thời và đáng giá. AMD đang hoàn toàn đánh dấu vào tất cả các ô phù hợp với việc thực thi phần cứng của họ ngay bây giờ trong khi về mặt phần mềm nguồn mở/Linux, họ vẫn cho thấy khả năng cải tiến, đặc biệt nếu họ muốn phù hợp với truyền thống và mức độ hỗ trợ mà khách hàng Intel Linux đã yêu thích từ lâu. chất lượng của hỗ trợ nguồn mở ngược dòng lúc ra mắt. Về phần họ, AMD đã và đang cải thiện về mặt phần mềm và việc tiếp tục thuê của họ (sau làn sóng thành công ban đầu của EPYC trong trung tâm dữ liệu cho phép tăng cường đầu tư) chắc chắn đang nỗ lực hướng con tàu đi theo hướng đó.
Ngoài ra, cá nhân tôi tiếp tục hơi bối rối tại sao AMD lại đợi cho đến khi ra mắt EPYC sau đó rồi mới đăng AOCC 4.0 thay vì gây ấn tượng ban đầu khi dòng Ryzen 7000 ra mắt lần đầu. Việc thực thi trước đó có thể dẫn đến trải nghiệm tốt hơn cho bất kỳ máy tính để bàn/máy trạm của nhà phát triển nào và những máy có thể đang sử dụng dòng Ryzen 7000 như một bước đánh giá/bước đệm để bắt đầu chuẩn bị cơ sở mã phần mềm của riêng họ cho Zen 4 với các máy chủ EPYC cuối cùng. Điều này cũng xảy ra với Zen 3 khi chờ đợi Milan trước khi xuất bản AOCC 3.0 với khoảng cách vài tháng khiến máy tính để bàn của nhà phát triển Ryzen, những người chạy các bản phân phối Linux dựa trên nguồn, các nhà phát triển trình biên dịch mã nguồn mở có nhiều thời gian hơn để xác định sự khác biệt trong mã được tạo, và những người khác có thể đã giúp”đạp lốp”trên AOCC mới trước khi có EPYC. Heck tại sao không gửi nó sớm hơn dưới dạng AOCC”beta”cho thử nghiệm Ryzen? Tôi tưởng tượng điều này cũng liên quan đến tài nguyên kỹ thuật và họ cần tất cả thời gian có thể để tìm ra các tối ưu hóa trình biên dịch.
Hãy theo dõi để biết thêm các điểm chuẩn AOCC 4.0 từ EPYC Genoa và so sánh trình biên dịch lớn hơn bao gồm Clang-15/GCC-13/etc trên Zen 4 khi hỗ trợ cho tất cả các trình biên dịch này đều có những cải tiến. Với điểm chuẩn AMD EPYC 9654 và 9554 Genoa ngày hôm qua, sẽ khá thú vị khi thấy bộ điểm chuẩn lớn đó nhanh hơn bao nhiêu khi tận dụng AOCC 4.0 so với GCC 12 như được sử dụng cho trình biên dịch hệ thống trên tất cả các bộ vi xử lý được thử nghiệm đó.