Một cách dễ dàng khác để tham gia vào lập trình GPU, mà không cần vào CUDA hoặc OpenCL, là thực hiện thông qua OpenACC .
OpenACC hoạt động như OpenMP, với các chỉ thị của trình biên dịch (như #pragma acc kernels
) để gửi công việc tới GPU. Ví dụ: nếu bạn có một vòng lặp lớn (chỉ những vòng lặp lớn hơn mới thực sự có lợi):
int i;
float a = 2.0;
float b[10000];
#pragma acc kernels
for (i = 0; i < 10000; ++i) b[i] = 1.0f;
#pragma acc kernels
for (i = 0; i < 10000; ++i) {
b[i] = b[i] * a;
}
Chỉnh sửa: thật không may, chỉ có trình biên dịch PGI thực sự hỗ trợ OpenACC ngay bây giờ, cho các thẻ GPU NVIDIA.