Cuda, первое соединение с картой (потерянное время)

Когда я запускаю свою программу и общаюсь с моей картой (Tesla K20c), я терял много времени, когда первый раз звоню на карту внутри своего кода, и я не знаю почему. Кажется, каждый раз, когда он пытается найти все возможные карты. если я использую cudasetdevice () для определения моей карты, у меня та же проблема.

пользовательское время (ы): 1.420

Системное время (а): 4.660

Истекшее время (с): 6,490

Системное время представляет это потерянное время. Когда я запускаю свою программу на другом компьютере с GeForce GTX 560 Ti (менее мощная и старая карта), вы видите, что системное время нормальное.

Пользовательское время (ы): 1.620

системное время (ы): 0,700

Прошедшее время (с): 3.120

эта проблема удваивает время программы, и я понимаю, почему. это первый раз, когда у меня такая проблема с картой.

Это потому, что карта слишком свежая и библиотека cuda еще не оптимизирована?

Я использую версию 5.0 cuda.

1 ответ

Решение

Это связано с тем, что загружается драйвер CUDA и каждый раз создается контекст CUDA (среда, в которой все ваши данные и программы хранятся на устройстве), что требует много бухгалтерии. Вы можете принудительно загрузить драйвер, выполнив следующие действия от имени root:

nvidia-smi -pm 1

Который включит так называемый "режим постоянства" (установите его в 0, чтобы отключить). Это ускорит вашу инициализацию.

Другие вопросы по тегам