我是一個使用LAPACK例程的新手,所以我不深入瞭解它們,並且我想在並行化循環(openmp)中使用它們。LAPACK例程線程安全嗎?
我使用Ubuntu 14.04LTS,並使用我的軟件包管理器安裝了LAPACK。安裝的版本是:
liblapack3 3.5.0-2ubuntu1 Library of linear algebra routines 3 - shared version
相關的BLAS庫:
libblas3 1.2.20110419-7
所以,我的第一個問題很簡單:我可以用在一個循環中LAPACK的任何子程序或函數使用OpenMP並行?。 Id est,他們線程安全嗎?
另一個問題是:我可以在我的純子程序中使用任何子程序或LAPACK函數嗎?,id est,在我編碼的子程序中定義爲純。
如果這些問題的答案都是「不與所有LAPACK程序,但其中一些」,那麼,我可以用下面的子程序?:
- dgetrs做
- dgetrf
- dgetri
- dgecon
而最後一個問題:你的LAPACK程序,用我所有的內核?ID EST,是他們已經p arallel?
而且我可以看到我不能在_pure_函數中使用它們。我收到以下錯誤:'錯誤:在(1)處調用'dgetrs'的子程序不是純粹的' –
供參考:MKL爲純Fortran 95子例程提供接口https://software.intel.com/zh-cn/node/468670 – astrojuanlu