推送包含扫描在调试版本中完成,但在发布版本中失败

时间:2013-08-09 09:52:11

标签: debugging release thrust

我在设备矢量上使用简单的推力::包含扫描调用。在调试版本中,执行时没有错误。但是,使用发布版本执行时会遇到错误。

此外,这似乎只会影响thrust :: device<>载体

  

在抛出一个实例后终止调用   'thrust :: system :: system_error'what():未指定的启动失败

我正在使用eclipse nsight来执行调试和发布版本。

#include <iostream>
using namespace std;

#include <thrust/scan.h>
#include <thrust/device_vector.h>

int main(void) {

    cout << "hello\n";

    int data[6] = {1, 0, 2, 2, 1, 3};

    thrust::inclusive_scan(data, data + 6, data); // in-place scan

    for(int i=0;i<6;i++) cout<< data[i] << "\n";

    cout << "inclusive scan on a device vector\n";

    thrust::device_vector<int> d_C_0(6);

    d_C_0[0] = 1;
    d_C_0[1] = 0;
    d_C_0[2] = 2;
    d_C_0[3] = 2;
    d_C_0[4] = 1;
    d_C_0[5] = 3;

    thrust::inclusive_scan(d_C_0.begin(), d_C_0.begin() + 6, d_C_0.begin()); // in-place scan

    for(int i=0;i<6;i++) cout<< d_C_0[i] << "\n";

    return 0;
}

1 个答案:

答案 0 :(得分:0)

我的猜测是, debug 案例失败但传入发布案例。

对于调试版本,Nsight EE通常包含-G编译器开关。

推力(设备代码)often incompatible-G开关。

如果从编译命令中删除-G开关,我相信您的代码将正常运行 - 它适用于我。

如果这不能解决问题,请提供Nsight EE针对每种情况使用的完整编译命令行(调试和发布)以及您正在运行的GPU,以及CUDA版本(5.0或5.5)。