A. Trong ngôn ngữ lập trình bắt buộc, các câu lệnh được thực thi theo thứ tự và mỗi câu lệnh có thể thay đổi trạng thái của chương trình. Vì vậy, việc phân tích các đơn vị dịch thuật vốn đã được tuần tự.
Một ví dụ: Kiểm tra ra cách tuyên truyền liên tục có thể làm việc -
a = 5;
b = a + 7;
c = a + b + 9;
Bạn cần phải đi qua các báo cáo liên tục trước khi bạn tìm ra rằng các giá trị được gán cho b
và c
là hằng số tại thời gian biên dịch.
(khối cơ bản Tuy nhiên riêng biệt có thể có thể được biên dịch và tối ưu hóa song song với nhau.)
B. Ngày đầu này, đèo khác nhau cần phải thực hiện tuần tự là tốt, và ảnh hưởng lẫn nhau.
Ví dụ: Dựa trên lịch biểu hướng dẫn, bạn cấp phát sổ đăng ký, khi đó bạn thấy rằng bạn cần phải đăng ký bộ nhớ, vì vậy bạn cần tạo hướng dẫn mới. Điều này thay đổi lịch trình một lần nữa.
Vì vậy, bạn không thể thực hiện 'lượt' như 'đăng ký phân bổ' và 'lập lịch' song song (thực tế, tôi nghĩ rằng có những bài viết mà các nhà khoa học/nhà toán học đã cố gắng giải quyết hai vấn đề này với nhau, nhưng cho phép không đi vào đó).
(Một lần nữa, người ta có thể đạt được một số song song bởi pipelining đi.)
Hơn nữa, GPU đặc biệt là không phù hợp vì:
GPU là tốt vào thời điểm toán học nổi. Trình biên dịch không cần hoặc sử dụng nhiều (trừ khi tối ưu hóa số học dấu phẩy động trong chương trình)
GPU ở SIMD tốt. tức là thực hiện cùng hoạt động trên nhiều đầu vào. Đây là một lần nữa, không phải cái gì một trình biên dịch cần phải làm. Có có thể là một lợi ích nếu trình biên dịch cần, tối ưu hóa hàng trăm hoạt động điểm nổi (Ví dụ hoang dã sẽ là: lập trình viên xác định một số mảng lớn FP, gán hằng số cho chúng, và sau đó viết mã để hoạt động trên các . một chương trình rất nặng bằng văn bản thực sự.)
Vì vậy, ngoài việc parallelizing biên soạn các khối cơ bản và pipelining trôi qua, không có nhiều lý song song là có ở mức độ 'trong biên soạn của một tập tin C' . Nhưng song song là có thể, dễ thực hiện, và liên tục được sử dụng ở một mức độ cao hơn. Ví dụ: GNU Make
, có đối số -j=N
.Điều này về cơ bản có nghĩa là: miễn là tìm được N
các công việc độc lập (thường là biên dịch một tập tin là gì), nó sinh ra các quy trình N
(hoặc N
các thể hiện song song gcc
biên dịch các tệp khác nhau).
Thay vì không rõ ràng, ít nhất là với tôi. Bạn đang tìm kiếm một trình biên dịch tự động "tăng tốc GPU" mã của bạn hay trình biên dịch tăng tốc GPU? – unwind
Tôi khá chắc chắn anh ấy có nghĩa là một trình biên dịch tăng tốc GPU. – RCE
Tôi khá nghi ngờ rằng việc biên dịch sẽ được hưởng lợi từ việc chạy trên GPU. Bạn có thể cụ thể hơn về (1) những gì bạn đang cố gắng để thực hiện và (2) những gì bạn đã làm để xác định các nút cổ chai trong quá trình hiện tại của bạn. – dmckee