Questa è la prima volta che cerco di utilizzare ATLAS. Non sono in grado di collegarlo correttamente. Ecco un programma molto semplice sgemm:Gemma ATLAS che collega un riferimento indefinito a '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);
...
}
Quando compilo su una piattaforma Linux con installazione standard ATLAS, dà il collegamento di errore:
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
Come potete vedere, ho provato dando diversa combinazione di librerie ma non ha aiutato. Che cosa sto facendo di sbagliato?
probabile che sia il caso, ma sono sorpreso che '' non hanno già questa guardia. –
Grazie. Non ci avevo pensato perché è abbastanza comune avere questa guardia ora un giorno nelle biblioteche. Ad ogni modo, solo fare "C" dall'esterno ha funzionato. – usman