Tôi hiện đang có một song song cho vòng lặp tương tự như sau:Cách dễ nhất để sử dụng GPU cho song song cho vòng lặp
int testValues[16]={5,2,2,10,4,4,2,100,5,2,4,3,29,4,1,52};
parallel_for (1, 100, 1, [&](int i){
int var4;
int values[16]={-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1};
/* ...nested for loops */
for (var4=0; var4<16; var4++) {
if (values[var4] != testValues[var4]) break;
}
/* ...end nested loops */
}
Tôi đã được tối ưu hóa nhiều như tôi có thể đến điểm rằng điều duy nhất tôi càng có thể làm là thêm nhiều tài nguyên hơn.
Tôi quan tâm đến việc sử dụng GPU để giúp xử lý tác vụ song song. Tôi đã đọc rằng các tác vụ song song đáng hổ thẹn như thế này có thể sử dụng một GPU hiện đại khá hiệu quả.
Sử dụng bất kỳ ngôn ngữ nào, cách dễ nhất để sử dụng GPU cho một song song đơn giản cho vòng lặp như thế này là gì?
Tôi không biết gì về kiến trúc GPU hoặc mã GPU gốc.
Nếu nhiệm vụ của bạn là một tác vụ tính toán số, hoặc nếu bạn có thể chuyển nó thành một vấn đề dựa trên ma trận, thì bạn có thể sử dụng MATLAB. Các MATLAB mới hỗ trợ cả song song cho ('parfor' từ Hộp công cụ tính toán song song) và phép toán ma trận trên GPU Nvidia CUDA. Cả hai đều tương đối không đau, chỉ yêu cầu những thay đổi khiêm tốn đối với mã MATLAB hiện có. –
Một số thông tin khác về những gì bạn đang cố gắng thực sự làm ở đây có thể hữu ích.Hãy nhớ rằng việc chuyển dữ liệu từ CPU sang GPU phải gánh chịu chi phí đáng kể, do đó tính toán GPU chỉ mang lại hiệu suất tăng nếu bạn đang thực hiện rất nhiều công việc tính toán trên mỗi đơn vị dữ liệu đầu vào. Tính bình phương của mỗi số trong một véc-tơ không phải là một cách sử dụng tốt của GPGPU (hầu như không có bất kỳ công việc nào trên một đơn vị dữ liệu); tính toán FFT của một vector là một cách sử dụng tốt (rất nhiều công việc trên dữ liệu nhỏ). –
Tôi có một số lồng nhau cho vòng lặp, trong vòng lặp trong cùng tôi đang sử dụng các chỉ số vòng lặp để tính toán 16 giá trị và so sánh chúng với mảng testValues []. Không nên có bất kỳ truy cập bộ nhớ đáng kể nào. Ngoài ra tôi đang sử dụng một thẻ AMD/ATI (6850). – Flash