level 3
JT2🎃
楼主
CUDA_SAFE_CALL(cudaMemcpy(d_ipm,h_ipm,mem_size,cudaMemcpyHostToDevice));
CUDA_SAFE_CALL(cudaMemcpy(d_ip,h_ip,mem_size,cudaMemcpyHostToDevice));
CUDA_SAFE_CALL(cudaMemcpy(d_idvv,h_idvv,mem_size,cudaMemcpyHostToDevice));
CUDA_SAFE_CALL(cudaMemcpy(d_is,h_is,mem_size,cudaMemcpyHostToDevice));
CUDA_SAFE_CALL(cudaMemcpy(d_opp,h_opp,mem_size,cudaMemcpyHostToDevice));
dim3 grid( 5,5,1);
dim3 block( 20,20,1);
testKernel<<< grid, block, mem_size >>>( d_ip,d_ipm,d_opp ,d_is ,d_idvv ,dx ,dz, dt );
CUT_CHECK_ERROR("Kernel execution failed");
CUDA_SAFE_CALL( cudaMemcpy( h_opp, d_opp, mem_size, cudaMemcpyDeviceToHost) );
这个dim3改成
dim3 grid( 10,10,1);
dim3 block( 10,10,1);
也行,但是改成
dim3 grid( 20,20,1);
dim3 block( 10,10,1);
就不行了,为什么?
我的意思是一个block有10乘10个线程,一共20乘20个block,为什么运行后显示Cuda error: Kernel execution failed in file 'youxianchafen.cu' in line 72 : invalid argument.
2014年04月09日 08点04分
1
CUDA_SAFE_CALL(cudaMemcpy(d_ip,h_ip,mem_size,cudaMemcpyHostToDevice));
CUDA_SAFE_CALL(cudaMemcpy(d_idvv,h_idvv,mem_size,cudaMemcpyHostToDevice));
CUDA_SAFE_CALL(cudaMemcpy(d_is,h_is,mem_size,cudaMemcpyHostToDevice));
CUDA_SAFE_CALL(cudaMemcpy(d_opp,h_opp,mem_size,cudaMemcpyHostToDevice));
dim3 grid( 5,5,1);
dim3 block( 20,20,1);
testKernel<<< grid, block, mem_size >>>( d_ip,d_ipm,d_opp ,d_is ,d_idvv ,dx ,dz, dt );
CUT_CHECK_ERROR("Kernel execution failed");
CUDA_SAFE_CALL( cudaMemcpy( h_opp, d_opp, mem_size, cudaMemcpyDeviceToHost) );
这个dim3改成
dim3 grid( 10,10,1);
dim3 block( 10,10,1);
也行,但是改成
dim3 grid( 20,20,1);
dim3 block( 10,10,1);
就不行了,为什么?
我的意思是一个block有10乘10个线程,一共20乘20个block,为什么运行后显示Cuda error: Kernel execution failed in file 'youxianchafen.cu' in line 72 : invalid argument.