我在LINUX下安装了CUDA,大部分时间下面这个简单的代码会引发错误..
// Kernel that executes on the CUDA device
__global__ void square_array(float *a, int N)
{
int idx = blockIdx.x * blockDim.x + threadIdx.x;
if (idx<N) a[idx] = a[idx] * a[idx];
}
// main routine that executes on the host
int main(void)
{
cudaSetDevice(0);
cudaDeviceSynchronize();
cudaThreadSynchronize();
cudaError_t cudaError;
float *a_h, *a_d; // Pointer to host & device arrays
const int N = 10; // Number of elements in arrays
size_t size = N * sizeof(float);
a_h = (float *)malloc(size); // Allocate array on host
cudaError=cudaMalloc((void **) &a_d, size); // Allocate array on device
if(cudaError!=cudaSuccess)
{
printf("asdasd1");
}
//// Initialize host array and copy it to CUDA device
for (int i=0; i<N; i++) a_h[i] = (float)i;
cudaError=cudaMemcpy(a_d, a_h, size, cudaMemcpyHostToDevice);
if(cudaError!=cudaSuccess)
{
printf("asdasd2");
}
//// Do calculation on device:
int block_size = 4;
int n_blocks = N/block_size + (N%block_size == 0 ? 0:1);
square_array <<< n_blocks, block_size >>> (a_d, N);
//// Retrieve result from device and store it in host array
cudaMemcpy(a_h, a_d, sizeof(float)*N, cudaMemcpyDeviceToHost);
//// Print results
for (int i=0; i<N; i++) printf("%d %f\n", i, a_h[i]);
//// Cleanup
free(a_h); cudaFree(a_d);
我用以下代码编译它:nvcc pi.cu -arch = sm_11 -o asd.out 我在Windows上遇到同样的问题,那可能是什么问题?
答案 0 :(得分:1)
从你所有的那些暗示之后我重新安装了NVIDIA驱动程序和CUDA;)我认为它有效;))
Mon Dec 15 23:43:23 2014
+------------------------------------------------------+
| NVIDIA-SMI 340.29 Driver Version: 340.29 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GeForce 8500 GT Off | 0000:01:00.0 N/A | N/A |
| N/A 66C P0 N/A / N/A | 53MiB / 511MiB | N/A Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Compute processes: GPU Memory |
| GPU PID Process name Usage |
|=============================================================================|
| 0 Not Supported |
+-----------------------------------------------------------------------------+
代码不会抛出任何错误;) THX ALL:))