在NVIDIA驅(qū)動PXAI車載電腦使OEM,一級供應(yīng)商,初創(chuàng)公司和研究機構(gòu),加快自駕車系統(tǒng)的開發(fā)。用于DRIVE PX的NVIDIADriveWorks配套軟件開發(fā)工具包(SDK)包含許多針對自動駕駛應(yīng)用的開源參考樣本,開發(fā)工具和庫模塊。
在正確配置開發(fā)環(huán)境之后,您可以自定義這些示例或在您的Linux主機上開發(fā)自己的應(yīng)用程序,在主機或DRIVE PX上執(zhí)行它們。圖1顯示了常見的編譯和執(zhí)行流程。
圖1. DriveWorks應(yīng)用程序的編譯和部署過程
我將向您展示如何配置NVIDIANsight EclipseEdition以啟用整個主機編譯和交叉編譯過程。Nsight Eclipse提供了一個由Eclipse平臺支持的全功能集成開發(fā)環(huán)境(IDE)。一體化集成環(huán)境允許您編輯,構(gòu)建,調(diào)試和分析CUDA C / C ++應(yīng)用程序。您將學(xué)習(xí)如何在主機上以及遠(yuǎn)程DRIVE PX 2上導(dǎo)入,編譯,運行和調(diào)試DriveWorks項目。這直接從Nsight IDE內(nèi)部進(jìn)行,利用原始示例makefile。
預(yù)備步驟
Nsight Eclipse支持一套豐富的商業(yè)和免費插件,并附帶CUDA Toolkitfor Linux和Mac。我們假設(shè)您最近在主機上運行了NVIDIA DriveInstall。NVIDIA DriveInstall會在主機和目標(biāo)系統(tǒng)上自動安裝以下項目:
?NVIDIA DRIVE?SDK,
?CUDA工具包,
?cuDNN,
?DriveWorks,
?上述庫依賴項。
您應(yīng)首先制作原始DriveWorks示例文件夾的副本,以避免覆蓋原始源代碼。您只需要從DriveWorks導(dǎo)入DriveNet樣品;你將不需要其他樣品。
確保DriveNet示例在繼續(xù)之前正確運行。通過在主機和DRIVE PX 2上的終端窗口中執(zhí)行以下代碼來執(zhí)行此操作。DriveWorks樣品的主機執(zhí)行和主機編譯只能在裝有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
此外,請確?!笆謩印敝鳈C編譯和DRIVE PX 2交叉編譯成功運行。在您的主機上,執(zhí)行以下操作:
cd/usr/local/driveworkssudocp-r樣本樣本-原始光盤樣本-原創(chuàng)sudomkdirbuild-主機cdbuild-主機sudocmake..sudomake-j
現(xiàn)在為您的DRIVE PX進(jìn)行交叉編譯。查找主機中的DriveSDK文件夾并記下其完整路徑。在以下代碼片段中將DriveSDK路徑替換為“
sudomkdirbuild-targetcdbuild-targetsudocmake-DCMAKE_BUILD_TYPE=發(fā)布-DCMAKE_TOOLCHAIN_FILE=/usr/local/driveworks/samples-original/cmake/Toolchain-V4L。cmake-DVIBRANTE_PDK:STRING=/drive-t186ref-linux..sudomake-j
假設(shè)上述操作正常運行,請配置Nsight Eclipse使其自動運行。首先,復(fù)制主機上現(xiàn)有的DriveWorks源代碼文件夾。在主機終端窗口中,鍵入:
cd/usr/local/driveworkssudocp-r樣本樣本-nsight
保持距離只有這些文件夾中samples-nsight/src的文件夾:framework,dnn,drivenet。
插件修改
現(xiàn)在我們來運行Nsight!由于示例工作目錄位于“/ usr”中,因此需要將Nsight Eclipse作為“根”打開。
sudo/usr/local/cuda/bin/nsight
在本教程中,您將使用“cmake4eclipse”插件,它將幫助您配置CMake構(gòu)建過程。該插件還從DriveWorks CMake配置文件中自動派生包含。
從Nsight Eclipse主菜單中選擇“Help> Install New Software ...”,然后從“Work with”下拉列表中選擇“http://download.eclipse.org/releases/juno/”。在搜索字段中輸入“market”并點擊圖2所示的“Marketplace Client”。之后,選擇“Next>”并按照提示完成安裝。
圖2.安裝Eclipse marketplace客戶端
現(xiàn)在讓我們安裝市場上的cmake4eclipse插件。在Nsight主菜單中,在Nsight主菜單中選擇“Help> Eclipse Marketplace ...”,然后在搜索窗口中輸入“cmake”。現(xiàn)在通過單擊“Install”安裝cmake4eclipse插件,如圖3所示。按照提示完成安裝。或者,您也可以安裝CMake Editor插件以及語法高亮顯示。
圖3.安裝cmake4eclipse插件
一旦你安裝了插件,創(chuàng)建一個新的CUDA C / C ++項目:“文件>新建> CUDA C / C ++項目”。將“DriveNet”寫為“項目名稱”,取消選中“使用默認(rèn)位置”并瀏覽至“/ usr / local / driveworks / samples-nsight”。
選擇“空項目”作為“項目類型”,選擇“CUDA Toolkit 9.0”作為“工具鏈”。點擊“下一步”后,將剩余選項保留為默認(rèn)值,如圖4所示。
圖4.創(chuàng)建一個新的CUDA C / C ++項目。
現(xiàn)在不要指定“目標(biāo)系統(tǒng)”。您將為主機和目標(biāo)創(chuàng)建兩種不同的配置。
主機環(huán)境配置
現(xiàn)在我們來完成設(shè)置主機環(huán)境配置的步驟:
-
右鍵單擊“DriveNet”并從Project Explorer窗口中選擇“Properties”。
-
現(xiàn)在進(jìn)入“Build> CMake”標(biāo)簽并點擊“管理配置...”。
-
在彈出的新窗口中輸入build-host作為“Name”,然后選擇“Release:CUDA Toolkit 9.0”作為“Default configuration”,為主機創(chuàng)建一個新的配置。
-
點擊“確定”和“設(shè)置活動”。
-
現(xiàn)在返回到“DriveNet的屬性”窗口并修改“文件夾”字段,使其僅包含“$ {ConfigName}”。
-
切換到“符號”選項卡,單擊“添加”按鈕,然后在“要定義的CMake緩存條目”字段中鍵入CMAKE_BUILD_TYPE作為“變量名稱”,STRING作為“類型”,并釋放為“值”。
-
點擊“確定”,然后點擊“應(yīng)用”確認(rèn)。
如果您有點困惑,請使用圖5作為參考。這會為主機創(chuàng)建一個發(fā)布類型配置。稍后,您將為目標(biāo)創(chuàng)建一個調(diào)試類型配置。
圖5.主機的CMake選項卡的配置。
在左側(cè)的“工具鏈編輯器”選項卡中,選擇“Cmake Builder(GNU Make)”作為“當(dāng)前構(gòu)建器”(如圖6所示),以便在構(gòu)建項目時使用cmake4eclipse插件在Nsight內(nèi)。
圖6.工具鏈編輯器配置。
最后,進(jìn)入“C / C ++常規(guī)>預(yù)處理器包含路徑,宏等”,找到“Providers”選項卡,選擇“CMAKE_EXPORT_COMPILE_COMMANDS Parser”行并通過點擊“上移”將其移動到列表頂部。 ,如圖7所示。包含路徑的預(yù)處理器現(xiàn)在將自動從CMake配置文件中導(dǎo)出。
圖7.預(yù)處理器包含路徑配置選項卡
點擊“應(yīng)用”,然后點擊“確定”確認(rèn)。編輯CMakeLists.txt文件以僅構(gòu)建DriveNet示例:替換該行
設(shè)置(SAMPLES框架;...
有:
設(shè)置(SAMPLES框架;dnn;drivenet)
您現(xiàn)在已準(zhǔn)備好構(gòu)建該項目。點擊“Build”,使用“Project> Build Project”命令。
DriveNet示例源文件可在“src> drivenet> drivenet> main.cpp”中找到?!?/span>sample_drivenet可執(zhí)行文件位于”build-host> src> drivenet> drivenet> sample_drivenet“中。右鍵單擊它并選擇“作為>本地C / C ++應(yīng)用程序運行”以在主機上啟動它。
目標(biāo)環(huán)境配置
現(xiàn)在是為應(yīng)用程序最終駐留的DRIVE PX 2目標(biāo)設(shè)備添加第二個環(huán)境的時候了。目標(biāo)配置與您剛剛設(shè)置的主機類似,但需要更多設(shè)置。我們來看看這個過程:
-
再次在左列中選擇“DriveNet”項目,右鍵單擊并打開“屬性”窗口。
-
從“Build”標(biāo)簽中選擇“CMake”,然后點擊“Manage Configurations ...”。
-
創(chuàng)建一個稱為“build-target”的新配置,并選擇“Debug:CUDA Toolkit 9.0”作為“Default configuration”。
-
由于我將演示如何在此示例上運行Nsight Eclipse調(diào)試器,因此我為此配置指定了“調(diào)試:CUDA Toolkit 9.0”。如果您對調(diào)試不感興趣,請選擇“發(fā)布:CUDA Toolkit 9.0”。
-
復(fù)制與圖6中顯示的主機配置相關(guān)的步驟,但是這次在“符號”選項卡中添加更多條目:
-
“變量名稱”:CMAKE_BUILD_TYPE,“類型”:“STRING”,“值”:調(diào)試
-
“變量名稱”:CMAKE_TOOLCHAIN_FILE,“類型”:“FILEPATH”,“值”:/usr/local/driveworks/samples-nsight/cmake/Toolchain-V4L.cmake
-
“變量名稱”:VIBRANTE_PDK,“類型”:“路徑”,“值”:
-
確保在主機的“DriveSDK”文件夾中將“
圖8.目標(biāo)的CMake標(biāo)簽配置。
重復(fù)與“主機配置”相同的“工具鏈編輯器”(來自圖7)和“預(yù)處理器包含路徑,宏等”(如圖8),選擇“build-target [Active]”。點擊每個標(biāo)簽的“應(yīng)用”,然后點擊“確定”繼續(xù)。
您現(xiàn)在可以按照與構(gòu)建主機版本相同的步驟交叉編譯該項目。首先通過“Project> Build Configurations> Set Active”選擇“build-target”,然后使用“Project> Build Project”命令單擊“Build”來構(gòu)建項目。您將在“build-target> src> drivenet> drivenet”中找到可執(zhí)行文件。
從Nsight Eclipse運行DRIVE PX上的示例
假設(shè)DRIVE PX駐留在本地網(wǎng)絡(luò)上,您可以將Nsight Eclipse配置為在Drive PX上遠(yuǎn)程執(zhí)行DriveNet示例。首先在DRIVE PX的終端窗口中輸入ifconfig,找到您的“<目標(biāo)IP地址>”。
配置Nsight Eclipse可在每次啟動時自動將更新的交叉編譯版本的樣本傳輸?shù)紻RIVE PX。通過創(chuàng)建一個新文件夾并將其所有權(quán)設(shè)置給nvidiaDRIVE PX上的用戶來完成。
$sshnvidia@$cd/usr/local/driveworks$sudomkdirbin-nsight$sudochown-Rnvidia:nvidiabin-nsight$exit
回到Eclipse中,點擊“運行>運行配置”頂部菜單。在“C / C ++遠(yuǎn)程應(yīng)用程序”下面添加一個新配置,并將sample_drivenet_remote鍵入為“Name”。在“遠(yuǎn)程連接”旁邊,選擇“管理”,并將<目標(biāo)IP地址>作為“主機名稱”,nvidia作為“用戶名稱”,nvidia @ <目標(biāo)IP地址>作為“標(biāo)簽”,如圖9所示。然后點擊“完成”。
圖9.指定到您的DRIVE PX的網(wǎng)絡(luò)連接。
在“遠(yuǎn)程工具包”旁邊,單擊“管理”,然后在下一部分中單擊“檢測”以識別工具包路徑:/usr/local/cuda-9.0/bin應(yīng)找到。如果不是,則需要在目標(biāo)上手動選擇CUDA工具包路徑。
要完成配置,請選中“上載本地可執(zhí)行文件”并鍵入可執(zhí)行文件的完整遠(yuǎn)程路徑:它應(yīng)該是/ usr / local / driveworks / bin-nsight / sample_drivenet。這樣,在運行之前,Nsight Eclipse會自動將更新后的DriveNet樣本發(fā)送到目標(biāo)。
在“本地”選項卡中,確保選擇“DriveNet”項目,并選擇sample_drivenet使用“搜索項目...”按鈕運行的C / C ++應(yīng)用程序。在“環(huán)境”選項卡中,單擊“新建”,然后鍵入DISPLAY作為“名稱”,并將0作為“值”?;蛘撸绻\行示例,可以將CUDA_VISIBLE_DEVICES作為“名稱”添加,將1作為“值”在iGPU上而不是DRIVE PX上的dGPU上2.單擊“運行”以在目標(biāo)上啟動應(yīng)用程序。
在DRIVE PX上運行的調(diào)試樣例2
您現(xiàn)在已經(jīng)為DRIVE PX 2指定了遠(yuǎn)程目標(biāo)系統(tǒng)配置。這使配置可用于在“運行>調(diào)試配置”菜單中調(diào)試樣本。在繼續(xù)之前,花一些時間看看這個窗口中提供的許多調(diào)試功能。
默認(rèn)情況下,Nsight自動從遠(yuǎn)程目標(biāo)下載調(diào)試過程的共享庫。然而,這大大增加了調(diào)試執(zhí)行時間。您應(yīng)該直接將Nsight Eclipse指向主機系統(tǒng)中已有的目標(biāo)庫。切換到“調(diào)試器>共享庫”選項卡,并取消選中“從遠(yuǎn)程目標(biāo)下載共享庫”。然后點擊“添加...:”添加以下路徑
-
在/ usr /本地/ driveworks /目標(biāo)/ aarch64 Linux的/ lib目錄
-
在/ usr /本地/ CUDA /目標(biāo)/ aarch64 Linux的/ lib目錄
-
/驅(qū)動-t186ref-LINUX / targetfs / usr / lib中 -
/驅(qū)動-t186ref-LINUX / targetfs / LIB / aarch64-Linux的GNU -
/驅(qū)動-t186ref-LINUX / targetfs / usr / lib中/ aarch64-Linux的GNU
將
您現(xiàn)在可以恢復(fù)應(yīng)用程序,該應(yīng)用程序一直運行到CUDA內(nèi)核中第一個斷點為止。從那里,您可以瀏覽左上窗格中的CPU和GPU調(diào)用堆棧,如圖11所示。在右上窗格中,您還可以檢查變量,寄存器和GPU內(nèi)核執(zhí)行配置(CUDA線程塊的數(shù)量和每個塊的線程數(shù))。最后,反匯編視圖可以很容易地看到在執(zhí)行代碼時如何更新寄存器值。
在GPU上的特定位內(nèi)核代碼中設(shè)置一個斷點,通過雙擊代碼中相應(yīng)的行號來消除它。(但請記住,單步執(zhí)行一個線程會導(dǎo)致同一個warp中的其他線程也步進(jìn)。)
當(dāng)你完成調(diào)試時,點擊紅色的停止按鈕退出應(yīng)用程序。
圖10.使用Nsight Eclipse Edition的遠(yuǎn)程CUDA調(diào)試
在DRIVE PX 2上進(jìn)行性能分析
現(xiàn)在您已經(jīng)對樣本進(jìn)行了調(diào)試,您可以在Nsight上運行DRIVE PX 2時對應(yīng)用程序進(jìn)行配置。初始遠(yuǎn)程目標(biāo)系統(tǒng)配置再次可用于遠(yuǎn)程配置。但是,請記住在“Make Target”配置中將CMake構(gòu)建類型更改為Release。
如果未指定-DCMAKE_BUILD_TYPE變量,則“Release”將是默認(rèn)設(shè)置,如圖4所示。單擊“Run> Profile configurations”開始分析并選擇“C / C ++ Remote Application”列表下的正確元素。請記住在右側(cè)的“Profiler”選項卡中指定一個執(zhí)行超時 - 例如60秒 - 這會在指定時間后自動殺死應(yīng)用程序。
之后,點擊“配置文件”。Nsight剖析器透視圖應(yīng)自動打開。等待Nsight運行應(yīng)用程序以創(chuàng)建執(zhí)行時間線,包括在GPU上執(zhí)行的所有CUDA運行時和內(nèi)核調(diào)用,如圖12所示。完成后,“屬性”選項卡將顯示您從此時間線中選擇的任何事件的詳細(xì)信息。這些事件也可以在下面的窗格的“詳細(xì)信息”選項卡中以文本形式查看。
圖12.使用Nsight分析器可以以直觀的方式深入分析CUDA內(nèi)核。
檢查時間線視圖下方的分析選項卡以進(jìn)一步分析性能。這使您可以通過在代碼上運行更高級的分析會話來輕松識別瓶頸
-
NVIDIA
+關(guān)注
關(guān)注
14文章
4986瀏覽量
103065 -
AI
+關(guān)注
關(guān)注
87文章
30896瀏覽量
269107 -
自動駕駛
+關(guān)注
關(guān)注
784文章
13812瀏覽量
166461
發(fā)布評論請先 登錄
相關(guān)推薦
評論