我是一个使用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