cmake - 从 CMake 获取 BLAS 实现信息
问题描述
在我正在使用的项目中
find_package(BLAS REQUIRED)
检测 BLAS。
有没有办法判断在此之后找到了哪个 BLAS实现?
根据文档 BLA_VENDOR
可用于要求某个实现,但它不报告找到了哪一个。
不幸的是,我需要知道找到了哪个 BLAS,因为不同的实现在它们的接口上有细微的差异,例如 MKL 使用zdotu
6 个参数而不是 5 个(第一个是指向结果值的指针)。
解决方案
根据@Tsyvarev 的建议,我最终这样做了
set(BLA_VENDOR Intel10_64lp)
find_package(BLAS)
if(BLAS_FOUND)
message("MKL environment detected")
add_definitions(-DRETURN_BY_STACK)
else()
unset(BLA_VENDOR)
find_package(BLAS REQUIRED)
endif()
似乎-DRETURN_BY_STACK
(or -DFORTRAN_COMPLEX_FUNCTIONS_RETURN_VOID
) 是某些BLAS 标头 (例如cblas.h
) 识别具有 MKL 兼容声明的一种方式。
从技术上讲,可能需要尝试使用intel
mkl BLAS 的每个变体,并以某种方式选择一个,我将其放在这里是为了完整性。这也假设最后一个find_package
Intel10_32 (intel mkl v10 32 bit)
Intel10_64lp (intel mkl v10+ 64 bit, threaded code, lp64 model)
Intel10_64lp_seq (intel mkl v10+ 64 bit, sequential code, lp64 model)
Intel10_64ilp (intel mkl v10+ 64 bit, threaded code, ilp64 model)
Intel10_64ilp_seq (intel mkl v10+ 64 bit, sequential code, ilp64 model)
Intel
推荐阅读
- excel - 将变量从用户窗体传递到模块
- git - OpenSSL 和原生 windows 安全通道库有什么区别
- sql-server - 实体框架和 JSON.NET 序列化
- spring - Spring Boot 中用于 Amazon Aurora Serverless 的数据 API
- emacs - 重映射邪恶模式写入
- swift - Xcode 对“绑定”的期望是什么
“占位符? - java - 从带有处理指令的 XML 文件中读取并写入另一个输出文件
- python - 如何将固定数字添加到文件名的整数部分?
- python - 如何将文本中的一行视为整数?
- android - Xamarin Forms Android - 将操作系统时间更改为较早日期后应用程序无法启动