主頁 >  其他 > windows上用vs2017靜態編譯onnxruntime-gpu CUDA cuDNN TensorRT的坎坷之路

windows上用vs2017靜態編譯onnxruntime-gpu CUDA cuDNN TensorRT的坎坷之路

2022-12-14 06:58:50 其他

因為作業業務需求的關系,需編譯onnxruntime引入專案中使用,主專案exe是使用的vs2017+qt5.12,

onnxruntime就不用介紹是啥了撒,在優化和加速AI機器學習推理和訓練這塊赫赫有名就是了,

有現成的別人編譯好的只有dll動態庫,當然我們顯然是不可能使用的,因為BOSS首先就提出一定要讓發布出去的程式體積盡量變少,我肯定是無法精細的拆分哪一些用到了的,哪一些代碼是沒用到的,還多次強調同時執行效率當然也要杠杠滴,

所以下面就開始描述這幾天一系列坎坷之路,留個記錄,希望過久了自己不會忘記吧,如果能幫助到某些同行少走些彎路也最好:

1. Clone repo

詫一聽你可能會覺得一個大名鼎鼎的Microsoft開源專案,又是在自家的Windows上編譯應該很簡單很容易吧?

的確我一開始也是這樣認為的,犯了太藐視的心態來對待他,

一開始就使用git clone下來代碼,分支先鎖定在rel-1.13.1發行版上,

簡單cmake跑了下,這些就省略,發現少了一些external里面的子專案的參考,

這當然難不倒我,簡單,git --recursive 重新下載所有的submodules,

礙于網路情況,等待許久時間下載到一半就斷了,后來給git設定了代理,下載完成,

2. CMake Configure

后來等待cmake跑先編譯純cpu的版本(不帶gpu并行運算加速),

具體表現在cmake上是設定 onnxruntime_USE_CUDA 、onnxruntime_USE_TENSORRT、onnxruntime_USE_ROCM 等等一系列環境變數設定 False,

現在都忘記中間的程序了,反正自己鼓弄后來發現這步驟,最好是使用他所提供的一個python腳本,內部去呼叫cmake生成專案,這個步驟在它onnxruntime的官方檔案上有說,

大概就是用這個腳本專案根目錄上的build.bat 去執行,

內部會呼叫 onnxruntime\tools\ci_build\build.py 去跑cmake,內部會用cmake Configure和Generate版本,

前提是很多引數需要提前設定好,比如說我是預先執行這一串命令:

set ZLIB_INCLUDE_DIR=D:\extlibs\zlib\build-msvc-static\install\include/
set ZLIB_LIBRARY=D:/extlibs/zlib/build-msvc-static/install/lib/
set ZLIB_LIBRARY_DEBUG=D:/extlibs/zlib/build-msvc-static/install/lib/zlibstaticd.lib
set ZLIB_LIBRARY_RELEASE=D:/extlibs/zlib/build-msvc-static/install/lib/zlibstatic.lib
set CUDA_HOME=F:\NVIDIA\CUDA\v11.6
set CUDNN_HOME=F:\NVIDIA\CUDNN\v8.5
set TENSORRT_HOME=F:\NVIDIA\TensorRT\v8.4.3.1
set HTTP_PROXY=http://127.0.0.1:10809  rem  你懂的
set HTTPS_PROXY=http://127.0.0.1:10809  rem 你懂的

然后執行:

build.bat --config RelWithDebInfo --skip_tests --parallel --cmake_generator "Visual Studio 15 2017"

中間肯定是不會一次成功的,相信我,后來再跑到cmake成功后,我用cmake-gui重新打開剛剛generate好的project,發現有不少環境變數需要調整,比如一些test不需要,一些unit_test不需要,所有shared_lib都改成static_lib,還有absl需要使用自己編譯的,AVX2和AVX等CPU指令加速都開啟來,當然這些只是小試牛刀,后面還有更多隱晦的引數需要改動,

 

3. 開始用vs2017編譯

一切都生成sln解決方案檔案之后,開始編譯,大概等待了30分鐘之后,發現編譯錯誤:

 

 看了下報錯這個地方代碼,大概我判斷是因為專案使用了一些 c++17 的新特性,但是編譯器不認識,所以就報奇怪的{ }大括號錯了,又有使用了nodiscard關鍵字,遂回傳去CMake將這兩個變數設定成如圖所示:

 

查了下vs2017是支持c++17的,滿懷欣喜的喝了一口茶,回來看還是一樣錯誤,后來就在折騰cppreference,和模擬onnxruntime專案上那種寫法去(c++17的noexcept用法)測驗,為什么vs2017上那樣使用noexcept就會報錯,用在線的gcc和clang都可以,在vs2017上就是不行,擺脫喂,c++17既然支持不完整,那就別說支持呀,最后直接放棄vs2017了,

后來不想折騰了,重新下載安裝了vs2022,等待許久,還好公司網路還好,在線安裝下載vs速度都是10MB/s左右跑滿百兆,這里充分體現了網速對作業效率的重要性XD,

 

4. 改用vs2022編譯cpu版本

vs2022安裝好后,直接修改了下build.bat引數

build.bat --config RelWithDebInfo --skip_tests --parallel --cmake_generator "Visual Studio 17 2022"

然后重新走上面的流程,直接就很順利的編譯完了所有lib檔案,竟很訝異,隱隱覺得事情絕對沒有這么簡單,

體積也還很小哦,

5. 加入CUDA + cuDNN + TensorRT環境

這里有一個坑,必須必須要按照檔案所說的版本號去對照,不能什么都去直接裝最新版!

打個比方如果你打算編譯的是onnxruntime 1.13.1

那么能夠與之搭配的TensorRT版本就是8.4.*.*,

TensorRT又依賴的cuDNN版本是8.5.0.96 和 CUDA 11.4,如果你安裝的是CUDA10或者CUDA12,那么將會在CUDA編譯的時候報錯各種函式找不到!


ONNX Runtime TensorRT CUDA版本對應表:
https://onnxruntime.ai/docs/execution-providers/TensorRT-ExecutionProvider.html

 

 


ONNX Runtime  CUDA cuDNN版本對應表:
https://onnxruntime.ai/docs/execution-providers/CUDA-ExecutionProvider.html#requirements

 

 


TensorRT components版本對應表:
https://docs.nvidia.com/deeplearning/tensorrt/archives/tensorrt-843/install-guide/index.html

 

這里放出我當初記錄的下載地址:
CUDA各版本下載地址:
https://developer.nvidia.com/cuda-toolkit-archive

cuDNN各版本下載地址:
https://developer.nvidia.com/rdp/cudnn-archive

TensortRT各版本下載地址:
https://developer.nvidia.com/nvidia-tensorrt-download

TensorRT依賴庫版本對應表:
https://docs.nvidia.com/deeplearning/tensorrt/release-notes/tensorrt-8.html#rel-8-4-3

TensortRT檔案手冊:
https://docs.nvidia.com/deeplearning/tensorrt/archives/index.html#trt_8

cuDNN安裝教程:
https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html#installdriver-windows

TensortRT安裝教程:
https://docs.nvidia.com/deeplearning/tensorrt/install-guide/index.html#installing-zip

下載之后 最后分別按照順序(先CUDA、再CUDNN,最后TensorRT)安裝解壓到磁盤上,

 

最后設定環境變數

CUDA_HOME=F:\NVIDIA\CUDA\v11.6

CUDA_PATH=F:\NVIDIA\CUDA\v11.6

CUDA_PATH_V11_6=F:\NVIDIA\CUDA\v11.6

CUDNN_HOME=F:\NVIDIA\CUDNN\v8.5

TENSORRT_HOME=F:\NVIDIA\TensorRT\v8.4.3.1

PATH+=F:\NVIDIA\CUDA\v11.6\bin

PATH+=F:\NVIDIA\CUDA\v11.6\libnvvp

PATH+=F:\NVIDIA\CUDNN\v8.5\bin

PATH+=F:\NVIDIA\TensorRT\v8.4.3.1\lib

然后勾上CMake上的這三個變數,再重新generate

onnxruntime_USE_CUDA

onnxruntime_USE_TENSORRT

onnxruntime_USE_TENSORRT_BUILTIN_PARSER

 

其中ROCm和MiGraphX、oneDNN和OpenVINO應該也類似,我沒去試,

另外放出所有onnxruntime C++它支持的硬體加速庫有這些:

 

CoreML(Apple Machine Learning framework)
cuDNN(NVIDIA CUDA(Compute Unified Device Architecture) Deep Neural Network Library)
Direct ML(Microsoft DirectX 12 library for machine learning)
NNAPI(Android Neural Networks API)
oneDNN(Intel oneAPI Deep Neural Network Library)
OpenVINO(Open Visual Inference and Neural network Optimization)
SNPE(Qualcomm Snapdragon Neural Processing Engine SDK)
TensorRT(NVIDIA Machine Learning framework)
ACL(Arm Compute Library)
ArmNN(machine learning inference engine for Android and Linux)
CANN(HuaWei Compute Architecture for Neural Networks)
MIGraphX(AMD's graph inference engine that accelerates machine learning model inference)
ROCm(AMD's Open Software Platform for GPU Compute)

 

6. 測驗專案中去鏈接靜態庫

將lib檔案拷貝過去qt寫的demo,pro上引入lib檔案和include檔案,

pro加入c++17的支持:CONFIG += c++17

加入:

#Dbghelp.lib

LIBS += -lDbghelp

#Advapi32.lib

LIBS += -lAdvapi32

這些全部配好之后,以編譯demo專案,報LNK2001鏈接錯誤,如圖所示:

 

Google查了下這個錯誤是因為 Modi Mo 這家伙干的,從2019年之后有一個vcrt新特性,c++的exception在x64 runtime下的libraries檔案結構進行了調整,可以節約了exe大量體積,

詳見:https://devblogs.microsoft.com/cppblog/making-cpp-exception-handling-smaller-x64/

所以我使用vs2022編譯的lib檔案,在vs2017的exe中去參考,會報 __CxxFrameHandler4 不兼容的錯誤,

在這篇blog下,還不乏各種因為失去兼容性而帶來的抱怨之聲,更多的是問如果關閉這個特性,

 

按照他的方法,我在CMake中將CMAKE_CXX_FLAGS 末尾加上 -d2FH4-

以及在CMake的 LINKER_FLAGS相關的幾個末尾加上 -d2:-FH4-

 

 

設定了這個標志之后再重新編譯,再重新copy到demo專案中去參考,就沒報__CxxFrameHandler4找不到符號的鏈接錯誤了,

只能庫比程式vcrt版本低(向前兼容),但是不能反過來程式比庫版本還低

但是又變成報另外一種奇奇怪怪的鏈接錯誤,如下圖所示:

 

 

7. 改用vs2019編譯

 查了下上面的 __imp__std_init_once_complete的錯誤原因,網上基本上說的就是因為vcrt版本不一致所導致的錯誤,

解決辦法就只有統一使用同一種編譯器進行編譯,我簡直要醉了,

我裝個vs2019再改這兩個編譯flag試試吧,畢竟vs2022和vs2017間隔太遠了,誰知道期間除了__CxxFrameHandler4還有別的什么二進制不兼容的問題,

漫長的下載安裝等待中,結束之后,里面去使用vs2019重新走一遍之前的操作,居然一樣,還是報跟2022一樣的錯誤,看來vcrt2017到2019發生了重大更新呀,

那么我嘗試將有報__imp__std_init_once_complete錯誤的專案更改他們的編譯器(平臺工具集),部分專案降級修改成Visual Studio 2017(v141),

 再嘗試編譯,

錯誤:LINK : error LNK1218: 警告被視為錯誤;未生成輸出檔案

警告:warning LNK4221: 此物件檔案未定義任何之前未定義的公共符號,因此任何耗用此庫的鏈接操作都不會使用此檔案

查了原因是因為,官方解釋:

https://learn.microsoft.com/zh-cn/cpp/error-messages/tool-errors/linker-tools-warning-lnk4221?view=msvc-170

是因為vs2017比較嚴格一些?這個會報警告出來,查了下有兩種解決方法,

一是將這個警告忽略,即在【配置屬性】 【C/C++】 【高級設定】中將這個警告禁用掉:

 

第二種是去【配置屬性】 【C/C++】 【常規】,有一個選項叫’將警告視為錯誤‘,將其設定成【否】,

 

 但是我按照這樣操作一波,仍然不行,重啟了vs也不行,難道這是遇到vc的bug了?仔細看錯誤資訊發現就是那個cpuid_uarch.cc和string_view.cc檔案有問題,閱讀了下代碼,發現是有一個宏,只在arm環境下會編譯,在win下應該不會產生任何函式和類的實作體,相當于是一個空的namespace而已,

我修改它這個檔案,把它的#ifdef 從namespace里面移到上一級namespace外面來,就解決這個問題了,

這樣就還剩下只有protobuf的庫的靜態鏈接沒有解決,

onnx_proto.lib(onnx-ml.pb.obj) : error LNK2001: 無法決議的外部符號 "public: virtual class google::protobuf::MessageLite * __cdecl google::protobuf::MessageLite::New(class google::protobuf::Arena *)const " (?New@MessageLite@protobuf@google@@UEBAPEAV123@PEAVArena@23@@Z)
onnx_proto.lib(onnx-data.pb.obj) : error LNK2001: 無法決議的外部符號 "public: virtual class google::protobuf::MessageLite * __cdecl google::protobuf::MessageLite::New(class google::protobuf::Arena *)const " (?New@MessageLite@protobuf@google@@UEBAPEAV123@PEAVArena@23@@Z)
onnx_proto.lib(onnx-ml.pb.obj) : error LNK2001: 無法決議的外部符號 "public: virtual void __cdecl google::protobuf::Message::DiscardUnknownFields(void)" (?DiscardUnknownFields@Message@protobuf@google@@UEAAXXZ)
onnx_proto.lib(onnx-data.pb.obj) : error LNK2001: 無法決議的外部符號 "public: virtual void __cdecl google::protobuf::Message::DiscardUnknownFields(void)" (?DiscardUnknownFields@Message@protobuf@google@@UEAAXXZ)
debug\videoonnxdemo.exe : fatal error LNK1120: 2 個無法決議的外部命令

 

看了下專案的CMakeLists里面似乎有個注釋

 

 

還有一段話:The onnxruntime_PREFER_SYSTEM_LIB is mainly designed for package managers like apt/yum/vcpkg.
Please note, by default Protobuf_USE_STATIC_LIBS is OFF but it's recommended to turn it ON on Windows. You should set it properly when onnxruntime_PREFER_SYSTEM_LIB is ON otherwise you'll hit linkage errors.
If you have already installed protobuf(or the others) in your system at the default system paths(like /usr/include), then it's better to set onnxruntime_PREFER_SYSTEM_LIB ON. Otherwise onnxruntime may see two different protobuf versions and we won't know which one will be used, the worst case could be onnxruntime picked up header files from one of them but the binaries from the other one.

機翻譯過來就是onnxruntime_PREFER_SYSTEM_LIB 主要是為像 apt/yum/vcpkg 這樣的包管理器設計的,
請注意,默認情況下 Protobuf_USE_STATIC_LIBS 是關閉的,但建議在 Windows 上將其打開, 當 onnxruntime_PREFER_SYSTEM_LIB 為 ON 時,您應該正確設定它,否則您會遇到鏈接錯誤,
如果您已經在系統中的默認系統路徑(如 /usr/include)安裝了 protobuf(或其他),那么最好將 onnxruntime_PREFER_SYSTEM_LIB 設定為 ON, 否則 onnxruntime 可能會看到兩個不同的 protobuf 版本,我們不知道將使用哪個版本,最壞的情況可能是 onnxruntime 從其中一個獲取頭檔案,但從另一個獲取二進制檔案,

發現雖然沒有開啟onnxruntime的ONNX_USE_LITE_PROTO選項,

但是鏈接的libprotobuf仍然會參考到幾個lite相關的函式,所以有此鏈接錯誤,

 

因此手動打開\external\protobuf\cmake\protobuf.sln,進行手動編譯,

很順利就編譯成功,最終生成lite相關的lib檔案:

 

 最后大功告成,demo鏈接錯誤完全不報了,

這時候看到 error 0, warning 0 有一種異樣到無以言表的感覺,

全篇完結,

 

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/539863.html

標籤:其他

上一篇:零基礎開啟元宇宙|抖音快手虛擬形象直播【原始碼】

下一篇:Velero系列文章(五):基于 Velero 的 Kubernetes 集群備份容災生產最佳實踐

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more