Cuda 推力::排序编译时间很长

Cuda 推力::排序编译时间很长,cuda,thrust,Cuda,Thrust,我正在尝试使用推力编译一段示例代码,以帮助学习一些CUDA 我使用的是VisualStudio2010,我还需要编译其他示例。然而,当我编译这个示例时,编译需要10分钟以上。我有选择地注释掉了行,并发现这是一个永远需要的推力::排序行(注释掉这一行后,编译大约需要5秒钟) 我在某个地方找到了一篇文章,其中谈到了sort在struch中编译的速度有多慢,这是struch开发团队做出的决定(运行时速度快了3倍,但编译时间更长)。但那是在2008年底 知道为什么要花这么长时间吗 另外,我在一台具有以下

我正在尝试使用推力编译一段示例代码,以帮助学习一些CUDA

我使用的是VisualStudio2010,我还需要编译其他示例。然而,当我编译这个示例时,编译需要10分钟以上。我有选择地注释掉了行,并发现这是一个永远需要的推力::排序行(注释掉这一行后,编译大约需要5秒钟)

我在某个地方找到了一篇文章,其中谈到了sort在struch中编译的速度有多慢,这是struch开发团队做出的决定(运行时速度快了3倍,但编译时间更长)。但那是在2008年底

知道为什么要花这么长时间吗

另外,我在一台具有以下规格的机器上编译,所以它不是一台速度慢的机器

i7-2600k@4.5 ghz
16 GB DDR3@1833 mhz
6 GB/s 1TB驱动器的Raid 0

根据请求,这是Visual Studio正在调用的生成字符串

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v3.2\bin\nvcc.exe“-ccbin”C:\Program Files(x86)\Microsoft Visual Studio 9.0\VC\bin“-I”C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v3.2\include“-G0--keep dir“Debug\”--maxrregcount=32--machine 64--compiler-D\u NEXUS\u Debug-g-g-Xcompiler”/EHsc/nologo/Od/Zi/MTd“-o”Debug\kernel.obj“C:\Users\Rob\Desktop\VS2010Test\VS2010Test\VS2010Test\kernel.cpp”-清除

范例

#include <thrust/host_vector.h>
#include <thrust/device_vector.h>
#include <thrust/sort.h>
int main(void)
{
    // generate 16M random numbers on the host
    thrust::host_vector<int> h_vec(1 << 24);
    thrust::generate(h_vec.begin(), h_vec.end(), rand);
    // transfer data to the device
    thrust::device_vector<int> d_vec = h_vec;
    // sort data on the device
    thrust::sort(d_vec.begin(), d_vec.end());
    // transfer data back to host
    thrust::copy(d_vec.begin(), d_vec.end(), h_vec.begin());
    return 0;
}
#包括
#包括
#包括
内部主(空)
{
//在主机上生成16M随机数

host::host_vector h_vec(1CUDA 3.2中的编译器未针对使用调试模式(即
nvcc-G0
)编译长而复杂的程序进行优化,如
sort
)。在这种情况下,您会发现CUDA 4.0的速度要快得多。删除
-G0
选项也会大大减少编译时间。

似乎有按键进行推力排序的功能,尽管我个人不记得它花费了那么多时间进行排序。也许这有助于通知他们这些极端情况?但如果编译器的问题可能没有多少。它花了很长时间,但是10分钟似乎有点太多。你能发布你正在使用的编译选项吗?我现在不在电脑上,但我只是通过VisualStudio使用默认设置。我刚刚安装了英伟达CUDA SDK和工具包,安装了VC90编译器。(VS2008快速版),从Nvidia网站的一个推力示例中复制了代码并试图编译它。我将在稍后发布确切的编译器标志没有答案?!在我开始在程序中使用推力后,我的编译时间也很长。我在Ubuntu上使用CUDA 4.0。在CUDA 4.1上,在2GHz上编译一个带有推力::sort的程序需要一分钟多一点的时间,4GB、Q6600、Windows7计算机。您可以将推力头移动到预编译头中,或者将整个排序函数塞入单独的.cu文件中。