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

    文章

    4592

    浏览量

    101706
  • AI
    AI
    +关注

    关注

    87

    文章

    26443

    浏览量

    264038
  • 自动驾驶
    +关注

    关注

    773

    文章

    13032

    浏览量

    163204
收藏 人收藏

    评论

    相关推荐

    idea可以运行eclipse项目吗

    可以运行Eclipse项目。Eclipse是一个开发环境,主要用于Java程序开发,但它也支持其他编程语言如C++、Python等。通过
    的头像 发表于 12-06 13:57 1025次阅读

    eclipse安装web插件步骤

    Eclipse 是一款功能强大的集成开发环境 (IDE),广泛用于 Java 开发和各种 Web 应用程序开发。通过安装适当的插件,可以将
    的头像 发表于 12-06 13:48 444次阅读

    eclipse中没有web怎么办

    Eclipse中没有Web的情况下,可以采取以下的解决方法: 第一种方法是通过Eclipse的插件来添加Web开发功能。原始的Eclipse版本可能不包含Web
    的头像 发表于 12-06 11:30 1243次阅读

    eclipse怎么使用命令行

    Eclipse是一种功能强大的集成开发环境(IDE),可用于开发各种类型的应用程序,包括Java、C/C++、Python等。虽然Eclipse
    的头像 发表于 12-06 11:26 931次阅读

    开发java应用程序的基本步骤是

    ava是一种面向对象的编程语言,广泛用于开发各种类型的应用程序。在开发Java应用程序时,有一些基本步骤需要遵循,以确保应用程序的正确性和可
    的头像 发表于 11-28 16:52 668次阅读

    领先的电子制造商选择 NVIDIA DRIVE Hyperion 9,内置 DRIVE Thor 和新一代传感器架构

    NVIDIA 创始人兼首席执行官黄仁勋 与 Foxconn 董事长兼首席执行官刘扬伟共同宣布双方长期合作的最新进展。两家公司将携手为全球汽车市场开发新一代智能电动汽车(EV)平台。 Foxconn
    的头像 发表于 10-20 02:00 225次阅读
    领先的电子制造商选择 <b class='flag-5'>NVIDIA</b> <b class='flag-5'>DRIVE</b> Hyperion 9,内置 <b class='flag-5'>DRIVE</b> Thor 和新一代传感器架构

    使用 NVIDIA DOCA 2.2 加速数据中心工作负载和 AI 应用程序

    NVIDIA DOCA SDK 和加速框架为开发者提供了丰富的库、驱动程序和 API,以便为 NVIDIA BlueField DPU 和 ConnectX 智能网卡创建高性能
    的头像 发表于 09-05 19:40 373次阅读
    使用 <b class='flag-5'>NVIDIA</b> DOCA 2.2 加速数据中心工作负载和 AI <b class='flag-5'>应用程序</b>

    iTOP-RK3568开发板ubuntu环境下安装Eclipse

    eclipse 是使用 Java 语言开发的,一个 Java 应用程序,这意味着 eclipse 只能运行在 Java虚拟机上。倘若没有安装 JDK(Java Development
    发表于 08-16 11:32

    安装Keil MDK for Holtek Edition 1.0版应用程序说明

    ARM为使用基于ARM Cortex-M0+处理器的Holtek设备的软件开发人员提供了免费使用的专业工具套件。 针对Cortex-M0+的免费Keil MDK Holtek版包括ARM C/C++
    发表于 08-11 06:51

    禾赛与NVIDIA合作再升级,激光雷达集成至NVIDIA DRIVE Sim

    今日,禾赛科技宣布与 NVIDIA 合作升级,正式入驻 NVIDIA Omniverse 生态系统。汽车厂商及自动驾驶企业的开发者可通过 NVIDIA
    的头像 发表于 08-09 17:49 1376次阅读

    Arm®Development Studio Morello Edition入门指南

    Arm®Development Studio Morello Edition是一款适用于裸金属嵌入式系统和基于Linux的系统的专业软件开发解决方案。它涵盖了从启动代码和内核移植到应用程序和裸机调试
    发表于 08-02 14:39

    禾赛与英伟达NVIDIA合作再升级 激光雷达集成至NVIDIA DRIVE Sim

    8月1日消息,禾赛科技今日宣布与英伟达NVIDIA合作升级,正式入驻其Omniverse生态系统。 据了解,未来汽车厂商及自动驾驶企业的开发者可通过 NVIDIA Drive Sim
    的头像 发表于 08-02 08:40 304次阅读

    创建端到端零售愿景AI应用程序

    使用 NVIDIA DeepStream 和 NVIDIA TAO 工具包构建端到端零售分析应用程序
    的头像 发表于 07-05 16:30 254次阅读
    创建端到端零售愿景AI<b class='flag-5'>应用程序</b>

    使用 NVIDIA BlueField-3 DPU 驱动下一波应用程序

    ChatGPT、Stable Diffusion、DALL-E 以及类似的应用程序让生成式 AI 震惊了世界。ChatGPT 是有史以来发展最快的应用程序。其易用性和令人印象深刻的功能在短短几个月
    的头像 发表于 05-24 05:45 607次阅读
    使用 <b class='flag-5'>NVIDIA</b> BlueField-3 DPU 驱动下一波<b class='flag-5'>应用程序</b>

    NVIDIA DRIVE Hyperion树立自动驾驶汽车开发平台的安全里程碑

    全球 50 多家车企共计部署了 800 多辆基于NVIDIA DRIVE Hyperion 自动驾驶汽车开发平台和参考架构打造的自动驾驶测试车辆。近日,该架构于自动驾驶安全领域树立了新的里程碑。
    的头像 发表于 05-10 14:55 912次阅读