I have installed CUDA under LINUX and most of time this simple code below throws errors..
// 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);
I compile it with : nvcc pi.cu -arch=sm_11 -o asd.out I have the same problem on Windows so what can be the problem?
