• Reset your password

User account menu

  • Artikler
  • Forside
  • Forum
  • Nyheder
  • Log in
Hjem
Linuxin 2025

Breadcrumb

  • Hjem
  • forums
  • Fedora og BLAS

Hvad kan du med 100% sikkerhed sige, at du har stemt?

Resultater

1
0% (0 stemmer)
2
0% (0 stemmer)
Schrödinger
100% (1 stemme)
Antal stemmer: 1
Af trafikselskabet | 03.12.2013 11:16

Fedora og BLAS

Programmering

Hej Alle



Jeg roder med noget C++ kode hvor jeg skal anvende BLAS biblioteket for at lave nogle matrix/vector operationer effektivt. Det virker overhovedet ikke på Fedora, men fint på alt andet (Ubuntu, Mac, Windows). Er der en med Fedora der kan prøve at compilere følgende program:



#include

#include

#include

int stuff ( ) {

enum CBLAS_ORDER order;

enum CBLAS_TRANSPOSE transa;



double *a, *x, *y;

double alpha, beta;

int m, n, lda, incx, incy, i;



order = CblasColMajor;

transa = CblasNoTrans;



m = 4; /* Size of Column ( the number of rows ) */

n = 4; /* Size of Row ( the number of columns ) */

lda = 4; /* Leading dimension of 5 * 4 matrix is 5 */

incx = 1;

incy = 1;

alpha = 1;

beta = 0;



a = (double *)malloc(sizeof(double)*m*n);

x = (double *)malloc(sizeof(double)*n);

y = (double *)malloc(sizeof(double)*n);

/* The elements of the first column */

a[0] = 1;

a[1] = 2;

a[2] = 3;

a[3] = 4;

/* The elements of the second column */

a[m] = 1;

a[m+1] = 1;

a[m+2] = 1;

a[m+3] = 1;

/* The elements of the third column */

a[m*2] = 3;

a[m*2+1] = 4;

a[m*2+2] = 5;

a[m*2+3] = 6;

/* The elements of the fourth column */

a[m*3] = 5;

a[m*3+1] = 6;

a[m*3+2] = 7;

a[m*3+3] = 8;

/* The elemetns of x and y */

x[0] = 1;

x[1] = 2;

x[2] = 1;

x[3] = 1;

y[0] = 0;

y[1] = 0;

y[2] = 0;

y[3] = 0;



// Denne er den eneste der betyder noget. Alt andet end "undefined refence to" fejl

// er meget interesante!

cblas_dgemv( order, transa, m, n, alpha, a, lda, x, incx, beta, y, incy );

/* Print y */

for( i = 0; i < n; i++ )

printf(" y%d = %f\n", i, y[i]);

free(a);

free(x);

free(y);

return 1;

}




Filen kan kompileres med følgende kommando:



gcc filnavn.cpp -L/usr/lib64 -L/usr/lib64/atlas -lstdc++ -lm -lcblas -lblas -latlas -o output





Jeg vil mene at følgende er tilstrækkeligt for YUM



sudo yum install gcc blas blas-devel atlas atlas-devel





Husk at installerede pakker kan fjernes igen hvis man ikke ønsker dem længere med

sudo yum history

sudo yum history undo NR_SOM_OVERSTÅENDE_KOMMANDO_GAV





Det underlige ved fejlen er at bliver inkluderet og at compileren kender syntaxen for kommandoen - det er som om det er implementationen af funktionerne der ikke kan findes, men de skulle da gerne følge med blas-devel osv.

Jeg har sakset overstående kode fra en pålidelig kilde, så det er ikke syntax fejl og lignende. Min compiler kan ikke finde implementationen af cblas_dgemv funktionen.



Er der nogen der har mod på at tage et kig? Eventuelt folk med openSUSE, jeg ved ikke om det måske er rpm pakkerne der giver problemer.

  • Log in to post comments

Kommentarer11

11 år 5 måneder siden

Permalink

Indsendt af Looop den 3. december 2013 kl. 15:29

Permalink

Når jeg prøver at

Når jeg prøver at kompilere på Fedora, får jeg for det først af vide at der ikk er en udbyder af atlas

og en komipleringsfejl:

gcc: error trying exec 'cclplus': execvp: No such file or directory

  • Log in to post comments

11 år 5 måneder siden

Permalink

Indsendt af frugtoase den 3. december 2013 kl. 18:39

Permalink

#0 #1 Er pakken gcc-c++

#0 #1 Er pakken gcc-c++ installeret?

  • Log in to post comments

11 år 5 måneder siden

Permalink

Indsendt af Looop den 3. december 2013 kl. 20:07

Permalink

#2 på mit Fedora ja

#2 på mit Fedora ja

  • Log in to post comments

11 år 5 måneder siden

Permalink

Indsendt af trafikselskabet den 3. december 2013 kl. 22:03

Permalink

gcc-c++

hmmm... underligt. Har du prøvet med

yum install gcc-c++

?

  • Log in to post comments

11 år 5 måneder siden

Permalink

Indsendt af Looop den 3. december 2013 kl. 23:11

Permalink

#4 Ja! jeg koder selv C og

#4 Ja! jeg koder selv C og C++ hver dag :) så den er installeret

  • Log in to post comments

11 år 5 måneder siden

Permalink

Indsendt af trafikselskabet den 4. december 2013 kl. 10:51

Permalink

Atlas skulle gerne være

Atlas skulle gerne være tilgængeligt fra YUM fra update repo. Din kompilerings fejl er jeg fuldstændig blank over :/



Hjælper det hvis du omdøber stuff() funktionen til main () ?

  • Log in to post comments

11 år 5 måneder siden

Permalink

Indsendt af mrbrown79 den 4. december 2013 kl. 15:50

Permalink

Er der en med Fedora der

#0: Er der en med Fedora der kan prøve at compilere følgende program



På Fedora 18...



$ gcc filnavn.cpp -L/usr/lib64 -L/usr/lib64/atlas -lstdc++ -lm -lcblas -lblas -latlas -o output

/usr/lib/gcc/x86_64-redhat-linux/4.7.2/../../../../lib64/crt1.o: In function `_start':

(.text+0x20): undefined reference to `main'

/tmp/cc4ZHApM.o: In function `stuff()':

filnavn.cpp:(.text+0x390): undefined reference to `cblas_dgemv(CBLAS_ORDER, CBLAS_TRANSPOSE, int, int, double, double const*, int, double const*, int, double, double*, int)'

collect2: error: ld returned 1 exit status


  • Log in to post comments

11 år 5 måneder siden

Permalink

Indsendt af trafikselskabet den 4. december 2013 kl. 20:45

Permalink

Mr Brown

Det er min fejl. Omdøb stuff() funktionen til main(). Dvs. skift linje 4 fra



int stuff ( ) {



til



int main() {





Jeg sætter stor pris på Jeres indsats :)

  • Log in to post comments

11 år 5 måneder siden

Permalink

Indsendt af trafikselskabet den 4. december 2013 kl. 20:46

Permalink

Hov

Hov, undskyld. Det var bare en af fejlene. Du får helt samme fejl som jeg.



undefined reference to `cblas_dgemv(CBLAS_ORDER, CBLAS_TRANSPOSE, int, int, double, double const*, int, double const*, int, double, double*, int)'





Verdammt!

  • Log in to post comments

11 år 5 måneder siden

Permalink

Indsendt af zity den 10. december 2013 kl. 19:52

Permalink

Det ser ud til at linkeren

Det ser ud til at linkeren ikke kan få fat i det rigtige bibliotek. Prøv evt. at bruge -lsatlas i stedet for -latlas



Noget helt andet er, at hvis du vil have en god ydelse så SKAL du selv kompilere atlas, så biblioteket bliver optimeret til den computer det kører på.



EDIT: Alternativt kan du prøve at linke den op mod GSL ved at bruge -lgslcblas. Du skal muligvis også bruge



#include



i kildekoden i stedet.

  • Log in to post comments

11 år 5 måneder siden

Permalink

Indsendt af pawsen den 11. december 2013 kl. 18:45

Permalink

Openblas

I stedet for at kompilere Atlas selv, anbefaler jeg du skifter til Openblas. Openblas er hurtigere, meget nemmere at kompilere og understøtter mpi "out of the box".



Openblas

  • Log in to post comments

Svar søges

2 stk Jolla C2 sælges 0
Den er go 0
Vil du have et sikrere og mere privat internet? Du skal blot installere Vivaldi-browseren med Proton VPN understøttelse! 0
14. februar = I Love Free Software Day 0
Lokal fil-deling - for de dovne. 0

Seneste aktivitet

Det første forumindlæg efter installation af Forum-modulet 8
Test 1
Vanilla OS 12
Nye forum-indlæg viser sig kun 1 gang 1
Vil alle forumindlæg vise sig to gange 1
Hjælp til remote terminal vindue? 3
PCLinuxOS 19
Kan ikke boote på installation 24
80-20 reglen 1
Skærmlys fader ud på min bærbare 8
32 bit distro på max 700mb der stadig understøttes 26
Har vi nogen Linux konsulenter i Slagelse området? 3
Virkelig 7
gnome-software? 3
Archer T2U AC600 Wireless Dual Band USB Adapter 26
En farverig APT 3.0 udgivelse imponerer med sine nye funktioner 2
Unix's fødsel 2
Linux Mint 13
"Intet realistisk alternativ" - mig i r*ven 1
German state moving 30,000 PCs to LibreOffice 6

Copyright © 2025 Company Name - All rights reserved

Developed & Designed by Alaa Haddad