GM支援多執行緒問題排除

2021-06-18 09:54:18 字數 480 閱讀 9352

之前測試gm處理,發現cpu總是上不去(8核,但是只能到100%)。

只能逐一排查,

1. 確認openmp開關是否開啟

2. coder庫是否支援threads(jpeg和tiff暫時不支援)

這些都沒有問題。

gm庫bug?切換不同的型別,發現jpeg都可以上200%,其它支援多核的可以上到800%。

範圍縮小到png庫了。

更新png庫到16,發現支援透明有問題,,,先規避,,,壓測,發現還是只能到100%,只能會說png庫內部問題的可能性很小了。

檢視coder png****,發現有個巨集控制了是否加鎖:setjmp_is_thread_safe。當前centos63和rh54都是沒定義這個巨集,但是測試過程中是支援不同執行緒的棧切換和重入的。如果遮蔽png庫中使用setjmp它出異常會直接abort。異常情況很少,另外測試是執行緒安全的,libpng本身宣稱支援多執行緒,因為手工增加了這個巨集定義來開啟處理png的多執行緒。

MVAPICH2多執行緒支援問題

mvapich2為了優化效能,預設的情況是將程序繫結到處理器的。因此預設是只支援單執行緒的,如果要執行mpi多執行緒程式,可以通過以下方式執行多執行緒 int provided mpi init thread argc,argv,mpi thread multiple,provided if pro...

C 支援多執行緒

c 支援多執行緒並行執行程式 1.乙個程式由乙個單執行緒開始,該單執行緒由clr和作業系統建立而成,並具有多執行緒建立額外執行緒的功能.2.建立執行緒的方法 2.1通過thread類來建立執行緒.threadstart委託建立執行緒 threadstart ts new threadstart ru...

多執行緒支援多輸入

main.c input manager.c touchscreen.c stdin.c 輸入模組分為三層,input manager.c通過鍊錶管理底層各種輸入裝置,每個裝置向上註冊inputopr結構體,提供該裝置的各種操作函式和資料。其中input manager.c實現了幾個函式供main....