<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          jetson中使用cuda

          共 707字,需瀏覽 2分鐘

           ·

          2022-06-08 06:14


          前言

          昨天分享了 cuda在ubuntu的安裝和使用,今天在jetson nano上進(jìn)行測(cè)試驗(yàn)證使用cuda。在jetson nano上安裝使用cuda和ubuntu有所區(qū)別,所以寫了這篇文章。

          首先cuda使用上還是有cuda庫(kù)直接調(diào)用和opencv cuda庫(kù)調(diào)用,最后還有在jetson nano內(nèi)置的CUDA Samples。當(dāng)然我們也可以自己在網(wǎng)絡(luò)下載,這是官方鏈接:https://github.com/NVIDIA/cuda-samples

          jetson nano安裝cuda

          cuda在jetson nano的鏡像是默認(rèn)安裝了的,已安裝版本是:

          CUDA10.2,CUDNNv8,tensorRT,opencv4.1.1,python2,python3,tensorflow2.3,所以我們可以直接使用,不過oepncv的cuda庫(kù)是沒有的,需要我們進(jìn)行安裝,不過安裝的方式和上一篇文章類似,不過是有些操作細(xì)節(jié)需要修改一下。

          由于jetson nano上面已經(jīng)自帶了CUDA10.2,那么我們直接使用了哈。因?yàn)橐恍┢胀ㄑ菔綿emo上篇文章就介紹過了,所以本次就寫了 cuda在ubuntu的安裝使用分享

          簡(jiǎn)單信息查詢demo

          #include?"cuda_runtime.h"
          #include?"device_launch_parameters.h"
          #include?
          #include?

          using?namespace?std;
          int?main()
          {
          ?int?deviceCount;
          ?cudaGetDeviceCount(&deviceCount);

          ?for?(int?i?=?0;?i??{
          ??cudaDeviceProp?devPro;
          ??cudaGetDeviceProperties(&devPro,?i);
          ??cout?<"使用GPU:"?<??cout?<"設(shè)備全局內(nèi)存總量:"?<??cout?<"SM的數(shù)量:"?<??cout?<"每個(gè)線程塊的共享內(nèi)存大小:"?<"KB"?<??cout?<"每個(gè)線程塊的最大線程數(shù):"?<??cout?<"一個(gè)線程塊中可用的寄存器數(shù):"?<??cout?<"每個(gè)EM的最大線程數(shù):"?<??cout?<"每個(gè)EM的最大線束數(shù):"?<??cout?<"設(shè)備上多處理器的數(shù)量:"?<?}

          ?getchar();
          ????return?0;
          }

          執(zhí)行效果:

          cuda sample庫(kù)驗(yàn)證

          這是就是前言里面說到的cuda的例子,大家可以寫cuda的代碼時(shí)候,可以參考里面的范例。而在nano里面,JetPack系統(tǒng)將 CUDA 環(huán)境安裝在 /usr/local/cuda 下面。

          有人可能發(fā)現(xiàn)在 /usr/local 下面有 cuda 目錄與 cuda-10.2 目錄,兩者的內(nèi)容完全一樣。事實(shí)上 cuda 這個(gè)目錄是cuda-10.2軟鏈接,實(shí)際的內(nèi)容指向 cuda-10.2 這個(gè)目錄。因?yàn)?JetPack 以后會(huì)更新 CUDA 版本,所有 cuda-10.2 可能會(huì)改變,于是就使用 cuda 軟連接來確保一致性。

          接下來進(jìn)入 samples 目錄

          cd /usr/local/cuda/samples/,里面有早已經(jīng)放置好的示例,但是都是沒有編譯的,當(dāng)然我們可以在samples目錄下直接使用sudo make -j4進(jìn)行編譯,但是實(shí)際上在我編譯發(fā)現(xiàn)在主目錄編譯太費(fèi)時(shí)間了,建議大家到各個(gè)子目錄進(jìn)行編譯,然后驗(yàn)證。

          在每個(gè)目錄下面都有對(duì)應(yīng)的子Makefile文件,大家到子目錄make即可。例如:cd 5_Simulations/nbody/,(nbody 是粒子碰撞模擬,大家也可以到其他目錄驗(yàn)證測(cè)試,因?yàn)檫@個(gè) nbody 范例提供 GPU 與 CPU 的執(zhí)行,可以讓大家更清楚兩者之間的性能差距) 然后 sudo make -j4

          ls -l 大家就可以看到綠色編譯好的可執(zhí)行文件,這個(gè)時(shí)候我們就可以 sudo ./nbody 進(jìn)行測(cè)試

          這個(gè)范例默認(rèn)是在 GPU 上執(zhí)行,并且預(yù)設(shè)粒子數(shù)量為 1024 個(gè)。可以視窗頭部看到一些性能相關(guān)的信息,包括:模擬粒子數(shù)是1024個(gè)、渲染性能的幀率、指令性能BIPS(每秒百萬次)、計(jì)算機(jī)性能GFLPOS(單精度狀態(tài))。此外在界面的左上角還有粒子大小、速度阻尼、軟化系數(shù)、時(shí)間步長(zhǎng)、集群規(guī)模、速度范圍。

          sudo ./nbody GPU跑的示意圖

          cpu執(zhí)行的話是需要設(shè)置額外的參數(shù) sudo ./nbody -cpu -numbodies=1024

          CPU跑的示意圖

          將視窗頭部的性能數(shù)據(jù)與前一個(gè)在 GPU 上執(zhí)行的結(jié)果進(jìn)行比較,可以幾項(xiàng)性能都有10倍左右的差距,這效果就非常顯而易見了。這就是GPU使用的明顯對(duì)比了哈。

          編譯opencv的cuda庫(kù)

          這個(gè)和上一篇文件類似,也是要一些特殊的cmake選項(xiàng),我執(zhí)行編譯的選項(xiàng)如下,大家把opencv_contrib-4.1.1替換成自己的目錄即可。

          cmake?-D?CMAKE_BUILD_TYPE=Release\
          ??-D?ENABLE_CXX11=ON\
          ??????????-D?CMAKE_INSTALL_PREFIX=/usr/local\
          ??????????-D?WITH_CUDA=ON\
          ???????????-D?CUDA_ARCH_BIN=${cuda_compute}\
          ???????????-D?CUDA_ARCH_PTX=""\
          ???????????-D?ENABLE_FAST_MATH=ON\
          ???????????-D?CUDA_FAST_MATH=ON\
          ???????????-D?WITH_CUBLAS=ON\
          ????????????-D?WITH_LIBV4L=ON\
          ????????????-D?WITH_GSTREAMER=ON\
          ?????????????-D?WITH_GSTREAMER_0_10=OFF\
          ?????????????-D?WITH_OPENGL=ON\
          ?????????????-D?CUDA_NVCC_FLAGS="--expt-relaxed-constexpr"?\
          ?????????????-D?CUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-10.2\
          ?????????????-D?WITH_TBB=ON\
          ?????????????-D?OPENCV_EXTRA_MODULES_PATH=/home/jetson/lyn_work/opencv_contrib-4.1.1/modules??????????../

          不過這里我進(jìn)行了先在我的ubuntu系統(tǒng)進(jìn)行cmake 和make執(zhí)行,把opencv-4.1.1和opencv_contrib-4.1.1兩個(gè)文件夾打包拷貝到我的jetson nano編譯。為什么這么做呢,因?yàn)橛龅搅艘恍┚幾g錯(cuò)誤,如下:

          [?98%]?Linking?CXX?executable?../../bin/opencv_perf_xphoto
          In?file?included?from?/home/jetson/lyn_work/opencv-4.1.1/modules/core/include/opencv2/core.hpp:54:0,
          ???????????????from?/home/jetson/lyn_work/opencv-4.1.1/modules/core/include/opencv2/core/cuda.hpp:51,
          ???????????????from?/home/jetson/lyn_work/opencv_contrib-4.1.1/modules/cudaoptflow/include/opencv2/cudaoptflow.hpp:50,
          ???????????????from?/home/jetson/lyn_work/opencv-4.1.1/build/modules/cudaoptflow/precomp.hpp:48:
          /home/jetson/lyn_work/opencv-4.1.1/modules/core/include/opencv2/core/base.hpp:320:40:?error:?expected?constructor,?destructor,?or?type?conversion?before?‘(’?token
          #define?CV_Error(?code,?msg?)?cv::error(?code,?msg,?CV_Func,?__FILE__,?__LINE__?)

          網(wǎng)上也有一些相似問題,不過經(jīng)過自己對(duì)比log之后,發(fā)現(xiàn)是jetson上面網(wǎng)絡(luò)不好,在編譯opencv中,下載一些包,網(wǎng)絡(luò)不太通暢,導(dǎo)致下載失敗,最終導(dǎo)致的編譯error。所以我在自己ubuntu系統(tǒng)(有梯子)下載好之后再進(jìn)行編譯。

          -- data: Download: face_landmark_model.dat

          在拷貝到j(luò)etson nano之后,解壓兩個(gè)文件夾,在opencv的build目錄刪除掉 cmake的緩存文件,rm CMakeCache.txt ,重新cmake ,這個(gè)時(shí)候重新編譯就不需要重新下載依賴的包了。

          編譯完之后,我們就可以使用,測(cè)試方法還是和上一篇文章類似,這里我就不多贅述了,大家可以參考上一篇的內(nèi)容。cuda在ubuntu的安裝使用分享

          結(jié)語(yǔ)

          這就是我自己的一些cuda在jetson nano的使用分享,下一篇我們聊聊cuda實(shí)際使用gpu加速和cpu使用的對(duì)比,以及它兩使用場(chǎng)景分析。。如果大家有更好的想法和需求,也歡迎大家加我好友交流分享哈。


          作者:良知猶存,白天努力工作,晚上原創(chuàng)公號(hào)號(hào)主。公眾號(hào)內(nèi)容除了技術(shù)還有些人生感悟,一個(gè)認(rèn)真輸出內(nèi)容的職場(chǎng)老司機(jī),也是一個(gè)技術(shù)之外豐富生活的人,攝影、音樂 and 籃球。關(guān)注我,與我一起同行。

                                        ????????????????  END  ????????????????

          推薦閱讀

          【1】jetson nano開發(fā)使用的基礎(chǔ)詳細(xì)分享

          【2】Linux開發(fā)coredump文件分析實(shí)戰(zhàn)分享

          【3】CPU中的程序是怎么運(yùn)行起來的 必讀

          【4】cartographer環(huán)境建立以及建圖測(cè)試

          【5】設(shè)計(jì)模式之簡(jiǎn)單工廠模式、工廠模式、抽象工廠模式的對(duì)比

          本公眾號(hào)全部原創(chuàng)干貨已整理成一個(gè)目錄,回復(fù)[ 資源 ]即可獲得。



          瀏覽 105
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  欧美啊啊啊啊啊啊啊 | 91熟女视频 | 亚洲不卡顿一区二区 | 久久性爱免费视频 | 五月天成人在线 |