у нас есть код C ++, который мы хотим профилировать с помощью Nividia Nsight Eclipse (версия для Linux) перед добавлением в него кода CUDA. Идея состоит в том, чтобы сначала профилировать C ++, находить горячие точки, преобразовывать их в CUDA, снова профилировать и повторять этот процесс, чтобы последовательно ускорить код. Однако, когда мы профилируем только C ++, похоже, что профилировщик требует некоторого существующего кода CUDA, прежде чем он генерирует временную шкалу и вывод профиля. кто-нибудь еще сталкивался с этим?
Nsight Eclipse Edition может только профилировать код CUDA. Вы можете установить сторонние плагины профилирования для профилирования кода хоста.
Вы можете попробовать установить интеграцию OProfile с сайта Eclipse Foundation (вставить http://download.eclipse.org/releases/indigo/ в диалог Справка / Установка нового программного обеспечения …) — Я только что попробовал, но не смог правильно настроить командную строку oprofile.
Вы можете вручную обрабатывать свой код с помощью nvtx (расширение инструментов NVIDIA) и иметь временную шкалу, показанную в Nsight, но для автоматического профилирования и подробных счетчиков он может только профилировать код GPU.
Да, Nsight Eclipse может профилировать код C ++. Чтобы перефразировать ваш вопрос, он также может профилировать код C ++ хоста (ЦП). По умолчанию он только профилирует код GPU. Профилирование процессора — гораздо более ручная задача; он не будет профилировать функции автоматически.
Вам нужно использовать NVTX. Вот так:
#include "nvToolsExt.h"nvtxNameOsThread(0,"InputVideo");
nvtxRangePush(__FUNCTION__);
// .. do some CPU computing here
nvtxRangePop();
Сборка с помощью -lnvToolsExt -L / usr / local / cuda / lib64
Путь к libnvToolsExt.so будет отличаться для всех. NVTX поставляется с инструментарием CUDA.