提问人:PluginPenguin 提问时间:10/23/2023 最后编辑:PluginPenguin 更新时间:10/23/2023 访问量:48
EIGEN_USE_BLAS 在 Mac 上导致类型冲突错误
EIGEN_USE_BLAS causes conflicting types errors on Mac
问:
我想尝试使用 Eigen 3.4.90 为 macOS 应用程序启用 blas 支持,看看它是否能为我的用例带来任何加速。我的应用程序已经链接到 Apple Accelerate 框架,并在各个位置包含加速标头。
定义时,我收到很多冲突的类型错误,如下所示:EIGEN_USE_BLAS=1
Path/To/Eigen/src/Core/util/../../misc/blas.h:10:5: error: conflicting types for 'saxpy_'
int BLASFUNC(saxpy)(const int *, const float *, const float *, const int *, float *, const int *);
^
Path/To/Eigen/src/Core/util/../../misc/blas.h:6:24: note: expanded from macro 'BLASFUNC'
#define BLASFUNC(FUNC) FUNC##_
^
<scratch space>:391:1: note: expanded from here
saxpy_
^
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/System/Library/Frameworks/Accelerate.framework/Frameworks/vecLib.framework/Headers/fortran_blas.h:45:5: note: previous declaration is here
int saxpy_(int *n, float *da,
我看到的是,Eigen 本身使用常量指针签名声明 BLAS 函数,而 Accelerate 框架中的 Apple 标头使用非常量指针签名声明相同的函数。所以错误消息的原因很清楚,我仍然想知道如何处理?Eigen期望如何运作?正如我所说,Accelerate 标头包含在我的项目中,因为我需要从中访问函数。有没有办法避免包含非常量 Apple BLAS 函数声明,或者有什么方法可以让 Eigen 使用 Apple 声明而不是定义自己的声明?到目前为止,我还没有在 Eigen 文档中找到任何关于这方面的内容,我很高兴有任何答案将我指向我可能错过的关于这个问题的官方文档。fortran_blas.h
答: 暂无答案
评论
c
c++
#define BLAS_H