Eigen 模板库的简介
Eigen 是一個(gè) C++ 模板庫(kù),主要用于:線性代數(shù)、矩陣、向量、數(shù)值計(jì)算和相關(guān)算法。
一、特點(diǎn):
1、通用性
支持所有矩陣,從小型固定矩陣到任意大密集矩陣、稀疏
支持所有標(biāo)準(zhǔn)數(shù)據(jù)類型,包括 std::complex, integers,并且很容易擴(kuò)展到自定義類型
支持不同的矩陣分解(如QR,SVD等)和幾何特性
其 unsupported modules 提供和很多特殊性質(zhì),如非線性優(yōu)化、矩陣函數(shù)、多項(xiàng)式求解、快速傅里葉變換等等。
2、快速性
表達(dá)式模板允許智能刪除臨時(shí)數(shù)據(jù),并能適當(dāng)使用惰性編譯
向量化處理:支持 SSE 2/3/4, AVX, FMA, AVX512, ARM NEON (32-bit and 64-bit), PowerPC AltiVec/VSX (32-bit and 64-bit) 指令集, 并且現(xiàn)在支持 S390x SIMD (ZVector) 單指令多數(shù)據(jù)
充分優(yōu)化固定大小的矩陣: 避免使用動(dòng)態(tài)內(nèi)存分配, 但需要時(shí)會(huì)展開循環(huán)
對(duì)于大型矩陣,特別注意緩存友好
3、可靠性
算法根據(jù)可靠性小心選擇。可靠性取舍清楚地列出,能進(jìn)行非常安全的分解
通過(guò)自己的測(cè)試套件進(jìn)行了全面測(cè)試,BLAS 標(biāo)準(zhǔn)測(cè)試套件和 LAPACK 測(cè)試條件的一些部分
4、完美性
表達(dá)式模板對(duì)C++語(yǔ)法來(lái)說(shuō),語(yǔ)義清楚,表達(dá)式優(yōu)雅
執(zhí)行算法感覺像復(fù)制的偽代碼
5、多編譯器支持
為了保證可靠性,在很多編譯器上運(yùn)行了測(cè)試套件,繞過(guò)了所有的編譯器bugs。Eigen 是標(biāo)準(zhǔn)的C++98 庫(kù),保持了非常合理的編譯時(shí)間。
二、需求
僅僅需要 C++ 標(biāo)準(zhǔn)庫(kù)。運(yùn)用CMake編譯系統(tǒng),不過(guò)僅用于建立文檔和單元測(cè)試,自動(dòng)安裝。如果只是用Eigen,可以直接使用,不需要連接二進(jìn)制庫(kù),不需要配置頭文件。Eigen 是一個(gè)定義在頭文件中的純模板庫(kù)。
三、編譯器支持
GCC, 4.4 及以上
MSVC (Visual Studio), 2010 及以上
Intel C++ compiler. Enabling the -inline-forceinline option is highly recommended.
LLVM/CLang++, 3.4 及以上
XCode 4 and newer. Based on LLVM/CLang.
MinGW, recent versions. Based on GCC.
QNX’s QCC compiler.
注:在 ROS 系統(tǒng)中大量使用了 Eigen
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的Eigen 模板库的简介的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 返回值为对象的函数
- 下一篇: 使用 Eigen 库写第一个程序