Почему инициализация графического процессора на архитектуре Kepler занимает очень много времени и как это исправить?

При запуске моего приложения самый первый cuda_malloc занимает 40 секунд, что связано с инициализацией графического процессора. Когда я строю в режиме отладки, это сокращается до 5 секунд, а когда я запускаю тот же код на устройстве Fermi, это занимает гораздо меньше секунды (в моем случае даже не стоит измерять).

Теперь самое смешное, что если я компилирую для этой конкретной архитектуры, используя флаг sm35 вместо sm20, он снова становится быстрым. Поскольку я пока не должен использовать какие-либо новые функции sm35, как я могу скомпилировать для sm20 и избежать такой огромной задержки? Также мне любопытно, что вызывает эту задержку? Машинный код перекомпилируется на лету в код sm35?

Пс. Я работаю в Windows, но мой коллега столкнулся с той же проблемой, вероятно, в Windows. Устройство Кеплер, версия драйвера 320.


person ikku100    schedule 18.10.2013    source источник


Ответы (1)