Методы оптимизации Cuda - PullRequest
1 голос
/ 22 июня 2010

Я написал код CUDA для решения проблемы NP-Complete, но производительность оказалась не такой, как я подозревал.

Я знаю о "некоторых" методах оптимизации (с использованием общей памяти, текстур, нуля ...)

Каковы наиболее важные методы оптимизации, о которых должны знать программисты CUDA?

Ответы [ 2 ]

5 голосов
/ 22 июня 2010

Вам следует прочитать руководство NVIDIA CUDA Best Practices: http://developer.download.nvidia.com/compute/cuda/3_0/toolkit/docs/NVIDIA_CUDA_BestPracticesGuide.pdf

В нем есть несколько советов по повышению производительности с соответствующими «приоритетами».Вот несколько советов наивысшего приоритета:

  1. Используйте эффективную полосу пропускания вашего устройства, чтобы определить, какой должна быть верхняя граница производительности для вашего ядра
  2. Минимизируйте передачу памяти междухост и устройство - даже если это означает выполнение вычислений на неэффективном устройстве
  3. Объединение всех обращений к памяти
  4. Предпочтение доступа к общей памяти для доступа к глобальной памяти
  5. Избегайте кодаветвление выполнения в пределах одной деформации, поскольку это сериализует потоки
2 голосов
/ 06 декабря 2011

Новый NVIDIA Visual Profiler (v4.1) поддерживает автоматический анализ производительности для определения возможностей повышения производительности в вашем приложении.Он также напрямую ссылается на наиболее полезные разделы Руководства по передовому опыту для выявления проблем, которые он обнаруживает.Кроме того, Visual Profiler доступен бесплатно как часть набора инструментов CUDA на веб-сайте разработчика NVIDIA: http://www.nvidia.com/getcuda.

...