1

我有 test.cu 文件,它正在用 NVCC 编译

void sort()
{

thrust::host_vector<int> dat1(50);
thrust::generate(dat1.begin(),dat1.end(),rand);

for(int i=0; i<dat1.size(); i++)
{
    std::cout << dat1[i] << std::endl;
}

thrust::device_vector<int> dev_vec1 = dat1;


thrust::sort(dev_vec1.begin(),dev_vec1.end());
thrust::copy(dev_vec1.begin(),dev_vec1.end(),dat1.begin());

for(int i=0; i<dat1.size(); i++)
{
    std::cout << dat1[i] << std::endl;
}

}


#include "test.cuh"


int main()
{
   sort();
   return 0;
}

但是在设备上进行排序需要 40 秒。但是当我第二次运行它时,它运行得很快。什么问题?

4

1 回答 1

1

最可能的原因是,在首次运行期间,您的操作系统正在加载 CUDA 库并在实际初始化 CUDA 上下文之前执行一些其他技术任务。在第二次运行时,所有内容都已加载,并且上下文初始化更快。

于 2012-11-30T14:45:46.317 回答