我有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秒..但是当我第二次运行它时,它正在快速运行。 什么问题?
答案 0 :(得分:1)
最可能的原因是,在第一次运行期间,您的操作系统正在加载CUDA库并在实际初始化CUDA上下文之前执行一些其他技术任务。在第二次运行时,所有内容都已加载,上下文更快。