Tôi đang cố chạy hạt nhân trên GPU và thực hiện tính toán bổ sung trên máy chủ (CPU). Tôi thấy hiệu ứng này:Thực thi hạt nhân OpenCL không bắt đầu cho đến khi clFinish hoặc clWaitForEvents được gọi là
chỉ hạt nhân cần khoảng 2000 ms:
clEnqueueNDRangeKernel ...
clFinish (hoặc clWaitForEvents, tôi đã cố gắng cả hai)
tôi mô phỏng tính toán thêm trên CPU có chế độ ngủ (10):
clEnqueueNDRangeKernel ...
ngủ (10);
clFinish (hoặc clWaitForEvents)
Về lý thuyết hạt nhân nên chạy trên GPU và sau khi ngủ 10 giây hạt nhân nên được kết thúc. Nhưng đo thời gian cho biết tất cả đều cần 12000ms thay vì 10000.
ClFinish hoặc clWaitForEvents có gọi hạt nhân khởi động hoặc tôi bỏ lỡ thứ gì đó không?
Tôi đang sử dụng CPU AMD Fusion/GPU trên Linux.
Cảm ơn rất nhiều.
Dữ liệu của bạn lớn đến mức nào? Có thể là 2000ms thể hiện thời gian cần thiết để chuyển dữ liệu của bạn từ GPU sang CPU? – user1202136
Dữ liệu dưới 1 MB. Nhưng nó không phải là đo lường của tôi. Tôi sao chép dữ liệu vào thiết bị, bắt đầu đo, thực hiện hạt nhân + ngủ + clFinish, dừng đo, sao chép dữ liệu trở lại máy chủ – Tomas
Bạn đo chính xác như thế nào? Bạn có sao chép dữ liệu của mình vào thiết bị một cách đồng bộ không? – reima