CUDA під Windows поради на початку роботи
Софт: Windows 7, 64bit; CUDA Toolkit 6.0; Microsoft Visual Studio 2008
Почав освоювати CUDA з читання книги:
Сандерс Дж., Кендрот Е. Технологія CUDA у прикладах. Введення у програмування графічних процесорів. - М.: ДМК Прес, 2013. - 232 с.: іл. - ISBN: 978-5-94074-504-4.
Що необхідно для роботи з CUDA
Для роботи з CUDA необхідно мати:
Пункти 1-3 у мене були, включаючи компілятор із набору Visual Studio 2008.
CUDA Toolkit можна завантажити тут. Разом з ним постачаються численні приклади, які перебувають у папці
C:\ProgramData\NVIDIA Corporation\CUDA Samples\v6.0
У папці 0_Simple\template знаходиться заготовка для стандартного проекту CUDA.
Як створювати проекти CUDA у Visual Studio та запускати приклади з книги
У VS при створенні нового проекту вибираємо тип NVIDIA/CUDA 6.0 та із шаблонів: CUDA Runtime 6.0.
Після цього VS формує заготівлю проекту, що містить єдиний вихідний файл kernel.cu. Він нам не потрібний. Замість нього вставляємо приклад із книги:
Розширення файлу .CU має значення! Тільки в таких файлах можна використовувати CUDA-розширення мови C++.
Щоб налаштувати підсвічування синтаксису у файлах .CU як у C++, потрібно у вікні Tools -> Options -> Text Editor -> File Extension вказати розширення .cu та у спискуEditor: —Microsoft Visual C++. Після перезапуску VS отримаємо підсвічування синтаксису.
Повідомлення про помилки
У прикладі з Глави 4 "Обчислення фракталу Джуліа на GPU" (який, взагалі кажучи, називається безліч Жюліа), при компіляції з'являються повідомлення виду:
Для виправлення потрібно додати кваліфікатор __device__ до конструктора структури:
Вирішення проблеми "Відеодрайвер nVidia перестав відповідати і був успішно відновлений"
Огляд можливих способів вирішення цієї проблеми наведено тут. У моєму випадку допоміг наступний рецепт.
Необхідно налаштувати у системному реєстрі два параметри:
- TdrLevel – керує відновленням. За замовчуванням дорівнює "3", що означає "TdrLevelRecover - Recover on timeout", тобто автоматичне відновлення після закінчення часу затримки (TdrDelay). Значення "0" відповідає "TdrLevelOff - Detection disabled", тобто відключення детектування помилок драйвера.
- TdrDelay – час затримки (у секундах), інакше час реагування на бездіяльність драйвера. Значення за промовчанням дорівнює "2". У разі відключення детектування помилок ( TdrLevel = 0 ) значення TdrDelay ігнорується.
Бажано не відключати перевірку помилок, а збільшити час затримки, встановивши його рівним 3 або більше секунд. Значення підбирається експериментально: можна почати з 10 і поступово зменшувати час затримки.
Зміни у реєстрі набудуть чинності після перезавантаження системи.
В результаті отримаємо:

Читайте також
Коментарі
Дмитро Храмов Комп'ютерне моделювання та все, що з ним пов'язане: збір даних, їх аналіз, розробка математичних моделей, софт для моделювання, візуалізації та оформлення публікацій. Ну і за життя небагато.