Варианты компиляции для CUDA в VS2010
Я пытаюсь настроить CUDA6.0 с помощью Visual Studio 2010. Я создал проект с использованием среды выполнения CUDA 6.0. При компиляции мне нужно изменить / добавить какие-либо параметры? Поскольку мой код CUDA работает медленнее, чем последовательная версия, есть ли вероятность того, что код не будет выполняться параллельно (скажем, графический процессор становится медленным ЦП...), независимо от других возможностей, например, двойной точности, издержек и т. Д.?
Большое спасибо, XF
1 ответ
Судя по всему, вы просто взяли какой-то последовательный код и скомпилировали его, думая, что он будет работать.
Но с предположением, что у вас на самом деле есть параллельный код, вы можете убедиться, что вы
- Используйте архитектуру вашей карты. В свойствах -> CUDA C/C++ -> Устройство -> Генерация кода убедитесь, что вы указали правильное значение. Для моей карты у меня есть compute_35,sm_35. Если ваша карта поддерживает Maxwell, вы можете сделать compute_50,sm_50.
- Вы можете изменить свою оптимизацию в разделе **-> CUDA C/C++ -> Оптимизация **
- Убедитесь, что вы не компилируете с отладкой.
- Если все это не помогло, вы должны использовать NSIGHT Analysis Tool (или визуальный профилировщик) в своем приложении, чтобы увидеть, где у вас могут возникнуть некоторые проблемы. Убедитесь, что у вас нет конфликтов с банком, если вы используете общую память, уменьшаете расхождение и т. Д. Визуальный профилировщик довольно хорошо говорит вам, что не так.
Вы также должны проверить доклады GTC по оптимизации [ссылка на pdf] (мой старый профессор). Он охватывает некоторые основные оптимизации, которые вы можете выполнить, чтобы ускорить работу вашего кода.
О переговорах за последние несколько лет GTC можно найти здесь [ ссылка]. У них есть несколько обновлений оптимизации, рассказывается о различных инструментах и так далее.