Связывание со сторонними библиотеками 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;
}

результаты следующие:

  • Связано с:-lcudart -lnpp -lcufft -lcublas -lcusparse -lcurand время работы :5,852449

  • Связано с:-lcudart -lnpp -lcufft -lcublas время работы :1.425120

  • Связано с:-lcudart -lnpp -время работы lcufft :0,905424

  • Связано с:-время работы lcudart :0,394558

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

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

9
задан talonmies 26 July 2012 в 08:34
поделиться