4

当我想用 nsight 调试程序时,此消息显示:“值不能为空。参数名称:pSrcNativeVariant”。当我重建项目时,此错误未显示。但我必须为调试程序重复执行此操作。以前此操作不需要。

错误信息

这是我的代码:

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

#include <stdio.h>
#include <iostream>
using namespace std;


#define COLUMNS 3
#define ROWS 2

__global__ void add(int *a, int *b, int *c)
{
*a=345678;
int x = blockIdx.x;
int y = blockIdx.y;
int i = (COLUMNS*y) + x;
c[i] = a[i] + b[i];
}

int main()
{
int a[ROWS][COLUMNS], b[ROWS][COLUMNS], c[ROWS][COLUMNS];
int *dev_a, *dev_b, *dev_c;
int *x;
int r;
x=&r;
cudaMalloc((void **) &dev_a, ROWS*COLUMNS*sizeof(int));
cudaMalloc((void **) &dev_b, ROWS*COLUMNS*sizeof(int));
cudaMalloc((void **) &dev_c, ROWS*COLUMNS*sizeof(int));

for (int y = 0; y < ROWS; y++)    // Fill Arrays
    for (int x = 0; x < COLUMNS; x++)
    {
        a[y][x] = x;
        b[y][x] = y;
    }

    cudaMemcpy(dev_a, a, ROWS*COLUMNS*sizeof(int), 
        cudaMemcpyHostToDevice);
    cudaMemcpy(dev_b, b, ROWS*COLUMNS*sizeof(int), 
        cudaMemcpyHostToDevice);
    dim3 grid(COLUMNS,ROWS);

    add<<<grid,1>>>(dev_a, dev_b, dev_c);

    cudaMemcpy(c, dev_c, ROWS*COLUMNS*sizeof(int), 
        cudaMemcpyDeviceToHost);
    for (int y = 0; y < ROWS; y++)    // Output Arrays
    {
        for (int x = 0; x < COLUMNS; x++)
        {
            printf("[%d][%d]=%d ",y,x,c[y][x]);
        }
        printf("\n");
    }
    return 0;
}
4

2 回答 2

2

我遇到了完全相同的问题。在尝试了很多事情之后,我发现只需在管理模式下运行一次visual studio就可以简单地解决这个问题。在管理员模式下,运行nsight调试器,问题就解决了。以后不需要管理员模式。至少这对我有用,祝你好运。

2014 年 5 月 12 日添加:今天再次出现此问题。这次我通过将平台从Win32切换到X64然后切换回来解决了它

2014 年 5 月 22 日添加:它再次发生,我之前尝试的所有方法这次都不起作用。最后是这样解决的:

我通过删除 Visual Studio 解决方案用户选项文件 (.suo) 解决了这个问题。

项目杂项文件的 NuGet 包还原失败:值不能为 null 或空字符串。参数名称:root。0 0

于 2014-04-26T09:22:23.777 回答
0

It is a problem with the NuGet package. Solution:

  1. Update it if it is out-of-date(restart).
  2. Uninstall and reinstall(restart).
  3. Open the "Package Manager Console", which is under "Tools/NuGet Package Manager/Package Manager Console", type any command to make sure it works.

The problem should be solved.

于 2014-09-17T17:47:32.810 回答