错误:VS2010中的“值不能为空。参数名称:pSrcNativeVariant”

时间:2013-04-02 06:03:53

标签: visual-studio-2010 cuda nsight

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

error message

这是我的代码:

#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;
}

2 个答案:

答案 0 :(得分:2)

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

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

来解决它

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

  

我通过删除visual studio解决方案用户选项文件(.suo)来修复此问题。

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

答案 1 :(得分:0)

NuGet包存在问题。 解决方案:

  1. 如果它已过期(重新启动),请更新它。
  2. 卸载并重新安装(重新启动)。
  3. 打开“工具/ NuGet程序包管理器/程序包管理器控制台”下的“程序包管理器控制台”,键入任何命令以确保其正常工作。
  4. 问题应该解决。