Параллелизм в исполнении CUDA для нескольких графических процессоров

Я запускаю функцию ядра cuda в системе с несколькими графическими процессорами, с4 Графические процессоры. Я ожидал, что они будут запущены одновременно, но это не так. Я измеряю время запуска каждого ядра, и второе ядро запускается после того, как первое завершает свое выполнение. Итак, запуск ядра на4 GPU не быстрее чем1 одиночный графический процессор

Как я могу заставить их работать одновременно?

Это мой код:

cudaSetDevice(0);
GPU_kernel<<< gridDim, threadsPerBlock >>>(d_result_0, parameterA +(0*rateA), parameterB + (0*rateB));
cudaMemcpyAsync(h_result_0, d_result_0, mem_size_result, cudaMemcpyDeviceToHost);

cudaSetDevice(1);
GPU_kernel<<< gridDim, threadsPerBlock >>>(d_result_1, parameterA +(1*rateA), parameterB + (1*rateB));
cudaMemcpyAsync(h_result_1, d_result_1, mem_size_result, cudaMemcpyDeviceToHost);

cudaSetDevice(2);
GPU_kernel<<< gridDim, threadsPerBlock >>>(d_result_2, parameterA +(2*rateA), parameterB + (2*rateB));
cudaMemcpyAsync(h_result_2, d_result_2, mem_size_result, cudaMemcpyDeviceToHost);

cudaSetDevice(3);
GPU_kernel<<< gridDim, threadsPerBlock >>>(d_result_3, parameterA +(3*rateA), parameterB + (3*rateB));
cudaMemcpyAsync(h_result_3, d_result_3, mem_size_result, cudaMemcpyDeviceToHost);

Ответы на вопрос(2)

Ваш ответ на вопрос