Использование FindBLAS и FindLAPACK в CMake

Я немного смущен утилитой

find_package (BLAS) и find_package (LAPACK) в CMake.

Кажется, что в зависимости от найденного поставщика, требуется другой исходный код. Например, мкл имеет

mkl.h и / или mkl_lapacke.h

но по крайней мере одна другая реализация lapack имеет заголовок, который просто называется lapacke.h

так нужны разные заголовки.

а также соматкопия для mkl — это mkl_somatcopy, тогда как другие библиотеки явно не имеют префикса mkl_.

Как вы согласовываете это в общем виде, чтобы заставить инструмент, такой как find_package (LAPACK) работать эффективно?

Есть ли стандартный заголовок, потому что он не похож на lapacke.h для интерфейса lapacke?

Наконец, Accelerate указан в качестве опции, но Accelerate включает в себя эквивалентные функции LAPACK 3.2.1, в которых отсутствует интерфейс LAPACKE, который является доступны в MKL и текущем netlib lapacke 3.5 ..

3

Решение

Итак, пример, который я привел, является примером расширения blas. Сами функции бласа одинаковы. Единственная проблема заключается в различном заголовке между mkl и другими интерфейсами blas / lapack. Что касается cmake, то упомянутые процедуры find_package () немного неуместны. Я нашел, что проще всего искать mkl, использовать его, если он найден, иначе вернуться к процедурам findblas в cmake, затем я использую add_definitions, чтобы определить макрос препроцессора для переключения между mkl и другими реализациями …

1

Другие решения


По вопросам рекламы [email protected]