Связывание со сторонними библиотеками CUDA замедляет работу cudaMalloc

Не секрет, что на CUDA 4.x первый звонокcudaMalloc может быть смехотворно медленным (о чем сообщалось несколько раз), по-видимому, ошибка в драйверах CUDA.

Недавно я заметил странное поведение: время работыcudaMalloc напрямую зависит от того, сколько сторонних библиотек CUDA я связал со своей программой (обратите внимание, что я НЕ пользуюсь этими библиотеками, просто свяжу с ними мою программу)

Я провел несколько тестов, используя следующую программу:

int main() {
  cudaSetDevice(0);
  unsigned int *ptr = 0;
  cudaMalloc((void **)&ptr, 2000000 * sizeof(unsigned int));   
  cudaFree(ptr);
return 1;
}

Результаты приведены ниже:

Linked with: -lcudart -lnpp -lcufft -lcublas -lcusparse -lcurand running time: 5.852449

Linked with: -lcudart -lnpp -lcufft -lcublas running time: 1.425120

Linked with: -lcudart -lnpp -lcufft running time: 0.905424

Linked with: -lcudart running time: 0.394558

Согласно "gdb", время действительно входит в мой cudaMalloc, поэтому оно не вызывается некоторыми процедура инициализации библиотеки ..

Интересно, есть ли у кого-нибудь правдоподобное объяснение этому?

Ответы на вопрос(1)

Ваш ответ на вопрос