欧美日韩国产一区二区|qovd片|小明个人发布看看|小浪货你夹真紧水又多|老头把我添高潮了A片故|99热久久精品国产一区二区|久久久春色AV

軟件|地平線AI芯片技術專場第2講主講回顧( 三 )


最近 , 有件有意思的新聞 , Intel在新的大小核架構中 , 為了保證軟件兼容性 , 放棄了部分芯片中AVX512支持 。
接下來看下軟硬結合和軟硬解耦過去在整個技術棧中是怎樣做的?當我們看標準的C和C++代碼時 , 這與芯片無關 , 可以實現軟硬解耦 , 它是怎么做到的呢?我們以LLVM編譯器為例 , 編譯器里有前端、中端和后端 , 其中前端和中端里有很多的代碼分析、優化和變換 , 這些都與芯片架構無關 。 編譯器后端也有與芯片有關的部分 , 像ARM后端和RISC-V后端 , 通過這些之后 , 編譯器可以把代碼變成可執行文件 , 這些可執行文件可以部署在ARM芯片或RISC-V芯片上運行 。
對比Intel AVX禁用的消息 ,在最新的ARM處理器架構上 , 引入了一個SVE向量處理單元 , 它可以用來取代NEON 。 NEON是在 ARM架構上的一個SIMD擴展指令集 , 它類似于AVX的單指令多數據 , 但NEON是定寬的 , 即128比特 。 SVE則是變長的 , 它可以實現128比特、256比特和512比特的寬度 。 在性能評估上 , 最高可以獲得3.5倍的加速比 。 在SVE指令集層面并沒有詳細規定{128、256、512 , 它是在具體芯片實現時 , 硬件可以自己定一些常數來做 , 而所有的指令都是通過自己判斷或者加入一些參數的方式進行 , 可以不考慮向量的實際寬度 , 即在相同的指令下 , 既可以在128比特寬度下執行二進制代碼 , 也可以在256比特或512比特寬度下執行二進制代碼 , 不會出現英特爾AVX512的情況 。 所以ARM在數據并行方面 , 在二進制代碼兼容性的思考是比較超前的 , 它在想辦法規避掉問題 , 保持二進制兼容 , 通過這種方式能很好的支持底層晶體管為上面的服務 , 同時保持好軟硬解耦 。
剛剛講到了C和C++ , 在真正面向AI時代時 , 不得不提到GPU , 即CUDA 。 利用GPU里大量并行的單指令多線程架構 , 可以實現非常復雜的數據流并行運算 , 進而加速上層的張量計算 , 來獲得比較好的 AI性能加速 。
這里很典型的CUDA是英偉達提出來的 , 它通過NVCC編譯器變成PDX代碼 , PDX代碼在各代GPU上都會有自己的PTXToGPU編譯器 , 再通過驅動就可以在Ampere架構GPU或Turing架構GPU上運行 。 在過去的很多年里 , 英偉達在這方面有非常多的積累 , 而且形成了比較強的市場主導地位 。
在AI時代 , 英偉達基本上是在唱主角的 , 雖然AMD最近市值有了比較大的提升 , 但AMD對AI方面的知識一直處于被動的狀態 。 最近AMD比較大的動作是提出了ROCm編譯器 , 雖然沒有明確的介紹 , 但可以認為它是為了更好的兼容CUDA生態 , 所以它會把CUDA代碼先通過一個轉換器轉成HIP代碼 , 再通過ROCm編譯器 , 最后在AMD的GPU上運行 。

上圖右部分畫了虛線 , 這是由于當我們決策是買英偉達GPU , 還是買AMD GPU做AI計算加速時 , 大部分的開發者都會去選擇英偉達 , 因為不用擔心編譯器或Runtime的問題 , 或者有些bug沒有被測到 , 進而導致生產效率受到很大影響 , 所以右邊用了虛線 。 這條線雖然存在 , 但是好與壞 , 很多的用戶和開發者都已經用腳在投票 , 這是一個典型的軟硬結合和軟硬解耦不易做到權衡的問題 。 而且在英偉達的歷代GPU上可以通過PTX代碼實現比較好的軟硬解耦 。 同時 , 軟硬結合就體現在了NVCC編譯器和CUDA對芯片架構的深層次挖掘和利用上 , 上面是軟件1.0 。
再來看軟件2.0 , 它的整個開發流程大概分成以下幾個階段:先對一個模型進行訓練 , 之后做量化 , 因為量化能帶來芯片功能和效能的提升 , 再來看精度是否達標 , 然后做模型編譯到芯片平臺上運行 。 上述這些步驟 , 包括地平線在內 , 大部分芯片廠商都可以做到比較好的軟硬解耦 。 通過這種形式的軟硬解耦能夠保證開發者過去寫的一些歷史研發代碼可以在平臺上更好的運行 , 同時也能保證一定的供應鏈安全 。

相關經驗推薦