3
我從我的MATLAB實現中調用了CUDA內核;但是我的CPU結果比我的GPU實現更快。我知道更大的矩陣可以獲得更好的性能,但是當我嘗試大尺寸時,我的GPU性能也很低。從MATLAB調用內核低性能
的結果是: CPU:0.000006 GPU:0.00134 我的內核和MATLAB代碼如下:提前
謝謝!
matrix.cu
__global__ void matrix_mult2(double *A, double *B, double * C) {
int x = threadIdx.x;
C[x] = A[x] * B[x];
}
main.m
kernel = parallel.gpu.CUDAKernel('matrix_mult2.ptx', ...
'matrix_mult2.cu');
kernel.ThreadBlockSize = [25,1,1];
kernel.GridSize = [1,1];
A = parallel.gpu.GPUArray.rand(5,5,'double');
B = parallel.gpu.GPUArray.rand(5,5,'double');
C = parallel.gpu.GPUArray.zeros(5,5);
C = feval(kernel,A,B,C);
結果的尺寸是多少? – talonmies
我試圖確定是否對於相對較小的矩陣我是否收到較低的性能,並且還試圖確定cuda線程的最佳配置,因爲這可能會影響性能。 –
謝謝您的回覆! 我也嘗試過大矩陣621 x 1176,而GPU(0.00834)的性能仍然比CPU慢(0.001513) Where, kernel.ThreadBlockSize = [1024,1,1]; kernel.GridSize = [713,1]; tic C = feval(kernel,A,B,C); wait(gpuDevice(1)); C = gather(C) time = toc 我的CPU版本: 是A = rand(621,1176); B = rand(621,1176); C = rand(621,1176); 抽動 C = A. * B TOC 在先進的感謝 –