Nsight Eclipse Plugins Edition 入门指南
使用 Nsight Eclipse Plugins Edition 的用户指南。
1. 简介
本指南介绍 Nsight Eclipse Plugins Edition,并提供开始使用此工具的必要说明。Nsight Eclipse 基于 Eclipse CDT 项目。有关 Eclipse CDT 功能的详细描述,请查阅 Nsight 内部提供的集成帮助“C/C++ 开发用户指南”(通过“帮助”->“帮助内容”菜单访问)。
1.1. 关于 Nsight Eclipse Plugins Edition
NVIDIA® Nsight™ Eclipse Edition 是一个统一的 CPU 和 GPU 集成开发环境 (IDE),用于在 Linux 和 Mac OS X 上为 x86、POWER 和 ARM 平台开发 CUDA® 应用程序。它旨在帮助开发人员完成软件开发过程的所有阶段。Nsight Eclipse Plugins 可以使用标准的“帮助”->“安装新软件..”菜单安装在原生 Eclipse 上。主要功能如下
编辑、构建、调试和分析 CUDA-C 应用程序
CUDA 感知源代码编辑器 – 语法高亮显示、代码完成和内联帮助
用于调试异构应用程序的图形用户界面
分析器集成 – 将可视化分析器作为外部应用程序启动,并使用在此 IDE 中构建的 CUDA 应用程序,以轻松识别性能瓶颈
有关 Eclipse 平台的更多信息,请访问 http://eclipse.org
2. 使用 Nsight Eclipse Edition
2.1. 安装 Nsight Eclipse Edition
Nsight Eclipse Plugins 归档文件是 CUDA 工具包的一部分。可以使用 Eclipse 上的“帮助”->“安装新软件…”菜单安装 Nsight Eclipse Plugins 归档文件
2.1.1. 安装 CUDA 工具包
要安装 CUDA 工具包
请访问 NVIDIA CUDA 工具包下载页面:https://developer.nvidia.com/cuda-downloads
选择合适的操作系统。Nsight Eclipse Edition 在 Mac OS X 和 Linux 工具包软件包中提供。
下载并安装 CUDA 驱动程序。
下载并安装 CUDA 工具包。
按照说明在您的系统上配置 CUDA 驱动程序和工具包。
2.1.2. 配置 CUDA 工具包路径

使用情况数据收集页面
要开始使用,必须在 Eclipse 中使用 Nsight Plugins 配置 CUDA 工具包路径
打开“首选项”页面,“窗口”>“首选项”。
转到 CUDA 工具包部分。
选择 Nsight 要使用的 CUDA 工具包路径。默认位置安装的 CUDA 工具包将自动显示。
也可以在项目属性页面中指定 CUDA 工具包路径,以便为项目使用不同的工具包。
如果您希望将使用情况数据发送给 NVIDIA,请启用使用情况数据收集。
单击按钮以将 cuda-gdb 和 Visual Profiler 设置为默认启动器。
对于 QNX: 当选择 QNX 作为目标操作系统时,如果尚未设置 QNX_HOST 和 QNX_TARGET 环境变量,将显示一个对话框来设置它们。
QNX_HOST 环境变量标识包含主机相关组件的目录
QNX_TARGET 环境变量标识包含目标相关组件的目录
2.2. Nsight Eclipse 主窗口
首次运行时,Eclipse 将要求选择工作区位置。工作区是 Nsight 存储其设置、本地文件历史记录和缓存的文件夹。应选择一个空文件夹以避免覆盖现有文件。
选择工作区位置后,将打开 Nsight 主窗口。主窗口分为以下区域
编辑器 - 显示打开以进行编辑的源文件。
项目资源管理器 - 显示项目文件
大纲 - 显示当前编辑器中源文件的结构。
问题 - 显示 IDE 中静态代码分析或编译器在构建期间检测到的错误和警告。
控制台 - 显示构建期间的 make 输出或正在运行的应用程序的输出。
2.3. 创建新项目
从主菜单中,打开新建项目向导 - “文件”>“新建…”>“CUDA C/C++ 项目”
指定项目名称和项目文件位置。
指定项目类型,如可执行项目。
从工具链列表中指定 CUDA 工具链。
在下一个向导页面上指定项目配置。
完成向导。项目将显示在“项目资源管理器”视图中,并且将打开源代码编辑器。
通过单击主工具栏上的锤子按钮来构建项目。

创建新项目后的 Nsight 主窗口
2.4. 导入 CUDA 示例
CUDA 示例是 CUDA 工具包安装的可选组件。Nsight 提供了一种导入这些示例并轻松使用它们的机制
注意
Nsight 不支持使用 CUDA 驱动程序 API 的示例(后缀为“Drv”)。
从主菜单中,打开新建项目向导 - “文件”>“新建…”>“CUDA C/C++ 项目”
指定项目名称和项目文件位置。
在“项目类型”树中的“可执行文件”下选择“导入 CUDA 示例”。
从“工具链”选项中选择 CUDA 工具链。位置。
在下一个向导页面上,选择要导入的项目示例。还要选择目标 CPU 架构。按“下一步…”
在下一个向导页面上指定项目参数。
完成向导。项目将显示在“项目资源管理器”视图中,并且将打开源代码编辑器。
通过单击主工具栏上的锤子按钮来构建项目。
2.4.1. cuHook 示例
cuHook 示例构建库和可执行文件。cuHook 示例应使用以下步骤作为“makefile”项目导入。
从主菜单中,打开新建项目向导 - “文件”>“新建…”>“CUDA C/C++ 项目”
选择项目类型“Makefile 项目”并选择“空项目”
指定项目名称和项目文件位置。
完成向导。项目将显示在“项目资源管理器”视图中。
右键单击项目 - “导入…”>“常规”>“文件系统”
在下一个向导页面上,选择 cuHook 示例的位置(Samples/7_CUDALibraries/cuHook)
选择所有源文件和 makefile,然后完成向导
通过单击主工具栏上的锤子按钮来构建项目。
要运行示例,请从主菜单中选择“运行”>“运行配置…”>“选择可执行文件”>“转到‘环境’选项卡”>“新建…”>“输入名称=LD_PRELOAD,值=./libcuhook.so.1”>“运行”将执行该示例
2.5. 配置构建设置

以下是可为选定项目配置的 Nvcc 链接器设置的类别。
注意
主页面中的“所有选项”字段不可编辑,它是子类别中设置的选项的集合。
库 - 配置库搜索路径 (-L) 并包含链接器库 (-l)。当您为不同的目标操作系统进行交叉编译时,库搜索路径应指向目标操作系统库所在的相应位置。
杂项 - 设置其他链接器选项和与 OpenGL 库链接的选项。
共享库设置 - 设置构建共享库的选项。
以下是可为选定项目配置的 Nvcc 编译器设置的类别。
注意
主页面中的“所有选项”字段不可编辑,它是子类别中设置的选项的集合。
方言 - 选择语言标准和方言选项。
预处理器 - 为预处理器添加定义的和未定义的符号。
包含 - 为编译器设置包含路径和包含文件。
优化 - 设置编译器用于代码生成的优化级别。此外,设置编译器在编译过程中将使用的线程数(“拆分编译”)。拆分编译可以是基本拆分编译或扩展拆分编译,但两者不能同时使用。
调试 - 设置生成调试信息的选项。
CUDA - 为不同的真实架构生成代码,并为相同的虚拟架构生成 PTX。
注意
从 CUDA Toolkit 12.8 开始,Nsight Eclipse 插件将不再包含在 Tegra (SOC) 软件包中,例如 DriveOS 或 Jetson。鼓励这些软件包的用户使用 Nsight Visual Studio Code,该产品可在 VSCode 扩展库或 Microsoft VSCode Marketplace 中获得。
2.6. 调试 CUDA 应用程序
Nsight 必须正在运行,并且至少存在一个项目。
在“项目资源管理器”视图中,选择要调试的项目。确保项目可执行文件已编译,并且项目上未显示错误标记。
右键单击项目,然后转到“调试为”>“NVIDIA CUDA GDB 调试器”菜单。
首次运行调试器时,系统将提示您切换透视图。单击“是”。透视图是专门为特定任务设计的窗口布局预设。
应用程序将在 main 函数中暂停。此时没有 GPU 代码正在运行。
在设备代码中添加断点。恢复应用程序。
当应用程序到达断点时,调试器将中断。您现在可以浏览您的 CUDA 设备状态、单步执行您的 GPU 代码或恢复应用程序。

调试 CUDA 应用程序
可以在调试配置对话框中通过“运行”>“调试配置…”菜单设置其他调试器选项。

调试 CUDA 应用程序
2.7. CUDA 应用程序的远程开发
Nsight Eclipse Edition 还支持从 CUDA Toolkit 6.0 开始的 CUDA 应用程序的远程开发。下图显示了如何将 Nsight Eclipse Edition 用于本地和远程开发

对于远程开发,您的主机系统上不需要任何 NVIDIA GPU。远程目标系统可以是具有 NVIDIA GPU 的 Linux x86 或 POWER 系统,也可以是基于 Tegra 的 ARM 系统。Nsight IDE 和 UI 工具只能托管在 x86 和 POWER 系统上。
Nsight Eclipse Plugins 支持远程设备的交叉编译模式。
在交叉编译模式下,项目驻留在主机系统上,交叉编译也在主机系统上完成。交叉编译模式仅在 Ubuntu x86 主机系统上受支持。

2.8. 调试远程 CUDA 应用程序
远程调试从 CUDA Toolkit 5.5 开始可用。使用 Nsight 远程调试 UI 不需要专用 GPU。调试目标上仍然需要专用 GPU。仅支持 Linux 目标。调试主机和目标可能运行不同的操作系统或具有不同的 CPU 架构。远程计算机必须可通过 SSH 访问,并且主机和目标计算机上都必须安装 CUDA 工具包。
注意
如果主机和目标之间存在防火墙,则必须将其设置为允许 RSP 消息通过,或者必须使用 SSH 端口转发。
选择项目并右键单击,然后转到“调试为…”>“NVIDIA CUDA GDB 调试器(远程)”菜单项。
键入本地可执行文件的完整路径,或使用“本地文件…”按钮选择一个。
从下拉列表中选择远程连接,或按“添加连接…”按钮创建一个新连接。
如果您要创建新的远程连接,请输入主机名(或 IP 地址)以及用户名。选择 SSH 作为系统类型。还要为 QNX 目标选中“QNX”复选框,然后按“完成”。
对于 Android 设备: 要使用 Android 调试桥配置远程连接,请从“远程连接”下拉列表中选择“Android 调试桥”,Android 设备必须使用 USB 端口连接到主机系统。
按“管理”按钮,然后输入或选择 adb 实用程序的路径。您需要安装 Android SDK 平台工具才能使用 Android 调试桥。按“检测”按钮以查找可通过 ADB 使用的 Android 设备。
可选: 按“连接”以验证所选的远程连接。
按“下一步”按钮。
键入远程系统上 cuda-gdbserver 的完整路径,或使用“浏览…”按钮选择一个。
单击“添加新路径”或“浏览…”按钮以指定远程应用程序依赖的共享库的路径。
单击“完成”按钮以完成新的调试配置向导并开始调试应用程序。
首次运行调试器时,系统将提示您切换透视图。单击“是”。透视图是专门为特定任务设计的窗口布局预设。
调试器将在应用程序主例程处停止。您现在可以设置断点或恢复应用程序。

调试远程 CUDA 应用程序
2.8.1. 提高远程调试性能
在进行远程调试时,将目标库的副本托管在本地 sysroot 中可能很有用。从 CUDA 11.5 开始,此功能在调试器配置 -> 调试器选项卡上可用。您可以修改“CUDA GDB sysroot(用于远程调试)”以指向本地 sysroot 目录,从而提高调试性能。

2.9. 分析 CUDA 应用程序
Nsight 必须正在运行,并且至少存在一个项目。分析器在调试会话正在进行时无法使用。
Nsight Eclipse Edition 分析功能基于 NVIDIA Visual Profiler (nvvp) 代码。Nsight Eclipse Plugins Edition 将启动 Visual Profiler 作为外部工具,其中包含来自选定项目的可执行文件和其他信息。
Nsight Eclipse 将启动 Visual Profiler,以指定额外的分析器选项,其中可执行文件信息已从选定项目传递。

分析 CUDA 应用程序
2.10. 在 Docker 容器内构建 CUDA 项目
您可以使用 Nsight Eclipse Edition 在 Docker 容器中构建和调试 C/C++ 和 CUDA 项目。要开始使用,您需要首先拉取并安装封装 CUDA 工具包和跨平台工具链的 Docker 镜像。您可以从 NVIDIA GPU Cloud 获取 Docker 镜像。然后,您可以使用 Nsight Eclipse Edition 在 Docker 容器中构建 CUDA 项目。
打开 Nsight Eclipse Edition 并配置容器设置。
打开“首选项”页面,“窗口”>“首选项”,然后转到:“CUDA”>“容器设置”
如果您想在 Docker 容器内构建项目,请选择此选项。确保在 CUDA 首选项中指定的 CUDA 工具包路径是 Docker 容器内的 CUDA 工具包的路径。
选择“连接”,并且“镜像”下拉列表将显示当前安装的所有 Docker 镜像。选择您要用于构建/调试项目的 Docker 镜像。此处设置的首选项将自动显示在项目设置向导中。您可以选择从项目设置向导修改各个项目的容器设置。
要创建项目,请从主菜单中打开新建项目向导:“文件”>“新建…”>“CUDA C/C++ 项目”
指定项目名称和项目文件位置。并从工具链列表中选择 CUDA 工具链。
在项目设置向导的最后一页中,将显示容器选项。此处将显示首选项页面中的默认容器设置。您可以选择在此“容器设置”页面中修改此项目的设置。
完成项目设置向导。项目将被创建并显示在“项目资源管理器”视图中。
项目源目录将自动挂载到 Docker 容器。
如果您需要将包含头文件/库等的任何其他目录挂载到 Docker 容器,则可以从项目属性页面挂载这些目录。
右键单击项目,然后转到“属性”。选择“C/C++ 构建”>“设置”>“容器设置”选项卡。可以从此属性页面挂载其他目录。
通过单击主工具栏上的锤子按钮来构建项目。项目现在在选定的 Docker 容器中构建,可执行文件将在主机上可用。
2.11. 在 Docker 容器内使用 CUDA GDB 进行远程调试
从 Nsight Eclipse,您可以使用 Docker 容器内主机上运行的 CUDA GDB 远程调试目标上运行的应用程序。具有 CUDA GDB 和 CUDA 工具包的 Docker 镜像必须已安装在主机上。远程计算机必须可通过 SSH 访问,并且目标计算机上必须安装 CUDA 工具包。
注意
如果主机和目标之间存在防火墙,则必须将其设置为允许 RSP 消息通过,或者必须使用 SSH 端口转发。
从主菜单中,转到“运行”>“调试配置…”菜单项。
在“CUDA GDB 容器启动器”下创建新的调试配置,方法是双击或使用右键单击菜单。
在“远程”选项卡中配置远程连接详细信息。如果您要创建新的远程连接,请单击“远程连接”中的“管理”按钮,输入主机名(或 IP 地址)以及用户名。选择 SSH 作为系统类型。还要选择目标上的 CUDA 工具包位置,并选择要将可执行文件上传到的位置。
在“本地”选项卡中选择要上传到目标的项目和可执行文件。
在“容器”选项卡中,选择包含 CUDA GDB 的连接和 Docker 镜像。您还可以选择挂载到 Docker 容器所需的任何主机目录。
从“调试器”选项卡中选择调试器选项。确保输入 Docker 容器内的 CUDA GDB 可执行文件路径。并在“环境”选项卡中添加所需的环境变量。
单击“应用”按钮以保存更改,然后单击“调试”按钮以启动调试会话。此操作会将本地可执行文件上传到目标系统,并在目标上启动 CUDA GDB Server。并且 Docker 容器将在主机上启动,并且在 Docker 容器内运行的 CUDA GDB 将与目标建立远程调试会话。
首次运行调试器时,系统将提示您切换透视图。单击“是”。透视图是专门为特定任务设计的窗口布局预设。
调试器将在应用程序主例程处停止。您现在可以设置断点或恢复应用程序。

调试远程 CUDA 应用程序
2.12. 导入 Nsight Eclipse 项目
使用 Nsight Eclipse Edition 创建的项目可以导入到具有 Nsight Eclipse 插件的 Eclipse 工作台中。
打开 Nsight Eclipse Edition 并选择需要导出的项目。
右键单击 Nsight Eclipse 项目,然后转到 - “导出”>“C/C++”>“C/C++ 项目设置”>“下一步”菜单。
选择要导出的项目和设置。
指定“导出到文件”位置。
设置将存储在给定的 XML 文件中。
转到需要导入项目设置的 Eclipse 工作台。
从主菜单“文件”>“新建”>“CUDA C/C++ 项目”创建一个 CUDA C/C++ 项目
指定项目名称并选择带有 CUDA 工具链的“空项目”类型。
右键单击项目以导入源文件。“导入”>“常规”>“文件系统”>(从目录)或从现有项目复制源文件。
使用以下右键单击菜单导入项目设置,如包含路径和符号:“导入”>“C/C++”>“C/C++ 项目设置”>“下一步…”
选择项目设置文件的位置,然后在下一个向导页面上选择项目和配置。
完成向导。项目设置将从 Nsight Eclipse Edition 导出的文件中导入。
通过单击主工具栏上的锤子按钮来构建项目。
2.13. 在 Eclipse 中启用深色主题
为了在黑暗环境中舒适地工作,Eclipse 提供了深色主题模式,可以轻松激活
打开 Eclipse 首选项
单击顶部菜单中的“窗口”。
从下拉列表中选择“首选项”。
访问外观设置
在“首选项”窗口中,选择左侧的“常规”。
单击“外观”。
选择深色主题
找到“主题”下拉列表。
选择您喜欢的深色主题选项。
应用并享受
单击“应用并关闭”以保存设置。
见证 Eclipse 使用新的深色主题进行转换。
享受使用深色主题进行编码,减少眼睛疲劳并获得时尚的新外观!
2.14. 更多信息
有关 Eclipse CDT 功能和其他主题的更多信息,请参阅“帮助内容”。要访问“帮助内容”,请从 Nsight 主菜单中选择“帮助”->“帮助内容”。
有关 CUDA、CUDA 工具包和其他工具的更多信息,请访问 CUDA 网页:http://developer.nvidia.com/cuda
3. 已知问题
可执行文件必须存在才能首次启动调试会话
首次启动给定项目的调试会话时,Nsight 不会自动执行构建。必须手动调用构建。在启动后续调试会话时,Nsight 将自动重建可执行文件。
注意
要手动构建项目,请在“项目资源管理器”视图中选择它(或项目中的任何文件),然后单击主窗口工具栏上的锤子图标。
对于新创建项目中的文件,源代码编辑器可能会在有效的代码上显示错误标记。
在 Nsight 索引包含的头文件后,这些标记将被清除。
Mac OS X 用户在首次运行 Nsight Eclipse Edition 时可能会被提示安装 Java 运行时环境 (JRE)。
Nsight Eclipse Plugin Edition 需要在本地系统上存在可正常运行的 Java 运行时环境才能运行。
Nsight Eclipse Plugin Edition 不提供使用 QNX qcc 和 q++ 编译器进行编译的支持。
使用 qcc 和 q++ 进行编译的解决方法是
在项目属性对话框的工具包配置页面上的 CCBIN 字段中指定 q++ 路径,如下所示。您可以通过单击主菜单“项目”>“属性”>“C/C++ 构建”>“CUDA 工具包”来访问工具包配置页面
在文件 ${QNX_HOST}/etc/qcc/gcc/5.4.0/default 中将默认 CONF 更改为 gcc_ntoaarch64le,如下所示
CONF=gcc_ntoaarch64le
4. 附加许可义务
有关许可的更多详细信息,请访问 CUDA 工具包 NVIDIA SDK 许可协议补充页面:https://developer.nvidia.com/cuda-downloads
5. 通知
5.1. 通知
本文件仅供参考,不应被视为对产品特定功能、状况或质量的保证。NVIDIA Corporation(“NVIDIA”)对本文档所含信息的准确性或完整性不作任何明示或暗示的陈述或保证,并且对本文档中包含的任何错误不承担任何责任。NVIDIA 对因使用此类信息而造成的后果或使用,或因使用此类信息而可能导致的侵犯第三方专利或其他权利的行为不承担任何责任。本文档不构成对开发、发布或交付任何材料(定义见下文)、代码或功能的承诺。
NVIDIA 保留随时修改、改进、增强本文档以及对其进行任何其他更改的权利,恕不另行通知。
客户在下订单前应获取最新的相关信息,并应确认此类信息是最新且完整的。
NVIDIA 产品的销售受 NVIDIA 标准销售条款和条件的约束,该条款和条件在订单确认时提供,除非 NVIDIA 和客户的授权代表签署的个别销售协议(“销售条款”)另有约定。NVIDIA 在此明确拒绝接受将任何客户通用条款和条件应用于购买本文档中提及的 NVIDIA 产品。本文档未直接或间接形成任何合同义务。
NVIDIA 产品并非设计、授权或保证适用于医疗、军事、航空、航天或生命维持设备,也不适用于 NVIDIA 产品发生故障或失灵可能合理预期会导致人身伤害、死亡或财产或环境损害的应用。NVIDIA 对在上述设备或应用中包含和/或使用 NVIDIA 产品不承担任何责任,因此,此类包含和/或使用由客户自行承担风险。
NVIDIA 不声明或保证基于本文档的产品将适用于任何特定用途。NVIDIA 不一定会对每个产品的所有参数进行测试。客户全权负责评估和确定本文档中包含的任何信息的适用性,确保产品适合并满足客户计划的应用,并为该应用执行必要的测试,以避免应用或产品的缺陷。客户产品设计中的缺陷可能会影响 NVIDIA 产品的质量和可靠性,并可能导致超出本文档所包含的附加或不同条件和/或要求。对于可能基于或归因于以下原因的任何缺陷、损坏、成本或问题,NVIDIA 不承担任何责任:(i) 以任何违反本文档的方式使用 NVIDIA 产品,或 (ii) 客户产品设计。
本文档未授予任何 NVIDIA 专利权、版权或其他 NVIDIA 知识产权的明示或暗示许可。NVIDIA 发布的关于第三方产品或服务的信息不构成 NVIDIA 授予的使用此类产品或服务的许可,也不构成对此类产品或服务的保证或认可。使用此类信息可能需要获得第三方专利或其他知识产权的许可,或获得 NVIDIA 专利或其他知识产权的许可。
只有在事先获得 NVIDIA 书面批准的情况下,才允许复制本文档中的信息,且复制必须不得更改并完全符合所有适用的出口法律和法规,并附带所有相关的条件、限制和声明。
本文件以及所有 NVIDIA 设计规范、参考板、文件、图纸、诊断程序、列表和其他文档(统称为“材料”,单独称为“材料”)均按“现状”提供。NVIDIA 对材料不作任何明示、暗示、法定或其他形式的保证,并明确否认所有关于不侵权、适销性和特定用途适用性的默示保证。在法律未禁止的范围内,在任何情况下,NVIDIA 均不对因使用本文件而引起的任何损害(包括但不限于任何直接、间接、特殊、附带、惩罚性或后果性损害,无论其发生原因和责任理论如何)承担责任,即使 NVIDIA 已被告知可能发生此类损害。尽管客户可能因任何原因遭受任何损害,NVIDIA 对本文所述产品的总累积责任应根据产品的销售条款进行限制。
5.2. OpenCL
OpenCL 是 Apple Inc. 的商标,Khronos Group Inc. 在许可下使用。
5.3. 商标
NVIDIA 和 NVIDIA 徽标是 NVIDIA Corporation 在美国和其他国家/地区的商标或注册商标。其他公司和产品名称可能是与其相关的各自公司的商标。