日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Intel MKL 多线程设置

發布時間:2023/12/18 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Intel MKL 多线程设置 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

對于多核程序,多線程對于程序的性能至關重要。 下面,我們將對Intel MKL 有關多線程方面的設置做一些介紹:

我們提到MKL 支持多線程,它包括的兩個概念:
1>MKL 是線程安全的: MKL在設計時,就保證它是一個線程安全的庫函數。 也就是說,無論是在單個線程中調用MKL函數,還是在多個線程中同時使用Intel MKL 函數,都能夠確保函數有正確的計算結果。

2>MKL函數內部實現了多線程優化。許多MKL的函數,已經包括內部多線程的實現。用戶調這些函數時,只需設置多線程的數目,MKL 函數的內部,就可以同時進行多個線程的并行計算。 Intel MKL 還提供了一個單線程版本的庫函數,這個版本中,每個函數只運行串行代碼。 我們需要在鏈接的時候,需要選擇鏈接串行(單線程)的MKL函數,還是并行(多線程)的MKL 的函數。 下面我們提到的多線控制的方法,主要是針對的并行的MKL函數庫。

那么,在MKL 的多線程庫中, 如何設置MKL 多線程的數目呢? Intel MKL 使用了OpenMP實現了多線程,所以OpenMP的環境變量與API對MKL 的多線程設置仍然有效。 除了OpenMP的方法外,MKL還提供了,其它的設置多線程的環境變量與API:

環境變量對應的API說明對于的OMP的變量
MKL_NUM_THREADSmkl_set_num_threads建議MKL 函數使用的多線程的數目。.OMP_NUM_THREADS
OMP_NUM_THREADSomp_set_num_threadsOpenMP提供的多線程設置的環境變量與API.?
MKL_DYNAMICmkl_set_dynamic建議MKL根據計算問題,自動設置多線程的數目,線程數目不超過用戶設定的線程的上限OMP_DYNAMIC

需要說明的是,Intel MKL 提供的多線程設置的方法,優先級要高于OpenMP的方法。 比程序中,同時設置了下面的環境變量:
>export MKL_NUM_THREADS =1
>export OMP_NUM_THREADS =4
此時,程序中,MKL的函數將會運行一個線程。

關于多線程的設置,我們還需要注意下面的3個問題:
第一,在超線程的機器上,Intel MKL 多線程的設置: 在系統中,當多個線程的執行不同的操作,CPU有空閑資源時,多線程技術有較好的執行效果。Intel MKL的計算核心已經經過充分優化,并且這些計算的核心都執行類似的計算操作,所有多線程的設置,對于MKL 不能提供很好的幫助。 如果在程序執行的機器上, 超線程的設置已經打開, 一個推薦的做法是,設置MKL 的線程為系統核的數目(邏輯處理器數目的一半),并設置下面的threading affinity 的環境變量:
KMP_AFFINITY=granularity=fine,compact,1,0.

第二,MKL_DYNAMIC 環境變量: 這個環境變量確定是否由Intel MKL 來選擇計算的線程的數目, 但是總的線程數不會超過MKL_NUM_THREADS與OMP_NUM_THREADS的值。 Intel MKL會根據實際計算問題的大小,以及多線程對計算是否有效等諸多情況,選擇適合的線程數目,這也是缺省的Intel MKL 多線程設置方式。

如果用戶手動設置MKL_DYNAMIC=FALSE, Intel MKL 將根據用戶指定的線程數目,設置計算線程。 比如,設置:
MKL_DYNAMIC=FALSE
MKL_NUM_THREADS=6
MKL函數將運行6個計算線程,盡管對某些小的計算問題,6個線程可能并不是最有效的。

第三,并不是所有MKL函數都是多線程。 某些計算函數,多線程并不能給程序帶來性能提升,如Level 1 BLAS,其主要計算瓶頸是數據訪問,這樣的函數,內部多線程,不能帶來很大幫助。 具體的MKL 多線程的函數列表, 可以查看用戶手冊。

有關多線程這方面的,進一步的參考文檔: 
MKL 用戶手冊:http://software.intel.com/sites/products/documentation/hpc/mkl/mkl_userguide_lnx/index.htm
相關文章:
http://software.intel.com/en-us/forums/showthread.php?t=67622
http://software.intel.com/en-us/articles/intel-math-kernel-library-intel-mkl-intel-mkl-100-threading/
http://software.intel.com/en-us/articles/setting-thread-affinity-on-smt-or-ht-enabled-systems/

總結

以上是生活随笔為你收集整理的Intel MKL 多线程设置的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。