0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

使用NVIDIA Nsight Eclipse Edition的DRIVE PX应用程序开发

设计idea 来源:互联网 作者:佚名 2018-04-28 14:24 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

NVIDIA驱动PXAI车载电脑使OEM,一级供应商,初创公司和研究机构,加快自驾车系统的开发。用于DRIVE PXNVIDIADriveWorks配套软件开发工具包(SDK)包含许多针对自动驾驶应用的开源参考样本,开发工具和库模块。

在正确配置开发环境之后,您可以自定义这些示例或在您的Linux主机上开发自己的应用程序,在主机或DRIVE PX上执行它们。图1显示了常见的编译和执行流程。

NsightEclipse 1图1. DriveWorks应用程序的编译和部署过程

我将向您展示如何配置NVIDIANsight EclipseEdition以启用整个主机编译和交叉编译过程。Nsight Eclipse提供了一个由Eclipse平台支持的全功能集成开发环境(IDE)。一体化集成环境允许您编辑,构建,调试和分析CUDA C / C ++应用程序。您将学习如何在主机上以及远程DRIVE PX 2上导入,编译,运行和调试DriveWorks项目。这直接从Nsight IDE内部进行,利用原始示例makefile。

预备步骤

Nsight Eclipse支持一套丰富的商业和免费插件,并附带CUDA Toolkitfor Linux和Mac。我们假设您最近在主机上运行了NVIDIA DriveInstallNVIDIA DriveInstall会在主机和目标系统上自动安装以下项目:

•NVIDIA DRIVE™SDK,
•CUDA工具包,
•cuDNN,
•DriveWorks,
•上述库依赖项。

您应首先制作原始DriveWorks示例文件夹的副本,以避免覆盖原始源代码。您只需要从DriveWorks导入DriveNet样品;你将不需要其他样品。

确保DriveNet示例在继续之前正确运行。通过在主机和DRIVE PX 2上的终端窗口中执行以下代码来执行此操作。DriveWorks样品的主机执行和主机编译只能在装有NVIDIA GPU的x86 PC上运行。在PC上编译需要基于Maxwell的GPU,但建议使用基于Pascal的GPU(GeForce GTX 9xx)。您只能在PC上不使用Maxwell,Pascal或更高版本的NVIDIA GPU的情况下交叉编译DRIVE PX 2的样本。

cd/usr/local/driveworks/bin./sample_drivenet

此外,请确保“手动”主机编译和DRIVE PX 2交叉编译成功运行。在您的主机上,执行以下操作:

cd/usr/local/driveworkssudocp-r样本样本-原始光盘样本-原创sudomkdirbuild-主机cdbuild-主机sudocmake..sudomake-j

现在为您的DRIVE PX进行交叉编译。查找主机中的DriveSDK文件夹并记下其完整路径。在以下代码片段中将DriveSDK路径替换为“”。

sudomkdirbuild-targetcdbuild-targetsudocmake-DCMAKE_BUILD_TYPE=发布-DCMAKE_TOOLCHAIN_FILE=/usr/local/driveworks/samples-original/cmake/Toolchain-V4L。cmake-DVIBRANTE_PDK:STRING=/drive-t186ref-linux..sudomake-j

假设上述操作正常运行,请配置Nsight Eclipse使其自动运行。首先,复制主机上现有的DriveWorks源代码文件夹。在主机终端窗口中,键入:

cd/usr/local/driveworkssudocp-r样本样本-nsight

保持距离只有这些文件夹中samples-nsight/src的文件夹:frameworkdnndrivenet

插件修改

现在我们来运行Nsight!由于示例工作目录位于“/ usr”中,因此需要将Nsight Eclipse作为“根”打开。

sudo/usr/local/cuda/bin/nsight

在本教程中,您将使用“cmake4eclipse”插件,它将帮助您配置CMake构建过程。该插件还从DriveWorks CMake配置文件中自动派生包含。

从Nsight Eclipse主菜单中选择“Help> Install New Software ...”,然后从“Work with”下拉列表中选择“http://download.eclipse.org/releases/juno/”。在搜索字段中输入“market”并点击图2所示的“Marketplace Client”。之后,选择“Next>”并按照提示完成安装。

粘贴图片0图2.安装Eclipse marketplace客户端

现在让我们安装市场上的cmake4eclipse插件。在Nsight主菜单中,在Nsight主菜单中选择“Help> Eclipse Marketplace ...”,然后在搜索窗口中输入“cmake”。现在通过单击“Install”安装cmake4eclipse插件,如图3所示。按照提示完成安装。或者,您也可以安装CMake Editor插件以及语法高亮显示。

图3.安装cmake4eclipse插件

一旦你安装了插件,创建一个新的CUDA C / C ++项目:“文件>新建> CUDA C / C ++项目”。将“DriveNet”写为“项目名称”,取消选中“使用默认位置”并浏览至“/ usr / local / driveworks / samples-nsight”。

选择“空项目”作为“项目类型”,选择“CUDA Toolkit 9.0”作为“工具链”。点击“下一步”后,将剩余选项保留为默认值,如图4所示。

截图从2018 01 09 17 20 23图4.创建一个新的CUDA C / C ++项目。

现在不要指定“目标系统”。您将为主机和目标创建两种不同的配置。

主机环境配置

现在我们来完成设置主机环境配置的步骤:

  1. 右键单击“DriveNet”并从Project Explorer窗口中选择“Properties”。

  2. 现在进入“Build> CMake”标签并点击“管理配置...”。

  3. 在弹出的新窗口中输入build-host作为“Name”,然后选择“Release:CUDA Toolkit 9.0”作为“Default configuration”,为主机创建一个新的配置。

  4. 点击“确定”和“设置活动”。

  5. 现在返回到“DriveNet的属性”窗口并修改“文件夹”字段,使其仅包含“$ {ConfigName}”。

  6. 切换到“符号”选项卡,单击“添加”按钮,然后在“要定义的CMake缓存条目”字段中键入CMAKE_BUILD_TYPE作为“变量名称”,STRING作为“类型”,并释放为“值”。

  7. 点击“确定”,然后点击“应用”确认。

如果您有点困惑,请使用图5作为参考。这会为主机创建一个发布类型配置。稍后,您将为目标创建一个调试类型配置。

cmake nsight 1图5.主机的CMake选项卡的配置。

在左侧的“工具链编辑器”选项卡中,选择“Cmake Builder(GNU Make)”作为“当前构建器”(如图6所示),以便在构建项目时使用cmake4eclipse插件在Nsight内。

截图从2018 02 23 12 44 05图6.工具链编辑器配置。

最后,进入“C / C ++常规>预处理器包含路径,宏等”,找到“Providers”选项卡,选择“CMAKE_EXPORT_COMPILE_COMMANDS Parser”行并通过点击“上移”将其移动到列表顶部。 ,如图7所示。包含路径的预处理器现在将自动从CMake配置文件中导出。

截图从2018 02 23 12 20 28图7.预处理器包含路径配置选项卡

点击“应用”,然后点击“确定”确认。编辑CMakeLists.txt文件以仅构建DriveNet示例:替换该行

设置(SAMPLES框架;...

有:

设置(SAMPLES框架;dnn;drivenet)

您现在已准备好构建该项目。点击“Build”,使用“Project> Build Project”命令。

DriveNet示例源文件可在“src> drivenet> drivenet> main.cpp”中找到。“sample_drivenet可执行文件位于”build-host> src> drivenet> drivenet> sample_drivenet“中。右键单击它并选择“作为>本地C / C ++应用程序运行”以在主机上启动它。

目标环境配置

现在是为应用程序最终驻留的DRIVE PX 2目标设备添加第二个环境的时候了。目标配置与您刚刚设置的主机类似,但需要更多设置。我们来看看这个过程:

  1. 再次在左列中选择“DriveNet”项目,右键单击并打开“属性”窗口。

  2. 从“Build”标签中选择“CMake”,然后点击“Manage Configurations ...”。

  3. 创建一个称为“build-target”的新配置,并选择“Debug:CUDA Toolkit 9.0”作为“Default configuration”。

  4. 由于我将演示如何在此示例上运行Nsight Eclipse调试器,因此我为此配置指定了“调试:CUDA Toolkit 9.0”。如果您对调试不感兴趣,请选择“发布:CUDA Toolkit 9.0”。

  5. 复制与图6中显示的主机配置相关的步骤,但是这次在“符号”选项卡中添加更多条目:

    1. “变量名称”:CMAKE_BUILD_TYPE,“类型”:“STRING”,“值”:调试

    2. “变量名称”:CMAKE_TOOLCHAIN_FILE,“类型”:“FILEPATH”,“值”:/usr/local/driveworks/samples-nsight/cmake/Toolchain-V4L.cmake

    3. “变量名称”:VIBRANTE_PDK,“类型”:“路径”,“值”:

确保在主机的“DriveSDK”文件夹中将“”替换为“drive-t186ref-linux”的路径。检查图8以确保您正确完成了该步骤。

cmake nsight目标图8.目标的CMake标签配置。

重复与“主机配置”相同的“工具链编辑器”(来自图7)和“预处理器包含路径,宏等”(如图8),选择“build-target [Active]”点击每个标签的“应用”,然后点击“确定”继续。

您现在可以按照与构建主机版本相同的步骤交叉编译该项目。首先通过“Project> Build Configurations> Set Active”选择“build-target”,然后使用“Project> Build Project”命令单击“Build”来构建项目。您将在“build-target> src> drivenet> drivenet”中找到可执行文件。

从Nsight Eclipse运行DRIVE PX上的示例

假设DRIVE PX驻留在本地网络上,您可以将Nsight Eclipse配置为在Drive PX上远程执行DriveNet示例。首先在DRIVE PX的终端窗口中输入ifconfig,找到您的“<目标IP地址>”。

配置Nsight Eclipse可在每次启动时自动将更新的交叉编译版本的样本传输到DRIVE PX。通过创建一个新文件夹并将其所有权设置给nvidiaDRIVE PX上的用户来完成。

$sshnvidia@$cd/usr/local/driveworks$sudomkdirbin-nsight$sudochown-Rnvidia:nvidiabin-nsight$exit

回到Eclipse中,点击“运行>运行配置”顶部菜单。在“C / C ++远程应用程序”下面添加一个新配置,并将sample_drivenet_remote键入为“Name”。在“远程连接”旁边,选择“管理”,并将<目标IP地址>作为“主机名称”,nvidia作为“用户名称”,nvidia @ <目标IP地址>作为“标签”,如图9所示。然后点击“完成”。

截图从2017年03 09 08 01 41 1图9.指定到您的DRIVE PX的网络连接。

在“远程工具包”旁边,单击“管理”,然后在下一部分中单击“检测”以识别工具包路径:/usr/local/cuda-9.0/bin应找到。如果不是,则需要在目标上手动选择CUDA工具包路径。

要完成配置,请选中“上载本地可执行文件”并键入可执行文件的完整远程路径:它应该是/ usr / local / driveworks / bin-nsight / sample_drivenet。这样,在运行之前,Nsight Eclipse会自动将更新后的DriveNet样本发送到目标。

在“本地”选项卡中,确保选择“DriveNet”项目,并选择sample_drivenet使用“搜索项目...”按钮运行的C / C ++应用程序。在“环境”选项卡中,单击“新建”,然后键入DISPLAY作为“名称”,并将0作为“值”。或者,如果要运行示例,可以将CUDA_VISIBLE_DEVICES作为“名称”添加,将1作为“值”在iGPU上而不是DRIVE PX上的dGPU上2.单击“运行”以在目标上启动应用程序。

在DRIVE PX上运行的调试样例2

您现在已经为DRIVE PX 2指定了远程目标系统配置。这使配置可用于在“运行>调试配置”菜单中调试样本。在继续之前,花一些时间看看这个窗口中提供的许多调试功能。

默认情况下,Nsight自动从远程目标下载调试过程的共享库。然而,这大大增加了调试执行时间。您应该直接将Nsight Eclipse指向主机系统中已有的目标库。切换到“调试器>共享库”选项卡,并取消选中“从远程目标下载共享库”。然后点击“添加...:”添加以下路径

  • 在/ usr /本地/ driveworks /目标/ aarch64 Linux的/ lib目录

  • 在/ usr /本地/ CUDA /目标/ aarch64 Linux的/ lib目录

  • /驱动-t186ref-LINUX / targetfs / usr / lib中

  • /驱动-t186ref-LINUX / targetfs / LIB / aarch64-Linux的GNU

  • /驱动-t186ref-LINUX / targetfs / usr / lib中/ aarch64-Linux的GNU

替换为主机上Drive Drive的路径,然后从该窗口启动调试器。这将Nsight切换到调试器的角度,并在代码中的第一条CPU指令处中断。在右上窗格中找到CUDA视图(多维数据集图标),然后选择“中断应用程序内核启动”。这会导致调试器在GPU上启动的任何CUDA内核上自动中断。

您现在可以恢复应用程序,该应用程序一直运行到CUDA内核中第一个断点为止。从那里,您可以浏览左上窗格中的CPU和GPU调用堆栈,如图11所示。在右上窗格中,您还可以检查变量,寄存器和GPU内核执行配置(CUDA线程块的数量和每个块的线程数)。最后,反汇编视图可以很容易地看到在执行代码时如何更新寄存器值。

在GPU上的特定位内核代码中设置一个断点,通过双击代码中相应的行号来消除它。(但请记住,单步执行一个线程会导致同一个warp中的其他线程也步进。)

当你完成调试时,点击红色的停止按钮退出应用程序。

截图从2017年11月22日17 40 28 1图10.使用Nsight Eclipse Edition的远程CUDA调试

在DRIVE PX 2上进行性能分析

现在您已经对样本进行了调试,您可以在Nsight上运行DRIVE PX 2时对应用程序进行配置。初始远程目标系统配置再次可用于远程配置。但是,请记住在“Make Target”配置中将CMake构建类型更改为Release。

如果未指定-DCMAKE_BUILD_TYPE变量,则“Release”将是默认设置,如图4所示。单击“Run> Profile configurations”开始分析并选择“C / C ++ Remote Application”列表下的正确元素。请记住在右侧的“Profiler”选项卡中指定一个执行超时 - 例如60秒 - 这会在指定时间后自动杀死应用程序。

之后,点击“配置文件”。Nsight剖析器透视图应自动打开。等待Nsight运行应用程序以创建执行时间线,包括在GPU上执行的所有CUDA运行时和内核调用,如图12所示。完成后,“属性”选项卡将显示您从此时间线中选择的任何事件的详细信息。这些事件也可以在下面的窗格的“详细信息”选项卡中以文本形式查看。

截图从2017 11 20 12 07 41 1图12.使用Nsight分析器可以以直观的方式深入分析CUDA内核。

检查时间线视图下方的分析选项卡以进一步分析性能。这使您可以通过在代码上运行更高级的分析会话来轻松识别瓶颈

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • NVIDIA
    +关注

    关注

    14

    文章

    5496

    浏览量

    109044
  • AI
    AI
    +关注

    关注

    89

    文章

    38077

    浏览量

    296300
  • 自动驾驶
    +关注

    关注

    791

    文章

    14667

    浏览量

    176370
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    NVIDIA与Uber合作推进全球L4级自动驾驶移动出行网络

    NVIDIA 宣布与 Uber 达成合作,将共同扩展全球 L4 级自动驾驶移动出行网络。合作将依托 Uber 新一代无人驾驶出租车和自动配送车队,采用全新 NVIDIA DRIVE AGX Hyperion 10 辅助驾驶
    的头像 发表于 11-03 14:33 1034次阅读

    全新QNX OS for Safety 8集成至NVIDIA DRIVE AGX Thor开发者套件

    DRIVE AGX Thor开发套件中,彰显QNX的关键生态和集成合作伙伴地位。该下一代平台专为赋能未来自动驾驶汽车而打造,凭借前沿的AI性能、强大的功能安全特性和卓越的可扩展性,NVIDIA
    的头像 发表于 09-08 17:31 715次阅读

    NVIDIA DRIVE AGX Thor开发者套件重磅发布

    这款由 NVIDIA DriveOS 7 驱动的开发者套件能够帮助开发者们打造出更安全的智能汽车和交通解决方案。
    的头像 发表于 09-04 11:20 993次阅读

    NVIDIA桌面GPU系列扩展新产品

    NVIDIA 桌面 GPU 系列扩展,推出 NVIDIA RTX PRO 4000 SFF Edition GPU 和 RTX PRO 2000 Blackwell GPU,可提高工程、内容创作和 3D 可视化等应用的性能。
    的头像 发表于 08-18 11:50 986次阅读

    Lauterbach TRACE32开发工具现在支持PX5 RTOS

    Lauterbach TRACE32开发工具现在支持PX5 RTOS。这里TRACE32工具支持包括对PX5 RTOS内部结构和数据的访问,使开发人员能够更深入地了解其
    的头像 发表于 06-12 16:38 819次阅读

    爱华HS-PX30/HS-PX303/HS-PX900维修手册

    电子发烧友网站提供《爱华HS-PX30/HS-PX303/HS-PX900维修手册.pdf》资料免费下载
    发表于 06-06 17:23 5次下载

    AWTK-WEB 快速入门(5) - C 语言 WebSocket 应用程序

    导读WebSocket可以实现双向通信,适合实时通信场景。本文介绍一下使用C语言开发AWTK-WEB应用程序,并用WebSocket与服务器通讯。用AWTKDesigner新建一个应用程序先安装
    的头像 发表于 02-19 11:49 889次阅读
    AWTK-WEB 快速入门(5) - C 语言 WebSocket <b class='flag-5'>应用程序</b>

    基于HPM_SDK_ENV开发应用程序的升级处理

    基于HPM_SDK_ENV开发应用程序的方式HPM_SDK_ENV是先楫半导体MCU的Windows集成开发环境,其包含HPM_SDK,工具链,依赖工具(cmake,ninja,openocd等
    的头像 发表于 02-08 13:38 1437次阅读
    基于HPM_SDK_ENV<b class='flag-5'>开发</b><b class='flag-5'>应用程序</b>的升级处理

    AWTK-WEB 快速入门(4) - JS Http 应用程序

    导读XMLHttpRequest改变了Web应用程序与服务器交换数据的方式,fetch是其继任者。本文介绍一下如何使用JS语言开发AWTK-WEB应用程序,并用fetch访问远程数据。用AWTKDesigner新建一个应用程
    的头像 发表于 01-22 11:31 720次阅读
    AWTK-WEB 快速入门(4) - JS Http <b class='flag-5'>应用程序</b>

    NVIDIA DRIVE Hyperion平台达成安全与认证里程碑

    NVIDIA近日宣布,其自动驾驶汽车平台NVIDIA DRIVE AGX™ Hyperion已成功通过了两家业内权威认证机构——TÜV SÜD和TÜV Rheinland的汽车功能安全与网络安全评估
    的头像 发表于 01-13 10:51 733次阅读

    NVIDIA DRIVE Hyperion平台通过汽车功能安全和网络安全认证

    NVIDIA 宣布自动驾驶汽车平台NVIDIA DRIVE AGX Hyperion已通过两家业内权威的汽车功能安全和网络安全认证评估机构——TÜV SÜD 和 TÜV Rheinland 的行业安全评估。这一成就提高了自动驾驶
    的头像 发表于 01-08 10:43 1017次阅读

    NVIDIA DRIVE技术推动自动驾驶发展

    随着 AI 技术的飞速发展,汽车行业正经历一场深刻而全面的智能化转型。以 NVIDIA DRIVE 技术为核心,NVIDIA 正在推动着自动驾驶技术不断迈向新高度。2025 年,AI 将在汽车行业中
    的头像 发表于 12-29 16:02 1104次阅读

    u-blox深化与NVIDIA Jetson和NVIDIA DRIVE Hyperion平台合作

    近日,作为提供定位和无线通信技术及服务的全球领先供应商u-blox(SIX:UBXN)宣布,作为在工业和汽车市场高精度定位领域的战略增长计划的关键一环,u-blox公司现已加强对NVIDIA Jetson和NVIDIA DRIVE
    的头像 发表于 12-09 14:08 911次阅读

    android手机上emulate应用程序的方法

    在Android手机上模拟(emulate)应用程序的方法通常涉及到使用Android模拟器(Emulator)或类似的工具来模拟Android环境,以便在没有实际物理设备的情况下运行和测试应用程序
    的头像 发表于 12-05 15:33 2027次阅读

    AWTK-WEB 快速入门(2) - JS 应用程序

    导读AWTK可以使用相同的技术栈开发各种平台的应用程序。有时我们需要使用Web界面与设备进行交互,本文介绍一下如何使用JS语言开发AWTK-WEB应用程序。用AWTKDesigner新
    的头像 发表于 12-05 01:04 798次阅读
    AWTK-WEB 快速入门(2) - JS <b class='flag-5'>应用程序</b>