Я пытаюсь скомпилировать блок примера кода с помощью Thrust, чтобы помочь изучить CUDA.
Я использую Visual Studio 2010, и у меня есть другие примеры для компиляции. Однако, когда я компилирую этот пример, компиляция занимает более 10 минут. Я выборочно закомментировал строки и выяснил, что это строка Thrust::sort, которая выполняется вечно (с этой одной закомментированной строкой компиляция занимает около 5 секунд).
Я нашел где-то сообщение, в котором говорилось о медленной компиляции sort в Thrust, и это было решение, которое приняла команда разработчиков Thrust (в 3 раза быстрее во время выполнения, но компилируется дольше). Но тот пост был в конце 2008 года.
Любая идея, почему это занимает так много времени?
Кроме того, я компилирую на машине со следующими характеристиками, так что это не медленная машина.
i7-2600k @ 4,5 ГГц
16 ГБ DDR3 @ 1833 МГц
RAID 0 из дисков 6 ГБ/с 1 ТБ
В соответствии с запросом это строка сборки, которую, похоже, вызывает 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 --compile -D_NEXUS_DEBUG -g -Xcompiler "/EHsc /nologo/ Od /Zi /MTd " -o "Debug\kernel.obj" "C:\Users\Rob\Desktop\VS2010Test\VS2010Test\VS2010Test\kernel.cpp" -clean
Пример
#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;
}