How to use 2D Arrays in CUDA?

后端 未结 2 1618
故里飘歌
故里飘歌 2020-11-27 02:55

I am new to CUDA. How to allocate 2D array of size MXN ?. How to traverse that array in CUDA?. Give me a sample code. .......................................................

2条回答
  •  再見小時候
    2020-11-27 03:24

    The best way would be storing a two-dimensional array A in its vector form. For example you have a matrix A size nxm, and it's (i,j) element in pointer to pointer representation will be

    A[i][j] (with i=0..n-1 and j=0..m-1). 
    

    In a vector form you can write

    A[i*n+j] (with i=0..n-1 and j=0..m-1).
    

    Using one-dimensional array in this case will simplify the copy process, which would be simple:

    double *A,*dev_A; //A-hous pointer, dev_A - device pointer;
    A=(double*)malloc(n*m*sizeof(double));
    cudaMalloc((void**)&dev_A,n*m*sizeof(double));
    cudaMemcpy(&dev_A,&A,n*m*sizeof(double),cudaMemcpyHostToDevice); //In case if A is double
    

提交回复
热议问题