Προς το περιεχόμενο
  • 0

Fortran 95, Makefile, OpenMPI σε Windows


DarkOrion

Ερώτηση

Λοιπόν, θα ήθελα την βοήθειά σας, μιας και είμαι σχετικά αρχάριος.

 

Έχω έναν κώδικα γραμμένο σε FORTRAN (διάφορες εκδόσεις το κάθε αρχείο και η κάθε υπορουτίνα). Ο κώδικας είναι πολύ βαρύς, γι αυτό είναι κατάλληλα γραμμένος να σπάει σε πυρήνες, γι αυτό χρησιμοποιεί και OpenMPI.

 

Στα Linux, έχω όλα τα fortran files μέσα σε έναν φάκελο, και έχω το makefile που περιγράφει πώς θα γίνει το compile. Χρησιμοποιώ gfort kai to compile γίνεται με την εντολή Make ARG=x, όπου χ βάζω κάθε φορά την επιλογή που θέλω. Τα Objectfiles πάνε σε έναν φάκελο που λέγεται ../obj, και το εκτελέσιμο αρχείο εξόδου είναι καθορισμένο που θα πάει. Για να το τρέξω, χρησιμοποιώ την εντολή mpirun -np(#threads) (name of executable file) και τρέχει.

 

Τώρα όλα αυτά θέλω να τα κάνω στα windows. Υπάρχει τρόπος? Βάζω Visual Studio 2010 και από πάνω Intel Visual Fortran, αλλά δεν ξέρω κατά πόσο θα βοηθήσει. Δεν με νοιάζει να γράφω τον κώδικα, μόνο να τον εκτελώ με νοιάζει, και βασικά να πάρω το εκτελέσιμο που τρέχει σε windows 7 x64 (Αν πχ υπάρχει τρόπος να πάρω ένα windows εκτελέσιμο αρχείο, τότε δεν με νοιάζει πώς). Επειδή είμαι αρκετά νέος, θα ήθελα μία σχετικά αναλυτική βοήθεια αν γίνεται.

 

Ευχαριστώ.

Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες

Προτεινόμενες αναρτήσεις

  • 0

Για να είμαι ειλικρινής φίλε Smirnov δεν πολυκατάλαβα γιατί δεν εξυπηρετεί το cmake στην συγκεκριμένη περίπτωση. Απλά θα αφιερώσει παραπάνω χρόνο για να φτιάξει μια crossplatform επίλυση του προβλήματός του.

 

Όπως και να έχει, το πιο εύκολο & γρήγορο που έχει να κάνει ο ts είναι να εγκαταστήσει στα Windows 7 το Cygwin, που του δίνει πλήρες Posix περιβάλλον, αλλά με Windows binaries. Αυτό ακριβώς που θέλει δηλαδή.

 

Διαλέγοντας τα κατάλληλα πακέτα κατά την εγκατάσταση (ή μετά) οι πιθανότητες είναι να κάνει ακριβώς ότι κάνει και στο Linux, μιας και το Cygwin στην ουσία είναι Linux port για Windows (με έξτρα δυνατότητες για Windows programming).

Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

Να σου πω γιατί.

 

Το CMake είναι κατ' ουσίαν κατασκευή των "makefile".

Αντί να φτιάξεις makefiles π.χ. για τον codeblocks, φτιάχνεις τα cmakefiles που διαβάζονται από το CMake.

Τα cmakefiles μπορούν με το CMake να μετατραπούν στα makefiles οποιουδήποτε από τους γνωστούς

compilers (VS, codeblocks κλπ)

 

Τα cmakefiles όμως πρέπει να γραφούν εξαρχής.

To CMake μόνον παράγει makefiles για compilers, δεν διαβάζει έτοιμα κάποιου.

Αν έχεις τα makefiles για κάποιον compiler, δεν ωφελεί σε κάτι αφού τα cmakefiles πρέπει να γραφούν.

Και δεν είναι καθόλου εύκολο αν πρόκειται για κάτι μεγάλο με πλήθος ρυθμίσεων και με πολύπλοκη ιεραρχία.

Ο φίλος εδώ δεν ξέρει - ούτε τον ενδιαφέρει - τι και πώς συνδέονται τα αρχεία, τι ρυθμίσεις απαιτούν κλπ.

Μόνον το - ει δυνατόν αυτόματο - στήσιμο του project και το compile.

Αν είχε γίνει εξαρχής θα ήταν εντάξει, αλλά τώρα δεν. Πρέπει να αναλάβει κάποιος(-οι) ειδικά αυτή την δουλειά..

 

Αφού o t.s. θέλει μόνο compile ϊσως αυτό που προτείνεις (Cygwin) να είναι μια πρόσφορη επιλογή για την περίπτωση.

 

-

Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0
Λοιπόν' date=' να εξηγήσω μερικά πράγματα:

 

1) Δεν με νοιάζει να κάνω develop τον κώδικα σε win, μόνο compile.

 

2)Ο κώδικας εξελίσσεται από καμιά 200αριά άτομα εδώ και 30 χρόνια, ούτε ξέρω την δομή του, ούτε περισσότερες πληροφορίες για το τι κάνει το κάθε αρχείο. ΑΝ χρειαστεί να γράψω κάτι, θα είναι για ένα ή δύο αρχεία και θα μου πούνε αυτοί που ξέρουν καλύτερα τι και πώς.

 

3) Ο κώδικας περιλαμβάνει γύρω στα 220 αρχεία κώδικα και το makefile δείχνει πώς και ποιά πρέπει να γίνουν compile ώστε να δώσει κάθε φορά το εκτελέσιμο ανάλογα με την περίπτωση που θέλουμε να τρέξει.

 

4) Δεν έχω χρόνο να μάθω πολύπλοκα προγράμματα, γι αυτό έβαλα εξομειωτή στα win και δουλεύω έτσι, αλλά βλέπω πεσμένη απόδοση.

 

Με απλά λόγια, ψάχνω έναν έυκολο τρόπο να κάνω compile έναν υπάρχοντα κώδικα. Παίζει κάτι τετοιο??[/quote']

 

Κανε αυτο που πρότεινε ο migf1, βάλε το Cygwin, εγκατέστησε τα ίδια packages, και κανε το compilation εκει. Αν ποτε χρειαστεί να υπάρξει automation στο build/testing/packaging του κώδικα σας (σε περίπτωση που δεν έχετε), μια καλη λύση είναι το cmake. Μια πιθανή επίσης λύση είναι το http://www.scons.org/ και τα παράγωγα του, για το οποίο δεν έχω άποψη.

 

Sent from my iPad using Insomnia

Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

Να σου πω γιατί

....

Βασικά το cmake κάνει πολλά. Αυτό που εννοούσα λέγοντας πως θα το είχε φτιάξει τόσες μέρες, ήταν να κρατήσει τα υπάρχοντα rules που έχει ήδη για το Linux και να προσθέσει μέσω conditional directives και τα rules για όποιον Windows compiler επιθυμεί.

Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

Ερώτηση: Το OpenMPI μπαίνει σε cygwin?? Προσπαθώ αλλά χωρίς αποτέλεσμα... Το gfortran το εγκατέστησα, αλλά η διαδικασία που περιγράφει στο site για εγκατάσταση openmpi αποτυγχάνει...

Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Εγγραφείτε για έναν νέο λογαριασμό

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...

Με την περιήγησή σας στο insomnia.gr, αποδέχεστε τη χρήση cookies που ενισχύουν σημαντικά την εμπειρία χρήσης.