Cuda cudaMemcpy и cudaMalloc - PullRequest
       4

Cuda cudaMemcpy и cudaMalloc

2 голосов
/ 05 мая 2011

Я всегда читаю, что медленное распределение и передача данных из процессора в gpu.это потому, что cudaMalloc работает медленно?это потому, что cudaMemcpy работает медленно?или потому что они оба медленные?

Ответы [ 2 ]

3 голосов
/ 05 мая 2011

В большинстве приложений вы должны делать cudaMalloc один раз, а затем больше не вызывать его. Таким образом, узким местом действительно является cudaMemcpy.

Это связано с физическими ограничениями. Для стандартного канала PCI-E 2.0 x16 вы получите теоретическую скорость 8 ГБ / с, но на практике обычно 5-6 ГБ / с. Сравните это с Fermi среднего класса, например GTX460, с пропускной способностью 80 + ГБ / с на устройстве. По сути, вы используете порядок пропускной способности памяти, увеличивая время передачи данных.

Предполагается, что GPGPU являются суперкомпьютерами, и я считаю, что Сеймур Крэй (специалист по суперкомпьютерам) сказал: «Суперкомпьютер превращает проблемы, связанные с вычислениями, в проблемы, связанные с вводом / выводом». Таким образом, оптимизация передачи данных - это все.

По моему личному опыту, итеративные алгоритмы - это те, которые на сегодняшний день демонстрируют наилучшие улучшения при портировании на GPGPU (2-3 порядка) благодаря тому, что вы можете исключить время передачи, сохраняя все на месте на GPU.

3 голосов
/ 05 мая 2011

В основном это связано с 2 вещами, первым начинается скорость шины PCIExpress между картой и процессором.Другое связано с тем, как работают эти функции.Теперь я думаю, что новая CUDA 4 имеет лучшую поддержку выделения памяти (стандартную или закрепленную) и способ прозрачного доступа к памяти через шину.

Теперь, давайте посмотрим правде в глаза, в какой-то момент вам понадобитсячтобы получить данные из точки А в точку Б, чтобы вычислить что-то.Лучший способ справиться с этим - либо проводить действительно большие вычисления, либо использовать потоки CUDA для перекрытия передачи и вычислений на GPU.

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