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

    文章

    4929

    浏览量

    102790
  • AI
    AI
    +关注

    关注

    87

    文章

    30072

    浏览量

    268342
  • 自动驾驶
    +关注

    关注

    783

    文章

    13674

    浏览量

    166096
收藏 人收藏

    评论

    相关推荐

    NVIDIA DRIVE Thor开启智能驾驶新篇章

    NVIDIA 正在与多家NVIDIA DRIVE生态系统合作伙伴、软件算法及智能驾驶解决方案提供商紧密合作,以最新的计算技术加速智能汽车行业发展。
    的头像 发表于 11-20 10:10 98次阅读

    借助NVIDIA DOCA 2.7增强AI 云数据中心和NVIDIA Spectrum-X

    NVIDIA DOCA 加速框架为开发者提供了丰富的库、驱动和 API,以便为 NVIDIA BlueField DPU 和 SuperNIC 创建高性能的应用程序和服务。
    的头像 发表于 05-29 09:22 457次阅读

    CYW20829从Eclipse为Modustoolbox创建\"新应用程序时出现错误\"的原因?

    CYW20829]从 Eclipse 为 Modustoolbox 创建\"新应用程序时出现错误\"
    发表于 05-22 06:12

    多家车企与NVIDIA DRIVE车载自动驾驶平台达成合作

    英伟达在CES 2024上宣布,理想汽车已决定采用NVIDIA DRIVE Thor中央车载计算机,为其新一代车型提供动力。这一决定标志着理想汽车对NVIDIA技术的信任和认可,也是对NVID
    的头像 发表于 01-09 18:11 737次阅读

    理想汽车选用NVIDIA DRIVE Thor为核心的车载计算机

    NVIDIA汽车业务部副总裁吴新宙发表观点说:“汽车行业如今正朝着集合智能化的方向快速发展,跨入高度自动驾驶阶段。目前最为智能的AI汽车计算机非NVIDIA DRIVE Orin莫属,各大汽车制造商均向
    的头像 发表于 01-09 10:41 905次阅读

    电动汽车制造商纷纷选择使用NVIDIA DRIVE实现自动驾驶

    NVIDIA 宣布增程式电动汽车(EV)领域的先驱理想汽车已选择 NVIDIA DRIVE Thor™ 集中式车载计算平台为其下一代车型赋能。
    的头像 发表于 01-09 10:31 828次阅读

    如何构建linux开发环境和编译软件工程、应用程序

    前文介绍了如何使用官方提供的镜像文件启动开发板,本文将说明如何构建linux开发环境和编译软件工程、应用程序
    的头像 发表于 01-03 12:31 1927次阅读
    如何构建linux<b class='flag-5'>开发</b>环境和编译软件工程、<b class='flag-5'>应用程序</b>

    AMD发布Adrenalin Edition23.12.1版驱动程序

    AMD发布了Adrenalin Edition23.12.1版驱动程序,带来了部分新的功能,使得玩家在AMD Radeon显卡上畅玩游戏更加容易。
    的头像 发表于 12-12 11:30 1444次阅读

    idea可以运行eclipse项目吗

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

    eclipse安装web插件步骤

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

    怎么用eclipse创建web项目

    使用Eclipse创建Web项目是一种常见的方式,下面将分步骤详解如何使用Eclipse创建Web项目。在开始之前,请确保已经安装了Java开发工具包(JDK)和Eclipse集成
    的头像 发表于 12-06 13:40 1809次阅读

    如何在eclipse配置jdk环境

    Eclipse中配置JDK环境非常重要,它是开发Java程序的基础。本文将详细介绍如何在Eclipse中配置JDK环境。 下载和安装JDK 首先,在Oracle官网上下载适用于您的操
    的头像 发表于 12-06 11:49 1597次阅读

    eclipse中没有web怎么办

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

    eclipse怎么使用命令行

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

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

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