c++ - NSight 分析器使应用程序崩溃

标签 c++ cuda nsight

我正在尝试使用 NSight Visual Studio 分析器分析以下内核:

__global__ void cuMultiplyMatricesStandard(float* A, float* B, float* C, int matrixSize)
{
    int gridsPerMatrixX = (matrixSize + (blockDim.x*gridDim.x) - 1)/(blockDim.x*gridDim.x);
    int gridsPerMatrixY = (matrixSize + (blockDim.y*gridDim.y) - 1)/(blockDim.y*gridDim.y);
    for (int i = 0; i < (gridsPerMatrixX * gridsPerMatrixY); i++)
    {
        int row = (blockIdx.y * blockDim.y + threadIdx.y) + (i/gridsPerMatrixX)*gridDim.y*blockDim.y;
        int col = (blockIdx.x * blockDim.x + threadIdx.x) + (i%gridsPerMatrixX)*gridDim.x*blockDim.x;
        if (row >= matrixSize || col >= matrixSize) continue;
        float Clocal = 0;
        for (int k = 0; k < matrixSize; k++)
            Clocal += A[row*matrixSize + k]*B[k*matrixSize + col];
        C[row*matrixSize + col] = Clocal;
    }
}

调用代码在http://pastebin.com/kB7c7s9W下如果重要的话。

当我在没有分析的情况下在 NSight 调试器下运行应用程序时,它工作正常(“P”代表“通过”,“F”代表“失败”):

P P P P P P P
P P P P P P P
P P P P P P P
P P P P P P P
P P P P P P P
P P P P P P P
P P P P P P P
Press any key to continue . . .

当我尝试从“NSIGHT -> Start Performance Analysis”选项(使用任何实验配置)分析 CUDA 应用程序时,它崩溃了:

Nsight: Profiling CUDA Kernel cuMultiplyMatricesStandard on device [0] GeForce GTX 760
Nsight:     Saving Pinned Host Memory     0 allocations    0.0 MB
Nsight:     Saving Device Memory          3 allocations    0.0 MB
Nsight:                           Dependency Analysis ( 1/ 9):.
Nsight:                                 Memory Global ( 2/ 9):
Nsight: Experiments complete, total replays needed:  1
CUDA ERROR IN LINE 83 OF FILE C:/Users/Maciej/Documents/Visual Studio 2012/Projects/CUDA-PR/CUDA-PR/Main.cu: unknown error (30)
CUDA ERROR IN LINE 86 OF FILE C:/Users/Maciej/Documents/Visual Studio 2012/Projects/CUDA-PR/CUDA-PR/Main.cu: unknown error (30)
F F F F F F F
F F F F F F F
F F F F F F F
F F F F F F F
F F F F F F F
F F F F F F F
F F F F F F F
Press any key to continue . . .

第83行是内核调用,第86行是后续的cudaMemcpy。然后分析器提示没有注册任何内核启动,我没有得到任何数据。发生了什么事?

最佳答案

Nsight 3.1 在 CUDA 分析器依赖性分析实验中存在一个错误,导致某些内核在下一次重放时崩溃。更新到较新版本的 Nsight 可解决此问题。

关于c++ - NSight 分析器使应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21117225/

相关文章:

c++ - 套接字在 32739 个连接后无法关闭

c++ - 将文件从另一个 .vcproj 链接/包含到现有 .vcproj

debugging - NSight 图形调试无法启动

c++ - 无法使用 cuda 进入 __global__ 函数

ubuntu - 统一内存分析失败

c++ - Range-for-statement 不能用数组函数参数构建范围表达式

c++ - 如何从模板类的方法返回 std::string,无论类型如何?

cuda - 在 GPU 上运行的计算任务是否会对图形性能产生负面影响?

c++ - 在cuda中重新分配不断增长的内存的功能

cuda - 无效的设备符号 cudaMemcpyFromSymbol CUDA