简单CUDA推力程序错误

简单CUDA推力程序错误,cuda,thrust,Cuda,Thrust,我只是写了一个简单的CUDA推力程序,但当我运行它的时候。我得到这个错误:位置0x0037f99c处的推力::系统::系统_错误 有人能帮我弄清楚为什么会这样吗 #include<thrust\host_vector.h> #include<thrust\device_vector.h> #include<iostream> using namespace std; using namespace thrust; int main() { thrus

我只是写了一个简单的CUDA推力程序,但当我运行它的时候。我得到这个错误:位置0x0037f99c处的推力::系统::系统_错误

有人能帮我弄清楚为什么会这样吗

#include<thrust\host_vector.h>
#include<thrust\device_vector.h>
#include<iostream>
using namespace std;
using namespace thrust;
int main()
{

    thrust::host_vector<int> h_vec(3);
    h_vec[0]=1;h_vec[1]=2;h_vec[2]=3;
    thrust::device_vector<int> d_vec(3) ;
    d_vec= h_vec;
    int h_sum = thrust::reduce(h_vec.begin(), h_vec.end());
    int d_sum = thrust::reduce(d_vec.begin(), d_vec.end());
return 0;
}
#包括
#包括
#包括
使用名称空间std;
使用名称空间推力;
int main()
{
推力:主机向量h向量(3);
h_-vec[0]=1;h_-vec[1]=2;h_-vec[2]=3;
推力:装置矢量d矢量(3);
d_vec=h_vec;
int h_sum=推力::减少(h_vec.begin(),h_vec.end());
int d_sum=推力::减少(d_vec.begin(),d_vec.end());
返回0;
}

几点建议:

  • 如果使用
    -G
    编译代码时遇到问题,请尝试不使用
    -G
    编译代码
  • 你可以,来获取更多信息
  • 始终建议您根据所使用的GPU的体系结构编译代码。因此,如果您使用的是cc2.0 GPU,请使用
    -arch=sm_20
    进行编译。如果您使用的是cc3.0 GPU,请使用
    -arch=sm_30
    等进行编译
  • 最后,建议构建一个64位项目。在windows上,您可以选择release/x64项目

几点建议:

  • 如果使用
    -G
    编译代码时遇到问题,请尝试不使用
    -G
    编译代码
  • 你可以,来获取更多信息
  • 始终建议您根据所使用的GPU的体系结构编译代码。因此,如果您使用的是cc2.0 GPU,请使用
    -arch=sm_20
    进行编译。如果您使用的是cc3.0 GPU,请使用
    -arch=sm_30
    等进行编译
  • 最后,建议构建一个64位项目。在windows上,您可以选择release/x64项目

可能您没有为您的gpu架构生成正确的代码类型。我能够成功编译并运行您的代码。请检查上面JaredHoberock给出的建议。我使用CUDA向导生成项目。我认为代码的生成没有问题。系统错误是由“int d_sum=推力::reduce(d_vec.begin(),d_vec.end());”生成的。错误信息是:同步:启动\关闭\按\值:未指定的启动失败。顺便说一句,在编译程序的时候,我收到了很多警告,比如:假设全局内存空间,无法判断指针指向什么。我使用内存检查来检查程序。它坠毁了。我的GPU是Quadro K2000,CPU是Xeon E5。发生了什么?当我使用CUSP库时。它在生成稀疏矩阵时也会崩溃--@Jared HoberockOh问题解决了。正如您所建议的,我将设备代码生成模式更改为“compute_20,sm_20”。它起作用了。非常感谢@Jared Hoberock是否有人想添加此作为答案,以便我们可以从未回答列表中删除此项?可能您没有为您的gpu架构生成正确类型的代码。我能够成功编译并运行您的代码。请检查上面JaredHoberock给出的建议。我使用CUDA向导生成项目。我认为代码的生成没有问题。系统错误是由“int d_sum=推力::reduce(d_vec.begin(),d_vec.end());”生成的。错误信息是:同步:启动\关闭\按\值:未指定的启动失败。顺便说一句,在编译程序的时候,我收到了很多警告,比如:假设全局内存空间,无法判断指针指向什么。我使用内存检查来检查程序。它坠毁了。我的GPU是Quadro K2000,CPU是Xeon E5。发生了什么?当我使用CUSP库时。它在生成稀疏矩阵时也会崩溃--@Jared HoberockOh问题解决了。正如您所建议的,我将设备代码生成模式更改为“compute_20,sm_20”。它起作用了。非常感谢@Jared Hoberock是否有人想添加此作为答案,以便我们从未答复列表中删除此项?