おいも貴婦人ブログ

生物系博士課程満期退学をしたAIエンジニアのブログ。

素人によるCUDAのお勉強。3

blockサイズをhost側から制御する方法。

include <cuda_runtime.h>
#include <stdio.h>

int main(int argc, char **argv){
    int nElem = 1024;

    dim3 block (1024);
    dim3 grid ((nElem+block.x-1)/block.x);

    printf("grid.x %d block.x %d \n",grid.x,block.x);

    block.x = 512;
    grid.x = (nElem+block.x-1)/block.x;
    printf("grid.x %d block.x %d \n",grid.x,block.x);

    block.x = 256;
    grid.x = (nElem+block.x-1)/block.x;
    printf("grid.x %d block.x %d \n",grid.x,block.x);

    block.x = 128;
    grid.x = (nElem+block.x-1)/block.x;
    printf("grid.x %d block.x %d \n",grid.x,block.x);

    cudaDeviceReset();
    return(0);
}

実行結果

grid.x 1 block.x 1024
grid.x 2 block.x 512
grid.x 4 block.x 256
grid.x 8 block.x 128

前回の記事。oimokihujin.hatenablog.com

Professional CUDA C Programming

Professional CUDA C Programming