使用CUDA,计算量或允许的块数是否有限制?

时间:2017-09-20 03:11:16

标签: cuda multiprocessing gpu-programming

我正在使用Visual Studio 2015(在GeForce GTX 1060上运行)探索CUDA 8.0。

我尝试设置2000个块来运行1024个线程(支持的值)但是在启动内核后我得到了错误代码4。这些块没有做任何异国情调,事实上我甚至没有使用共享内存。我做错了什么?

我的代码如下:

#include "cuda_runtime.h"
#include "device_launch_parameters.h"

#include <stdio.h>
#include <stdlib.h>

__global__
void addKernel()
{
    unsigned int i, ans = 0;
    for (i = 0; i < 100000; i++)
    {
        ans += i;
    }
}

int main()
{
    addKernel << <2000, 1024 >> >();

    cudaError_t cudaStatus = cudaDeviceSynchronize();
    if (cudaStatus != cudaSuccess) {
        fprintf(stderr, "cudaDeviceSynchronize returned error code %d after launching addKernel!\n", cudaStatus);
    }

    cudaDeviceReset();
    getchar();
    return 0;
}

输出:

cudaDeviceSynchronize returned error code 4 after launching addKernel!

当我将块数减少一半时,错误就会消失。有趣的是,我可以通过将内核中循环的100,000次迭代减少到1000来消除错误。

0 个答案:

没有答案