Współbieżność w wykonaniach CUDA z wieloma GPU

Używam funkcji jądra cuda na wielu systemach GPU, z4 GPU. Spodziewałem się, że zostaną uruchomione jednocześnie, ale tak nie jest. Zmierzam czas rozpoczęcia każdego jądra, a drugie jądro zaczyna się po zakończeniu pierwszego. Tak więc uruchomienie jądra4 GPU nie jest szybszy niż1 pojedynczy GPU.

Jak mogę sprawić, by działały jednocześnie?

To jest mój kod:

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);

questionAnswers(2)

yourAnswerToTheQuestion