Dự án thêm hỗ trợ song song hóa quá trình biên dịch vào GCC

Là một phần của dự án nghiên cứu GCC song song Công việc đã bắt đầu thêm một tính năng vào GCC cho phép chia quá trình biên dịch thành nhiều luồng song song. Hiện tại, để cải thiện tốc độ xây dựng trên các hệ thống đa lõi, tiện ích make sử dụng việc khởi chạy các quy trình biên dịch riêng biệt, mỗi quy trình xây dựng một tệp mã riêng. Dự án mới đang thử nghiệm cung cấp khả năng song song hóa ở cấp độ trình biên dịch, điều này có khả năng cải thiện hiệu suất trên các hệ thống đa lõi.

Để thử nghiệm chuẩn bị một nhánh song song riêng biệt của GCC, cung cấp một tham số mới “—param=num-threads=N” để đặt số lượng luồng. Ở giai đoạn đầu, chúng tôi đã triển khai việc chuyển các tối ưu hóa liên thủ tục thành các luồng riêng biệt, được gọi theo chu kỳ cho từng chức năng và có thể dễ dàng song song hóa. Các hoạt động GIMPLE chịu trách nhiệm tối ưu hóa độc lập với phần cứng nhằm đánh giá sự tương tác của các chức năng với nhau được đặt trong các luồng riêng biệt.

Ở giai đoạn tiếp theo, người ta cũng lên kế hoạch chuyển các tối ưu hóa RTL liên thủ tục thành các luồng riêng biệt, có tính đến các đặc điểm của nền tảng phần cứng. Sau đó, chúng tôi dự định triển khai song song các tối ưu hóa nội bộ (IPA) được áp dụng cho mã bên trong hàm, bất kể chi tiết cụ thể của lệnh gọi. Liên kết giới hạn hiện tại là trình thu gom rác, đã thêm khóa chung để vô hiệu hóa các hoạt động thu gom rác trong khi chạy ở chế độ đa luồng (trong tương lai trình thu gom rác sẽ được điều chỉnh để thực thi GCC đa luồng).

Để đánh giá những thay đổi về hiệu suất, một bộ thử nghiệm đã được chuẩn bị để tập hợp tệp gimple-match.c, bao gồm hơn 100 nghìn dòng mã và 1700 hàm. Các thử nghiệm trên hệ thống có CPU Intel Core i5-8250U với 4 lõi vật lý và 8 lõi ảo (Siêu phân luồng) cho thấy thời gian thực hiện tối ưu hóa GIMPLE theo thủ tục nội bộ giảm từ 7 xuống 4 giây khi chạy 2 luồng và xuống 3 giây khi chạy 4 luồng. chủ đề, tức là Tốc độ của giai đoạn lắp ráp đang được xem xét đã tăng lần lượt là 1.72 và 2.52 lần. Các thử nghiệm cũng cho thấy việc sử dụng lõi ảo với Hyperthreading không dẫn đến tăng hiệu suất.

Dự án thêm hỗ trợ song song hóa quá trình biên dịch vào GCC

Tổng thời gian xây dựng đã giảm khoảng 10%, nhưng theo dự báo, việc tối ưu hóa RTL song song sẽ cho phép đạt được nhiều kết quả rõ ràng hơn vì giai đoạn này mất nhiều thời gian hơn đáng kể trong quá trình biên dịch. Khoảng sau khi song song hóa RTL, tổng thời gian lắp ráp sẽ giảm đi 1.61 lần. Sau này, có thể giảm thời gian xây dựng thêm 5-10% bằng cách song song tối ưu hóa IPA.

Dự án thêm hỗ trợ song song hóa quá trình biên dịch vào GCC

Nguồn: opennet.ru

Thêm một lời nhận xét