Software-Installation
apt/yum 上的軟體包通常是為哪些微架構建構/調整的?
我只是在學習一些關於低級語言的知識,我注意到 gcc 你可以指定 -march 和 -mtune 參數來優化特定 CPU 系列的軟體。
但我也發現有人說從原始碼建構程序不會比下載二進製文件快得多。當然,能夠為系統中的 CPU 優化軟體會顯著提高速度,尤其是在像
ffmpeg
AVX 等使用相當微架構相關功能的軟體中?我想知道的是,包管理器上的二進製文件是否以某種方式針對多個微架構進行了優化?包管理器是否下載特定於我係統微架構的二進製文件?
分發包是參考預先確定的基線建構的(例如,參見Debian 的架構基線)。因此,在 Debian 中,
amd64
軟體包針對通用 x86-64 CPU,具有 SSE2 但不是 SSE3 或更高版本;i386
軟體包針對通用 i686 CPU,沒有 MMX 或 SSE。通常,使用編譯器預設值,因此調整可能會隨著編譯器本身的發展而發展。但是,可以建構 CPU 特定優化提供顯著優勢的軟體包以利用較新的 CPU。這是通過提供多種實現而不是依賴於編譯器優化並在執行時在它們之間進行選擇來完成的:打包軟體檢測正在執行的 CPU 並調整它使用的程式碼路徑以利用它(例如,參見
ffmpeg
’s )。libswscale/x86/swscale.c
在某些架構上,ld.so
它本身對此有所幫助:如果可用,它可以自動載入優化的庫,例如在i386
支持 SSE 的 CPU 上執行的架構系統上。大多數(如果不是全部)包管理器都沒有註意到這一切。他們下載給定架構的包並安裝它,而不考慮執行系統的 CPU。