Я отказался, потому что я не эксперт CUDA, и другие ответы довольно хороши, если код уже почти оптимален. По моему опыту, это большой ЕСЛИ, и в проверке нет вреда.
Чтобы проверить это, вам нужно выяснить, действительно ли код не выполняет ничего, что на самом деле не нужно делать. Вот способы, которые я вижу, чтобы убедиться, что:
Запустите тот же код на ванильном процессоре и возьмите стеков или используйте профилировщик, такой как Oprofile или RotateRight / Zoom, который может дать вам эквивалентную информацию. 1010 *
Запуск его на процессоре CUDA и выполнение тех же действий, если это возможно.
То, что вы ищете, это строки кода, которые занимают много места в стеке вызовов, как показывает доля содержащихся в них выборок стека. Это ваши "узкие места". Для их определения не требуется большого количества образцов.