Я новичок, использующий процедуры 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, они уже р arallel ?.
И я вижу, что я не могу использовать их в функции _pure_. Я получаю следующую ошибку: 'Ошибка: вызов подпрограммы в 'dgetrs' at (1) не PURE' –
Для справки: MKL предоставляет интерфейсы для чистых подпрограмм Fortran 95 https://software.intel.com/en-us/node/468670 – astrojuanlu