PVM sta per Parallel Virtual Machine; si tratta di un framework open source per la realizzazione ed esecuzione di applicazioni distribuite su un insieme di macchine [eventualmente] eterogenee interconnesse mediante una rete.
Il software è distribuito come archivio di sorgenti in formato compresso .tar.gz e può essere scaricato a partire da questa pagina: http://www.netlib.org/pvm3/index.html
Ma veniamo alla compilazione sul nostro sistema. Se installiamo su una distribuzione GNU/Linux, il comando make impartito dalla directory pvm3, creata in seguito all’estrazione del pacchetto, non presenta alcun intoppo. E’ però necessario ricordarsi di settare la variabile di ambiente PVM_ROOT al valore corretto, ad esempio col comando:
export PVM_ROOT=`pwd`
impartito dalla suddetta directory (da qui in poi, i path relativi sono da considerarsi rispetto a tale directory).
Su un sistema Mac OS X(*), invece, la compilazione restituisce il seguente errore:
../../src/pmsg.c:785: error: static declaration of ‘xdr_float’ follows non-static declaration
/usr/include/rpc/xdr.h:332: error: previous declaration of ‘xdr_float’ was here
../../src/pmsg.c:794: error: static declaration of ‘xdr_double’ follows non-static declaration
/usr/include/rpc/xdr.h:333: error: previous declaration of ‘xdr_double’ was here
Evidentemente ci sono problemi con la definizione di due funzioni nel file src/pmsg.c, che risultano già dichiarate nel file /usr/include/rpc/xdr.h. Come si può osservare nel file src/pmsg.c, però, tale definizione è inserita in un blocco condizionale che viene processato solo se è definita la macro FAKEXDRFLOAT; ciò significa che, se otteniamo quell’errore durante la compilazione su Mac OS X, per qualche motivo tale macro risulta effettivamente definita. La soluzione più intuitiva, quindi, appare quella di fare in modo che la macro FAKEXDRFLOAT non venga definita. Un workaround “casareccio” che risolve il problema è quello di editare il file conf/DARWIN.def cancellando dalla riga 4 il flag -DFAKEXDRFLOAT. Fatto ciò, impartendo nuovamente il comando make, la compilazione va a buon fine.
Attenzione: non è detto che questo modo di procedere sia quello più corretto e non induca errori inaspettati in fase di esecuzione del runtime di PVM o delle applicazioni che dovranno girare su di esso. Se non si vogliono correre rischi, è preferibile installare questo software mediante MacPorts, anche se attualmente sono fermi alla versione 3.4.5 quando la più recente è la 3.4.6.
Ciao
(*) Testato su Mac OS X 10.4.11 (Tiger) con XCode 2.0 e su Mac OS X 10.5.6 (Leopard) con XCode 3.0.
Pubblicato da Gica78R
Pubblicato da Gica78R
Pubblicato da Gica78R