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 і поступово зменшувати час затримки.

Зміни у реєстрі набудуть чинності після перезавантаження системи.

В результаті отримаємо:

поради

Читайте також

Коментарі

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