Win7 VS2013环境cuda_7.5.18的一些坑
thrust库的sort算法,在x86平台使用就崩溃,x64就没问题,搜了下好像是很早的版本,4开始就有这样的问题了,原因不明。
http://stackoverflow.com/questions/33220674/thrustsort-crashes-invalid-argument
测试代码
1 #include <iostream> 2 #include <ctime> 3 4 5 #include <thrust/host_vector.h> 6 #include <thrust/device_vector.h> 7 #include <thrust/sort.h> 8 #include <thrust/reduce.h> 9 10 11 12 using std::cout; 13 using std::endl; 14 15 using thrust::host_vector; 16 using thrust::device_vector; 17 18 int Sequence() 19 { 20 //static int i = 0; 21 //return ++i; 22 23 return rand() % 11; 24 } 25 26 27 int main() 28 { 29 host_vector<int> hv(10); 30 device_vector<int> dv(10); 31 32 srand((unsigned int)time(0)); 33 34 thrust::generate(hv.begin(), hv.end(), Sequence); 35 36 37 for (auto i : hv) 38 { 39 cout << i << endl; 40 } 41 42 cout << endl; 43 44 dv = hv; 45 46 thrust::sort(dv.begin(), dv.end());//will crash on x86,works fine on x64 47 48 for (auto i : dv) 49 { 50 cout << i << endl; 51 } 52 53 cout << endl; 54 55 float sum = thrust::reduce(dv.begin(), dv.end());//sum 56 cout << "Sum : " << sum << endl; 57 58 59 60 61 return 0; 62 }
然后想吐槽一下cuda的编译速度,不知道是不是默认参数的原因,就算编译个简单的hello world,
估计也是史上最慢的编译器没有之一,什么原因让编译如此之慢,越来越对cuda没兴趣了,
打算完成一个Opengl版的cuda简单光线追踪应用就放弃,入门与放弃。