我想在我的cython代码中使用MKL库的一些函数。因此我写了函数
#include <stdlib.h>
#include <complex.h>
#include <stdbool.h>
#define MKL__Complex16 double _Complex
#include <mkl.h>
#include <mkl_cblas.h>
#include <mkl_blas.h>
#include <mkl_lapack.h>
#include <mkl_lapacke.h>
inline void scalarMult(const double _Complex *a, const int a_len, double _Complex *b, const int b_len, const double z)
{
if(a_len != b_len)
return;
if(z == 1)
memcpy(b, a, a_len);
else
cblas_daxpy(a_len, (z-1), (double*)a, 1, (double*)b, 1);
}
(是的,我正在失去精确度,但这不是重点)
现在我查看了必要的命令here,并将它们添加到extra-compile-args
中的setup.py文件中 - 配置中的部分。
-Wl,--start-group ${MKLROOT}/lib/intel64/libmkl_intel_ilp64.a ${MKLROOT}/lib/intel64/libmkl_core.a ${MKLROOT}/lib/intel64/libmkl_sequential.a -Wl,--end-group -lpthread -lm
现在编译器(gcc)首先抱怨未知命令--start-group
和--end-group
,之后我在执行期间收到错误:
./cython_wrapper.so: undefined symbol: cblas_daxpy
我该如何解决这个问题?