visual-studio-2010 – 错误:“值不能为空.参数名称:pSrcNativeVariant“在VS2010中

当我想用nsight调试程序时,这条消息显示:“Value不能为null.参数名称: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;
}

最佳答案 我遇到了完全相同的问题.在尝试了很多东西后,我发现只需在管理模式下运行一次visual studio就可以解决这个问题.在管理模式下,运行nsight调试器,然后问题就解决了.稍后不需要管理员模式.至少这对我有用,祝你好运.

2014年5月12日新增:
这个问题今天又发生了.这次我通过将平台从Win32切换到X64然后切换回来解决了这个问题

2014年5月22日新增:
它再次发生,我之前尝试的一切都不起作用.最后它以这种方式解决:

I fixed this by deleting the visual studio solution user options file (.suo).

NuGet Package restore failed for project Miscellaneous Files: Value cannot be null or an empty string. Parameter name: root. 0 0

点赞