thrust库的sort算法,在x86平台使用就崩溃,x64就没问题,搜了下好像是很早的版本,4开始就有这样的问题了,原因不明。
http://*.com/questions/33220674/thrustsort-crashes-invalid-argument
测试代码
#include <iostream>
#include <ctime> #include <thrust/host_vector.h>
#include <thrust/device_vector.h>
#include <thrust/sort.h>
#include <thrust/reduce.h> using std::cout;
using std::endl; using thrust::host_vector;
using thrust::device_vector; int Sequence()
{
//static int i = 0;
//return ++i; return rand() % ;
} int main()
{
host_vector<int> hv();
device_vector<int> dv(); srand((unsigned int)time()); thrust::generate(hv.begin(), hv.end(), Sequence); for (auto i : hv)
{
cout << i << endl;
} cout << endl; dv = hv; thrust::sort(dv.begin(), dv.end());//will crash on x86,works fine on x64 for (auto i : dv)
{
cout << i << endl;
} cout << endl; float sum = thrust::reduce(dv.begin(), dv.end());//sum
cout << "Sum : " << sum << endl; return ;
}
然后想吐槽一下cuda的编译速度,不知道是不是默认参数的原因,就算编译个简单的hello world,
估计也是史上最慢的编译器没有之一,什么原因让编译如此之慢,越来越对cuda没兴趣了,
打算完成一个Opengl版的cuda简单光线追踪应用就放弃,入门与放弃。