CUDA4.2、Nsight 2.2中Nsight调试实例的CUDPP2.0调试是否正确?

CUDA4.2、Nsight 2.2中Nsight调试实例的CUDPP2.0调试是否正确?,cuda,visual-studio-debugging,Cuda,Visual Studio Debugging,我已经将一个项目从CUDA 4.0、Nsight 2.0升级到CUDA 4.2、Nsight 2.2,在CUDA 4.2上重新编译CUDPP。升级后,我可以正确使用断点和step设备代码,但当我的代码调用cudppScan()函数时,即使函数正确执行操作并返回正确的值前缀和,Nsight也会报告访问冲突。在没有Nsight的情况下运行的发布或调试代码不会出现问题。这个问题可以通过以下代码片段重现 #include <cassert> #include <cudpp/cudpp.

我已经将一个项目从CUDA 4.0、Nsight 2.0升级到CUDA 4.2、Nsight 2.2,在CUDA 4.2上重新编译CUDPP。升级后,我可以正确使用断点和step设备代码,但当我的代码调用cudppScan()函数时,即使函数正确执行操作并返回正确的值前缀和,Nsight也会报告访问冲突。在没有Nsight的情况下运行的发布或调试代码不会出现问题。这个问题可以通过以下代码片段重现

#include <cassert>
#include <cudpp/cudpp.h>

//Cudpp testing
int main(int argc, char* argv[])
{
#define ARRAY_SIZE 32

unsigned int uiArraySize = sizeof(unsigned int)*ARRAY_SIZE;
unsigned int h_auiTest[ARRAY_SIZE];
for(int i = 0 ; i < ARRAY_SIZE ; ++i)
{
    h_auiTest[i] = 1;
}

unsigned int *d_auiTest;
GPUMALLOC((void**)&d_auiTest , uiArraySize);
TOGPU(d_auiTest , h_auiTest , uiArraySize);

unsigned int *d_auiOut;
GPUMALLOC((void**)&d_auiOut , uiArraySize);

CUDPPHandle cudppContext;
CUDPPHandle scanPlan;

CUDPP_SAFE_CALL(cudppCreate(&cudppContext));
CUDPPConfiguration scanConfig;
scanConfig.algorithm = CUDPP_SCAN;
scanConfig.datatype  = CUDPP_UINT;
scanConfig.op        = CUDPP_ADD;
scanConfig.options   = CUDPP_OPTION_EXCLUSIVE | CUDPP_OPTION_FORWARD;

cudppPlan(cudppContext , &scanPlan, scanConfig, ARRAY_SIZE , 1, 0);

cudppScan(scanPlan, d_auiOut, d_auiTest , ARRAY_SIZE);

FROMGPU(h_auiTest , d_auiOut , uiArraySize);

for(int i = 0 ; i < ARRAY_SIZE ; ++i)
{
    assert(h_auiTest[i] == i);
}
}
#包括
#包括
//Cudpp测试
int main(int argc,char*argv[])
{
#定义数组大小为32
无符号整数uiArraySize=sizeof(无符号整数)*数组大小;
无符号整数h_auiTest[数组大小];
对于(int i=0;i
针对这个问题,我得到的唯一解决方案是将我的项目降级到CUDA 4.0