Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/147.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ CMake中FindBLAS和FindLAPACK的使用_C++_C_Cmake_Lapack_Lapacke - Fatal编程技术网

C++ CMake中FindBLAS和FindLAPACK的使用

C++ CMake中FindBLAS和FindLAPACK的使用,c++,c,cmake,lapack,lapacke,C++,C,Cmake,Lapack,Lapacke,我有点被这个工具搞糊涂了 在CMake中查找_包(BLAS)和查找_包(LAPACK) 看起来,根据找到的供应商,不同的源代码是必要的。例如,mkl具有 mkl.h和/或mkl_lapacke.h 但至少有一个lapack的其他实现有一个报头,这个报头就是lapack.h 因此需要不同的头 mkl的somatcopy也是mkl_somatcopy,而其他库显然没有mkl_前缀 如何以一种通用的方式协调这一点,以使find_package(LAPACK)等工具有效地工作 是否有一个标准的标题,因为

我有点被这个工具搞糊涂了

在CMake中查找_包(BLAS)和查找_包(LAPACK)

看起来,根据找到的供应商,不同的源代码是必要的。例如,mkl具有

mkl.h和/或mkl_lapacke.h

但至少有一个lapack的其他实现有一个报头,这个报头就是lapack.h

因此需要不同的头

mkl的somatcopy也是mkl_somatcopy,而其他库显然没有mkl_前缀

如何以一种通用的方式协调这一点,以使find_package(LAPACK)等工具有效地工作

是否有一个标准的标题,因为对于lapacke接口,它似乎不是lapacke.h


最后,Accelerate被列为一个选项,但是Accelerate包括LAPACK 3.2.1等效功能,它忽略了在MKL和当前netlib LAPACKE 3.5中可用的LAPACKE接口。

Ok,因此我给出的示例是blas扩展的示例。blas功能本身都是相同的。唯一的问题是mkl和其他blas/lapack接口之间的头不同。就cmake而言,上面提到的find_package()例程有点不合适。我发现搜索mkl最容易,如果找到就使用它,否则返回到cmake的findblas例程,然后我使用add_定义定义一个预处理器宏,在mkl和其他实现之间进行更改