Lapack e Blas per C++ su Windows
Come avevo preannunciato, eccomi qui a chiedere aiuto.
Il problema è il seguente:
- voglio scrivere dei codici per PDE in C++
- questi codici richiedono un estensivo uso di metodi di soluzione di sistemi lineari avanzati
- la libreria LAPACK e i codici binari BLAS fanno esattamente questo e sono disponibili free on line. Originariamente creati per fortran, sono stati convertiti con vari magheggi in C, creando la libreria CLAPACK
- io sono "the absolute beginner" per quel che riguarda compilare codici e far giochini informatici vari.
La mia situazione software è questa:
- Windows XP
- Borland C++
- FTN95 by Silverfrost compiler per FORTRAN (http://www.silverfrost.com/11/ftn95/overview.asp)
Tutte le librerie sono ottenibili alla pagina: www.netlib.org
Ho cercato informazioni su internet e tutto quello che ho trovato è riassunto alla pagina: https://stat.ethz.ch/pipermail/r-help/2 ... 48421.html
specialmente nella sezione: http://physics.asu.edu/phy502-shumway/notes/lec11.html
inoltre esiste la documentazione originale di LAPACK alla pagina: http://www.netlib.org/clapack/faq.html
In parole povere non riesco a capire cosa devo fare per compilare CLAPACK e BLAS in modo tale da poter chiamare le funzioni contenute in esse dal mio codice C++.
Ringrazio in anticipo chiunque si prenderà la briga di dare un'occhiata al problema.
Il problema è il seguente:
- voglio scrivere dei codici per PDE in C++
- questi codici richiedono un estensivo uso di metodi di soluzione di sistemi lineari avanzati
- la libreria LAPACK e i codici binari BLAS fanno esattamente questo e sono disponibili free on line. Originariamente creati per fortran, sono stati convertiti con vari magheggi in C, creando la libreria CLAPACK
- io sono "the absolute beginner" per quel che riguarda compilare codici e far giochini informatici vari.
La mia situazione software è questa:
- Windows XP
- Borland C++
- FTN95 by Silverfrost compiler per FORTRAN (http://www.silverfrost.com/11/ftn95/overview.asp)
Tutte le librerie sono ottenibili alla pagina: www.netlib.org
Ho cercato informazioni su internet e tutto quello che ho trovato è riassunto alla pagina: https://stat.ethz.ch/pipermail/r-help/2 ... 48421.html
specialmente nella sezione: http://physics.asu.edu/phy502-shumway/notes/lec11.html
inoltre esiste la documentazione originale di LAPACK alla pagina: http://www.netlib.org/clapack/faq.html
In parole povere non riesco a capire cosa devo fare per compilare CLAPACK e BLAS in modo tale da poter chiamare le funzioni contenute in esse dal mio codice C++.
Ringrazio in anticipo chiunque si prenderà la briga di dare un'occhiata al problema.
Risposte
Io personalmente userei ATLAS + LAPACK ottimizzato (ricompilandolo dentro ATLAS), come suggeriscono qui e quindi linkando l'eseguibile finale alle librerie così ottenute (il CLAPACK lo vedo solo utile quando non si hanno compilatori FORTRAN a disposizione), soprattutto per problemi di una certa dimensione la differenza di prestazioni fra l'usare le referenceBLAS e le LAPACK di Netlib e l'usare ATLAS + LAPACK è veramente notevole.
Il problema di tutte queste librerie qui è che compilarle sotto Windows, in un ambiente non POSIX, con "strani" compilatori (il Borland è famosissimo, ma non so se funzioni su queste librerie qui, che magari usano parecchia roba POSIX...)... già è difficile compilarle in maniera decente sotto Linux/UNIX: si tratta di codice molto spinto e che, quindi, potrebbe non funzionare se compilato con certe opzioni piuttosto che con altre (alcune routine della LAPACK se compilate "spinte" proprio non funzionano!) (ATLAS anche ci starei attento a usare cose diverse da icc o gcc...)
Se puoi ti suggerisco di lavorare sotto Ubuntu o Scientific Linux, usando i pacchetti già pronti con le varie librerie. Se sei costretto a Windows, magari puoi provare Cygwin, anche se la cosa potrebbe essere più complicata e a quel punto forse non ti conviene andare di ATLAS, ma le CLAPACK + BLAS le vedo più semplici da compilare: segui le istruzioni e lancia sempre gli eseguibili di controllo (make check di solito) per verificare che sia tutto apposto... altrimenti proprio non saprei come fare.
Il problema di tutte queste librerie qui è che compilarle sotto Windows, in un ambiente non POSIX, con "strani" compilatori (il Borland è famosissimo, ma non so se funzioni su queste librerie qui, che magari usano parecchia roba POSIX...)... già è difficile compilarle in maniera decente sotto Linux/UNIX: si tratta di codice molto spinto e che, quindi, potrebbe non funzionare se compilato con certe opzioni piuttosto che con altre (alcune routine della LAPACK se compilate "spinte" proprio non funzionano!) (ATLAS anche ci starei attento a usare cose diverse da icc o gcc...)
Se puoi ti suggerisco di lavorare sotto Ubuntu o Scientific Linux, usando i pacchetti già pronti con le varie librerie. Se sei costretto a Windows, magari puoi provare Cygwin, anche se la cosa potrebbe essere più complicata e a quel punto forse non ti conviene andare di ATLAS, ma le CLAPACK + BLAS le vedo più semplici da compilare: segui le istruzioni e lancia sempre gli eseguibili di controllo (make check di solito) per verificare che sia tutto apposto... altrimenti proprio non saprei come fare.