Dies ist das erste Mal, dass ich versuche, ATLAS zu verwenden. Ich bin nicht in der Lage, es richtig zu verknüpfen. Hier ist ein sehr einfaches sgemm Programm:ATLAS gemm Verknüpfung undefined Verweis auf 'cblas_sgemm'
...
#include <cblas.h>
const int M=10;
const int N=8;
const int K=5;
int main()
{
float *A = new float[M*K];
float *B = new float[K*N];
float *C = new float[M*N];
// Initialize A and B
cblas_sgemm(CblasRowMajor, CblasNoTrans, CblasNoTrans, M, N, K, 1.0, A, K, B, N, 0.0, C, N);
...
}
Wenn ich es auf einer Linux-Plattform mit Standard-ATLAS Installation kompilieren, gibt es die Verknüpfung Fehler:
g++ test.c -lblas -lcblas -latlas -llapack
/tmp/cc1Gu7sr.o: In function `main':
test.c:(.text+0x29e): undefined reference to `cblas_sgemm(CBLAS_ORDER, CBLAS_TRANSPOSE, CBLAS_TRANSPOSE, int, int, int, float, float const*, int, float const*, int, float, float*, int)'
collect2: ld returned 1 exit status
Wie Sie sehen können, habe ich versucht, verschiedene geben Kombination von Bibliotheken, aber hat nicht geholfen. Was mache ich falsch?
wahrscheinlich der Fall zu sein, aber ich bin überrascht, dass '' nicht bereits diese Wache haben. –
Danke. Ich habe nicht darüber nachgedacht, da es ziemlich üblich ist, diesen Wächter jetzt ein paar Tage in Bibliotheken zu haben. Wie auch immer, nur extern "C" zu machen, hat es funktioniert. – usman