как использовать мой существующий .cpp код с cuda - PullRequest
0 голосов
/ 18 марта 2011

Я написал код на c ++ и хотел использовать его вместе с cuda. ​​Может кто-нибудь помочь мне? Должен ли я предоставить свой код ?? На самом деле я пытался сделать это, но мне нужно немного начального кода для продолжения моего кода. Я знаю, как сделать простую квадратную программу (используя cuda и c ++) для окон (visual studio). Достаточно ли этого для моей программы? 1001 *

Ответы [ 3 ]

6 голосов
/ 18 марта 2011

Следующие два хороших места для начала.CUDA by Example - это хороший учебник, который поможет вам быстро начать работу.Массовое программирование параллельных процессоров включает в себя больше информации, например, главы об истории архитектуры графических процессоров, и, как правило, более глубокое понимание.

CUDA на примере: введение в программирование графических процессоров общего назначения

Программирование массово параллельных процессоров: практический подход

Обе они говорят о CUDA 3.x, так что вы захотите взглянуть на новые функции в CUDA 4.x в некоторыхочко.

Тяга определенно стоит посмотреть, если ваша проблема хорошо на ней отображается (см. комментарий выше).Это STL-подобная библиотека контейнеров, итераторов и алгоритмов, которая реализует параллельные к данным алгоритмы поверх CUDA.

Вот два руководства по началу работы с CUDA и Visual C ++ 2010:

http://www.ademiller.com/blogs/tech/2011/03/using-cuda-and-thrust-with-visual-studio-2010/

http://blog.cuvilib.com/2011/02/24/how-to-run-cuda-in-visual-studio-2010/

На форуме NVIDIA также есть сообщение:

http://forums.nvidia.com/index.php?showtopic=184539

Очень общие вопросы о том, как начать работу... переполнение стека, как правило, не лучший подход.Как правило, лучший ответ, который вы получите, это «прочитайте книгу или руководство».Здесь гораздо лучше задавать конкретные вопросы.Пожалуйста, не создавайте дубликаты вопросов, это не поможет.

4 голосов
/ 18 марта 2011

Это нетривиальная задача - преобразовать программу из простого C (++) в CUDA.Насколько я знаю, в CUDA можно использовать такие вещи, как C ++ (особенно с объявленной CUDA 4.0), но я думаю, что проще начать только с C (т.е. структур, указателей, элементарных типов данных).

Начните с чтения Руководства по программированию CUDA и изучения примеров, поставляемых с CUDA SDK или , доступных здесь .Я лично нашел образец сложения векторов довольно поучительным.Его можно найти здесь .

Я не могу сказать вам, как написать global s и shared s для вашей конкретной программы, но после прочтения вводного материала выбудет иметь хотя бы смутное представление о том, как это сделать.

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

  • Центральная идея для CUDA: циклы могут быть преобразованы в разные потоки, выполняемые несколько раз параллельно на GPU.
  • Таким образом, отдельные итерацииоптимально не зависят от других итераций.
  • Для оптимального выполнения отдельные ветви потоков должны быть (почти) одинаковыми, то есть отдельные потоки должны делать почти то же самое.
2 голосов
/ 18 марта 2011

В вашем проекте может быть несколько файлов .cpp и .cu.Если вы не хотите, чтобы ваши файлы .cu содержали только код устройства, это должно быть довольно просто.

Для ваших файлов .cu вы указываете заголовочный файл, содержащий функции хоста.Затем включите этот заголовочный файл в другие файлы .cu или .cpp.Компоновщик сделает все остальное.Это ничто иное, как наличие нескольких простых C ++ .cpp файлов в вашем проекте.

Я предполагаю, что у вас уже есть файлы правил CUDA для Visual Studio.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...