0
我是CUDA的新手。我只是嘗試使用Thrust對數組進行排序。使用推力,CUDA緩慢排序
clock_t start_time = clock();
thrust::host_vector<int> h_vec(10);
thrust::generate(h_vec.begin(), h_vec.end(), rand);
thrust::device_vector<int> d_vec = h_vec;
thrust::sort(d_vec.begin(), d_vec.end());
//thrust::sort(h_vec.begin(), h_vec.end());
clock_t stop_time = clock();
printf("%f\n", (double)(stop_time - start_time)/CLOCKS_PER_SEC);
時間走上排序d_vec
是7.4S和時間走上排序h_vec
是0.4秒
我假設在設備內存的並行計算,所以它不應該是更快?
最有可能您正在測量[上下文創建時間](http://stackoverflow.com/q/10415204/5085250)。另外,你不能指望在高度並行的體系結構上,* small *向量排序得更快。嘗試使用矢量大小>> 10000. – havogt
是的,你是對的,這些時間是第一次執行。此外,我嘗試了50k點,我在主機和設備上的時間都是0.12s。當尺寸接近100000時差異變大。我可以假設使用h_vec進行排序在CPU上嗎? – Syed
是的,對'h_vec'進行排序是在主機上完成的。也許你應該閱讀[推力快速入門指南](https://github.com/thrust/thrust/wiki/Quick-Start-Guide),其中討論推力算法的發佈。 –