Как узнать, связано ли ядро ​​с памятью или с вычислениями? - PullRequest
2 голосов
/ 20 октября 2011

Я думаю, что мое ядро ​​связано с памятью (потому что большая часть кода GPGPU связано с памятью), но я точно не знаю точно. Как я могу это выяснить для себя. Вероятно, нужно использовать визуальный профилировщик, поскольку это зависит от используемого графического процессора.

Если это объяснено в руководстве по программированию CUDA или в другой документации NVIDIA, не стесняйтесь просто опубликовать ссылку с номером страницы, чтобы я мог прочитать ее для себя.

Разъяснение

Я бы предпочел общее правило для определения ограничивающего фактора, но в моем специальном случае вы можете найти подробности о моем ядре здесь: Использование `overlap`,` kernel time` и `utilization` для оптимизации свои ядра

Ответы [ 3 ]

3 голосов
/ 20 октября 2011

В этой презентации от NVIDIA говорится о выборочном отключении доступа к памяти и арифметике в вашем ядре путем изменения исходного кода, чтобы определить, ограничивает ли один из них вашу производительность.

1 голос
/ 10 мая 2013

Хороший трюк без какой-либо модификации исходного кода можно использовать для кода, скомпилированного с возможностью вычислений 2.0 и выше (на основе ответ здесь )

с помощью флага "--use_fast_math" можно легко увеличить \ уменьшить вычислительное давление.

  • , если установка этого флага дает большое ускорение, это будет означать ядро ​​с привязкой к вычислениям.

  • если установка этого флага практически не приводит к ускорению, это указывает на сбалансированное \ ограниченное памятью ядро.

0 голосов
/ 01 мая 2015

Я хотел бы дать ответ, даже если есть принятый ответ, и этот вопрос старый.

У меня была похожая проблема в моем коде, хотя тогда я ее не знал. Я запустил Nvidia Visual Profiler (nvvp) и проанализировал свою программу. Я обнаружил, что профилировщик обнаружил, что моя программа каким-то образом была ограничена, и у меня были некоторые рекомендации.

Отличный инструмент, если вы не знаете, с чего начать.

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