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

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

Δημοσ.

Πρόσφατα συναρμολόγησα ένα i5-6600 με 16gb ram.

Παρατήρησα ότι όταν τρέχω κώδικες matlab (κυρίως ode) η χρήση της cpu δεν ξεπερνά το 25-27%, δηλ. δουλεύει μόνο ο ένας από τους τέσσερις πυρήνες. Η ram βρίσκεται και αυτή χαμηλά στο 30-33%.

Η χρήση αυτή με καθυστερεί πολύ.

 

Ξέρει κανείς τί ρυθμίσεις πρέπει να κάνω ώστε να εκμεταλλευτώ όλους τους πυρήνες ; Χρειάζεται κώδικα ή κάτι άλλο ;

Δοκίμασα να αλλάξω τις ρυθμίσεις parallel preferences αλλά δεν είδα κάποια διαφορά.

 

Κάθε βοήθεια ευπρόσδεκτη.

 

  • Moderators
Δημοσ.

Κάποιες συναρτήσεις εκτελούνται αυτόματα σε πολλούς πυρήνες (αν υπάρχει η δυνατότητα). Από κει και πέρα, ίσως το bottleneck σου βρίσκεται σε κώδικα που έχεις γράψει εσύ και δεν είναι multithreaded.

Δημοσ.

Άρα πρέπει να κοιτάξω πώς να κάνω τον κώδικά μου multithreaded ;

 

Χρησιμοποιώ τους λύτες της matlab που είναι 4ης-5ης τάξης runge-kutta.

  • Moderators
Δημοσ.

Δυστυχώς δεν ξέρω τι είναι αυτό που κάνεις για να μπορώ να σε βοηθήσω παραπάνω, απλώς αν θες ο κώδικας που έχεις γράψει εσύ να τρέχει σε περισσότερους από έναν επεξεργαστές, χρειάζεται να τον γράψεις έτσι ώστε να μπορεί να το κάνει αυτό.

 

Ρίξε μια ματιά και σ' αυτό.

http://www.mathworks.com/discovery/matlab-multicore.html

Δημοσ.

Οκ, ήταν καλό το tip σου.

Με αυτούς τους λύτες μάλλον δεν γίνεται γιατί στο κάθε βήμα του υπολογισμού πρέπει να χρησιμοποιείς τα προηγούμενα και αυτή η αλληλουχία δεν μπορεί να γίνει παράλληλα. Τέλεια...

 

 

ευχαριστώ

Δημοσ.

Εάν σε κάθε βήμα θέλεις τα προηγούμενα, τότε γίνεται να κάνεις "vectorization".

 

Γενικά το MATLAB αποδίδει καλύτερα όταν αλλάζεις τα loops με ισοδύναμες πράξεις πινάκων. Αυτή, βασικά, είναι η ΜΕΓΑΛΗ του δύναμη.

 

Όσο για το parallel, έχεις δύο επιλογές στο MATLAB.

 

1) parfor

2) spmd

 

Διαλέγεις και παίρνεις.

Δημοσ.

Με το MPI γίνεται - αν ξέρεις να το κάνεις - αλλά πρέπει να είσαι πολύ θαρραλέος για το γράψεις εκεί.

Πρέπει να χρησιμοποιηθεί η τεχνοτροπία SPMD οποία δεν είναι εύκολη.

Γενικά μην περιμένεις με αυτοματισμούς να έχεις καλή κλιμάκωση.

 

-

Δημοσ.

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

Δεν έχω βρόγχους στους οποίους επαναλαμβάνεται μια ρουτίνα, απλά καλώ μια συνάρτηση και αυτή κάνει την δουλειά.

 

http://www.mathworks.com/matlabcentral/answers/168391-is-the-ode-suite-multi-threaded

 

Και η συνάρτηση αυτή δεν είναι multithreaded.

 

Νόμιζα ότι θα γινόταν εύκολα.  :-D 

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

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

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

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

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

Σύνδεση

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

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