Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Απλές Αλυσίδες Πολυμερών

Παρόμοιες παρουσιάσεις


Παρουσίαση με θέμα: "Απλές Αλυσίδες Πολυμερών"— Μεταγράφημα παρουσίασης:

1 Απλές Αλυσίδες Πολυμερών
Μοριακή Δυναμική Απλές Αλυσίδες Πολυμερών

2

3 Προσέγγιση Προβλήματος
Οι αλυσίδες είναι του τύπου CH3-CH2-CH2-…-CH2-CH2-CH3. Προσεγγίζουμε τα CH3 και CH2 σαν σημειακά άτομα. Η αλληλεπίδραση μεταξύ τους δίνεται από δυναμικό Lenard-Jones, ενώ οι ενδομοριακές δυνάμεις που αφορούν δυάδες, τριάδες ή τετράδες διαδοχικών ατόμων της ίδιας αλυσίδας προσεγγίζονται με ευθύγραμμους και γωνιακούς αρμονικούς ταλαντωτές. Το πρόβλημα είναι του τύπου N body και η ολοκλήρωση γίνεται με τον αλγόριθμο Verlet Διατηρούμε την θερμοκρασία σταθερή με θερμοστάτες Nose που κλιμακώνουν κατάλληλα τις ταχύτητες

4 Velocity Verlet Υπολογίζουμε το άθροισμα των δυνάμεων σε κάθε άτομο και άρα την επιτάχυνση στην οποία υπόκεινται Μετακινούμε τα άτομα με βάση την αρχική θέση, ταχύτητα και την επιτάχυνση Ενημερώνουμε τις ταχύτητες από τις μεταβολές των θέσεων Στην αρχή και το τέλος της ολοκλήρωσης κλιμακώνουμε τις ταχύτητες με βάση την συνολική κινητική ενέργεια για να διατηρήσουμε την θερμοκρασία (θερμοστάτες Nose)

5 Multistep Οι δεσμοί είναι πολύ πιο «γρήγορες» δυνάμεις από τις άλλες αλληλεπιδράσεις Για ακριβή αποτελέσματα χρησιμοποιούμε πολύ μικρό βήμα ολοκλήρωσης και έτσι αυξάνεται πολύ το υπολογιστικό φορτίο Ελατώνουμε το κόστος υπολογισμών χωρίζοντας την ολοκλήρωση μεταξύ των «γρήγορων» και «αργών» δυνάμεων Επαναλαμβάνουμε πρώτα πολλές ολοκληρώσεις Verlet με βάση τις δυνάμεις δεσμών μόνο και με μικρότερο βήμα χρόνου Τελικά ολοκληρώνουμε με το σύνολο των αλληλεπιδράσεων και με το μεγαλύτερο βήμα χρόνου

6 Δυναμικό Lennard Jones
Προσεγγίζει καλά την αλληλεπίδραση μεταξύ ατόμων, συμπεριλαμβάνει ελκτικές δυνάμεις Van der Waals και απωστικές Pauli. Προσφέρει άπωση για την αποφυγή collisions και θέση ισορροπίας. Υπάρχει απόσταση αποκοπής και έτσι μειώνονται οι υπολογισμοί. Χρησιμοποιούμε διαφορετικό σετ παραμέτρων για διαφορετικά ζεύγη ατόμων. Δεν το χρησιμοποιούμε για τα συνδεδεμένα με δεσμούς άτομα γιατί παράγει αφύσικα και αριθμητικά ασταθή αποτελέσματα.

7 Δεσμοί Οι δυνάμεις μεταξύ δύο ατόμων είναι απλού αρμονικού ταλαντωτή
Οι δυνάμεις μεταξύ τριών είναι γωνιακού αρμονικού ταλαντωτή Οι δυνάμεις μεταξύ τεσσάρων ατόμων είναι στροφικού αρμονικού ταλαντωτή Κάθε άτομο μιας αλυσίδας υπόκειται και στα τρία είδη δυνάμεων Χρειαζόμαστε λοιπόν τρία άτομα αριστερά και δεξιά

8 Λίστες Verlet Για την επιτάχυνση των υπολογισμών δημιουργούμε για κάθε άτομο λίστες με τα άτομα στην σφαίρα αλληλεπίδρασης του Επεκτείνουμε τη σφαίρα λίγο για να έχουμε το περιθώριο μερικών επαναλήψεων πριν ξαναδημιουργήσουμε τη λίστα Ξαναδημιουργούμε τη λίστα κάθε φορά που κάποιο άτομο κινήθηκε πάνω από την επιπλέον ακτίνα της σφαίρας που χρησιμοποιήσαμε Ενσωματώνουμε τον νόμο της δράσης-αντίδρασης στις λίστες για να επιταχύνουμε περεταίρω Η διαδικασία φαίνεται ακριβή υπολογιστικά αλλά τελικά επιταχύνει πολύ την ολοκλήρωση

9 Linked Cell Lists Για την επιτάχυνση της δημιουργίας των Verlet Lists τοποθετούμε πρώτα τα άτομα σε κύβους ακμής μικρότερης ή ίσης της απόστασης αποκοπής Η διαδικασία αυτή είναι single pass και πολύ γρήγορη Χρησιμοποιούμε απλή υλοποίηση λιστών με δύο arrays Στη συνέχεια δεν ασχολούμαστε με τους μακρινούς κύβους και δεν κάνουμε υπολογισμούς απόστασης για τους πολύ κοντινούς κύβους Τελικά επιταχύνουμε πολύ την δημιουργία των Verlet Lists

10 Periodic Boundary Conditions
Για να προσομοιώσουμε μεγάλη ποσότητα ατόμων θεωρούμε ότι ο κύβος προσομοίωσης επαναλαμβάνεται επ’ άπειρον Έτσι άτομα σε διαφορετικές πλευρές του κύβου μπορεί να γειτονεύουν Κρατάμε και ενημερώνουμε δύο σετ συντεταγμένων, τις πραγματικές και τις wrapped Λαμβάνουμε υπόψιν την περιοδικότητα σε διάφορα στάδια

11 Domain Decomposition Χωρίζουμε τον όγκο προσομοίωσης σε μικρότερους του οποίους αναλαμβάνουν τα ranks Έχουμε σταθερή πυκνότητα και έτσι δεν ασχολούμαστε με αλλαγή του όγκου του κάθε rank Κάθε rank έχει 26 γειτονικά rank Αν έχουμε λίγα ranks κάποιο γείτονες συμπίπτουν ή και είναι ο εαυτός μας Επικοινωνούμε κυρίως θέσεις και δυνάμεις

12 Διάταξη Δεδομένων Κάθε άτομο έχει τον αύξοντα αριθμό του
Διαδοχικά άτομα μιας αλυσίδας έχουν διαδοχικούς αριθμούς Κάθε αλυσίδα έχει συγκεκριμένο αριθμό ατόμων Κάθε rank γνωρίζει όλα τα βασικά δεδομένα για όλα τα άτομα, μάζα, αλυσίδα στην οποία ανήκουν και θέση σε αυτή, αριθμό ατόμων σε κάθε αλυσίδα κλπ Αρχικά μοιράζονται τα άτομα στα ranks μαζί με τις θέσεις και τις ταχύτητες τους Κάθε rank ξέρει ποια άτομα έχει, τις αλυσίδες στις οποίες ανήκουν και την θέση τους σε αυτές Κάθε rank έχει θέση για τα δεδομένα θέσεων και δυνάμεων για όλα τα άτομα (ένα μεγάλο array) Ενημερώνονται οι θέσεις και οι ταχύτητες που αφορούν δικά του άτομα Eνημερώνονται οι δυνάμεις που προκύπτουν από τον νόμο δράσης-αντίδρασης για τα γειτονικά άτομα, οι οποίες και αποστέλλονται αργότερα στους γείτονες Τα απαραίτητα δεδομένα των γειτονικών θέσεων λαμβάνονται πρώτα από τους γείτονες Τα loops είναι της μορφής: for (i=1,local_num_atoms) if (has_atom(atoms(i))) …

13 Δεδομένα Δεσμών Για τον υπολογισμό των δυνάμεων δεσμών χρειάζονται 3 επιπλέον άτομα από τα όρια των αλυσίδων μέσα στο rank Υπολογίζουμε τα όρια και βρίσκουμε τα ζητούμενα άτομα Ρωτάμε όλους τους γείτονες (αποφεύγοντας τον εαυτό μας) αν έχουν τα άτομα αυτά Οι γείτονες απαντάνε με το ποια άτομα έχει ο καθένας Τώρα όλα τα ranks ξέρουν ποιες θέσεις ποιών ατόμων στέλνουν σε ποια ranks, αλλά και ποιες λαμβάνουν από ποια. Αφαιρούμε τον νόμο της δράσης αντίδρασης από τον υπολογισμό δυνάμεων δεσμών για να γλυτώσουμε επικοινωνία δυνάμεων. Η επικοινωνία των θέσεων θα γίνει πολλές φορές πριν ξαναμοιραστούν τα άτομα στα ranks

14 Δεδομένα Γειτόνων Κάθε rank στέλνει μόνο τους υποψήφιους γείτονες ανά κατεύθυνση στα περιβάλλοντα ranks Το λαμβάνων rank υπολογίζει τους γείτονες των τοπικών ατόμων του και το ποια άτομα χρειάζεται από αυτά που ελήφθησαν Ενημερώνει το αποστέλλων rank για το ποια άτομα κράτησε Και τα δυο ranks γνωρίζουν για το ποιές θέσεις ποιών ατόμων θα στέλνουν και θα λαμβάνουν Επίσης γνωρίζουν ποιες συσσωρεμένες δυνάμεις από τον νόμο της δράσης αντίδρασης θα ανταλλάζουν Η επικοινωνία των θέσεων θα γίνει πολλές φορές πριν ξαναμοιραστούν τα άτομα στα ranks

15 Μετακόμιση Ατόμων Όσο είναι έγκυρες οι Verlet Lists προχωράνε κανονικά οι υπολογισμοί, ακόμη και αν κάποιο άτομο έχει ξεφύγει από τον κύβο του rank του Όταν πρέπει να ξαναδημιουργηθούν οι λίστες τα άτομα που έχουν ξεφύγει μετακομίζονται πρώτα στα κατάλληλα γειτονικά ranks Κάθε rank γνωρίζει από τις συντεταγμένες των ατόμων του προς ποια κατεύθυνση θα πρέπει να στείλει το κάθε άτομο που έχει ξεφύγει

16 Στατιστικά Στοιχεία Υπολογίζονται διάφορες ποσότητες όπως κινητική ενέργεια, θερμοκρασία και επιμέρους δυναμικές ενέργειες Κάθε rank υπολογίζει τις δικές του ποσότητες και τα τελικά αποτελέσματα γίνονται reduce στον root

17 Ροή Υπολογισμών Αρχικοποίηση, χωρισμός domain, δημιουργία καρτεσιανού communicator, broadcast ποσοτήτων, scatter ατόμων Εύρεση γειτονικών ατόμων και δεσμών Για κάθε βήμα Μερικές φορές (multistep) Ανταλλαγή θέσεων δεσμών Υπολογισμός δυνάμεων δεσμών Στη συνέχεια Ενδεχόμενη επαναδημιουργία λιστών γειτόνων και μετακόμιση ατόμων Ανταλλαγή θέσεων γειτόνων Υπολογισμός δυνάμεων από γείτονες Αποστολή συσσωρευμένων δυνάμεων σε γείτονες Ενδεχόμενος υπολογισμός στατιστικών στοιχείων και output

18 MPI MPI_Cart_create για καρτεσιανό communicator
MPI_Bcast για τα κοινά δεδομένα MPI_Scatter, MPI_Scatterv για το μοίρασμα των ατόμων MPI_Isend και MPI_Irecv για τις επικοινωνίες MPI_Waitsome ή MPI_Testsome για την αναμονή ολοκλήρωσης των επικοινωνιών MPI_Reduce, MPI_Allreduce για τα στατιστικά στοιχεία, τους θερμοστάτες Nose και τον έλεχγο επαναδημιουργίας λιστών Φυσικά MPI_Comm_rank, MPI_Comm_size, MPI_Init, MPI_Finalize Υπάρχει δυνατότητα χρήσης MPI_Isend_init, MPI_Irecv_init και MPI_Start για τις ανταλλαγές συντεταγμένων και δυνάμεων μόνο

19 Ενδιαφέροντα Σημεία Εύρεση γειτονικών κύβων στα Linked Cell Lists σε διάφορα σχήματα (κυρίως σφαίρα) Χρήση Fortran types για την δημιουργία array από arrays μεταβλητού μήκους Χρήση TAG + dir ή TAG + invdir(dir) για την αποστολή και λήψη προς ή από συγκεκριμένη κατεύθυνση Caching υπολογισμών γειτονικών linked cells Διαχείριση ολόκληρων ζευγών linked cells κατά την δημιουργία λιστών Μικρό overlap computation και communication

20 Απόδοση Μέτρια για λίγα ranks, κακή για περισσότερα
Δύσκολα παραλληλίσιμο πρόβλημα εκ’ φύσεως Ενδεχόμενο θέμα με κάποιο rank του cluster , 7 computers με 12 cpu’s, μικρή πιθανότητα Ίσως χρειάζεται μεγαλύτερο πρόβλημα και περισσότερα ranks για καλύτερη απόδοση Μπορούν εύκολα να χρησιμοποιηθούν persistent communications, αλλά δεν αναμένεται μεγάλη βελτίωση Μπορεί να επιταχυνθεί ο εντοπισμός απομακρυσμένων γειτόνων Δεν γίνεται παρά το ελάχιστο overlap computation και communication

21 Δυνατότητες Βελτίωσης
Καλύτερη διαχείριση μνήμης Persistent communications Περαιτέρω Caching υπολογισμών γειτονικών linked cells Περαιτέρω διαχείριση ολόκληρων ζευγών linked cells κατά την δημιουργία λιστών Διάφοροι μικροϋπολογισμοί που δεν χρειάζεται να επαναλαμβάνονται Απλοϊκό ή περίπλοκο overlap computation και communication Απαλοιφή επικάλυψης δεδομένων γειτόνων και δεσμών Μέτρηση και εξάλειψη αν χρειάζεται ανισορροπιών στις λίστες γειτόνων, οι οποίες προκύπτουν από τον νόμο της δράσης – αντίδρασης Βελτίωση ανταλλαγής δεσμών


Κατέβασμα ppt "Απλές Αλυσίδες Πολυμερών"

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google