[分享] GCC 的 libstdc++ 自動平行化模式
前陣子修某堂課寫了一些平行程式,無意間在GCC線上文件挖到寶
文件量沒很多就順便翻一翻
GCC 中的 libstdc++ 自動平行化模式大致上底層是由 OpenMP 所實作
包含許多常用的C++標準函數,例如 sort, search, find, for_each...
簡單來說就是可以妥善利用多核心資源來達到程式加速
而且最棒的是可以不用更動程式碼!
如果懶的k文件的話只要知道下列幾件事就可以
1. GCC 版本需求 4.3+ 若版本為4.3.x的話請注意有無安裝libgomp
2. 編譯時加入 -march=native -fopenmp -D_GLIBCXX_PARALLEL 這三個參數
3. 看 Using Specific Parallel Components 查看哪些函數有支援
4. 想要平行化的部份請注意side effect,否則可能會有race condition
5. 不要把有開Parallel Mode跟沒開的混在一起Link(詳情參閱 Using Parallel Mode )
6. 它不是 exception-safe
gcc 版本可透過 gcc -v 來查詢
官方文件 http://gcc.gnu.org/onlinedocs/libstdc++/manual/parallel_mode.html
中文文件 http://tinyurl.com/libstdc-pm
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.167.160.95
推
06/28 20:44, , 1F
06/28 20:44, 1F
※ 編輯: akasan 來自: 118.167.160.95 (06/28 20:56)
→
06/28 20:56, , 2F
06/28 20:56, 2F
推
06/28 22:35, , 3F
06/28 22:35, 3F