Πανεπιστήμιο Ιωαννίνων - Τμήμα Πληροφορικής

E-85: Ειδικά Θέματα Λογισμικού - Προγραμματισμός Συστημάτων Υψηλών Επιδόσεων

Χειμερινό Εξάμηνο 2009-10

Τετάρτη 09:00-12:00, Αίθουσα Ι-3

 


Ανακοινώσεις

28/9/10: Ανακοινώθηκε η βαθμολογία του μαθήματος (εδώ). Μπορείτε να δείτε το γραπτό σας την Πέμπτη 30/9, 11:00-12:00.

28/2/10: Ανακοινώθηκε η βαθμολογία του μαθήματος (εδώ). Μπορείτε να δείτε το γραπτό σας την Τετάρτη 3/3, 12:00-13:00.

15/1/10: Η προθεσμία παράδοσης του δεύτερου σετ ασκήσεων μεταφέρθηκε στις 15/2/2010.

15/1/10: Στην ενότητα "Βοηθητικό λογισμικό" προστέθηκαν οδηγίες για χρήση του MPI στο σύστημα atlantis.

16/12/09: Ανακοινώθηκε το δεύτερο σετ ασκήσεων του μαθήματος.

26/11/09: Όσοι φοιτητές του μαθήματος επιθυμούν λογαριασμό στο σύστημα atlantis θα πρέπει να το δηλώσουν με email

στον διδάσκοντα. Ο λογαριασμός θα έχει το ίδιο login name με αυτό στα υπόλοιπα συστήματα της σχολής.

26/11/09: Η προθεσμία παράδοσης του πρώτου σετ ασκήσεων μεταφέρθηκε στις 7/12/2009.

10/11/09: Ανακοινώθηκε το πρώτο σετ ασκήσεων του μαθήματος.

 2/11/09: Η διάλεξη του μαθήματος δεν θα πραγματοποιηθεί την Τετάρτη 4/11/2009. Θα αναπληρωθεί κατόπιν συνεννόησης με τον διδάσκοντα.

 6/10/09: Οι διαλέξεις του μαθήματος θα ξεκινήσουν την Τετάρτη 7/10/2009, στις 09:00 στην Αίθουσα Ι-3.


 

Διδασκαλία

  Παναγιώτης Χατζηδούκας (Π.Δ. 407/1980)

  Γραφείο Β-34

  Email: phadjido at cs.uoi.gr

  Τηλ.: 26510-98872

  Ώρες γραφείου: Τρίτη/Τετάρτη 12:00-13:00.

 

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

- Πολυνηματικός προγραμματισμός

        Διεργασίες και νήματα

        Μελέτη του προτύπου POSIX Threads

        Μοντέλα υλοποίησης νημάτων - νήματα επιπέδου χρήστη

- Πολυνηματισμός και παράλληλη επεξεργασία

        Το μοντέλο προγραμματισμού OpenMP

- Προγραμματισμός συστημάτων κατανεμημένης μνήμης

        Το μοντέλο προγραμματισμού MPI

-  Ειδικά θέματα

        Τεχνικές βελτιστοποίησης κώδικα

        Σύγχρονες τάσεις για υπολογισμούς υψηλών επιδόσεων (Κάρτες γραφικών, Επεξεργαστής Cell)

        Συστήματα κοινής ιδεατής μνήμης (SDSM)
-  Ειδικά θέματα (κατά περίπτωση)

        Matlab και συστήματα υψηλών επιδόσεων

        Λογισμικό υπολογισμών υψηλών επιδόσεων

        Ανάπτυξη αποδοτικών δικτυακών εξυπηρετητών

        Προγραμματισμός επιπέδου πυρήνα

 

Βιβλιογραφία

- Α. Μάργαρης, MPI: Θεωρία και Εφαρμογές, Εκδόσεις Τζιόλα, Θεσ/νίκη 2007.

- OpenMP Architecture Review Board: OpenMP Application Program Interface, 2005.

- D. R. Butenhof, Programming with POSIX Τhreads, Addison-Wesley, 1997. 

- Sun Microsystems. Multithreaded Programming Guide.

- K. A. Robbins, S. Robbins. Unix Systems Programming: Communication, Concurrency, and Threads.

- W. R. Stevens. Advanced Programming in the UNIX Environment.

 

Υλικό (Hardware)

- Για τις ανάγκες του μαθήματος υπάρχουν διαθέσιμα δύο παράλληλα συστήματα:

  1. atlantis: 4 Intel PIII επεξεργαστές με λειτουργικό σύστημα Debian Linux

  2. paraguay: 8 (= 4 dual-core hyper-threaded) Intel Xeon επεξεργαστές, δωρεά της εταιρίας Intel στο τμήμα μας

 

Βοηθητικό λογισμικό

1) Βιβλιοθήκη των POSIX Threads για Windows: (link, local download [1.19 MB])

2) Εργαλεία GNU (gcc, make, κλπ) για Windows (link, local download [16.6 MB])

    Οδηγίες

   α) Αντιγράψτε το αρχείο MingW.tar.gz στο σκληρό δίσκο (C:\) και αποσυμπιέστε το τοπικά (π.χ. "Extract here" στο WinZip).

   β) Πρέπει να  δημιουργηθεί ο φάκελος C:\MingW με υποφακέλους τους C:\MingW\bin, C:\MingW\sbin, κλπ.

   γ) Στην συνέχεια προσθέστε στο PATH των Windows τους καταλόγους C:\MingW\bin και C:\MingW\sbin.

      (Πίνακας Ελέγχου®Σύστημα®Για Προχωρημένους®Μεταβλητές Περιβάλλοντος®Μεταβλητές Συστήματος®PATH: Edit ).

   δ) Ένα παράθυρο εκτέλεσης εντολών στα Windows δημιουργείται με την ακολουθία: Έναρξη®Εκτέλεση® Άνοιγμα: cmd®OK.

   ε) Μπορείτε πλέον να χρησιμοποιήσετε τις συνηθισμένες εντολές Unix (π.χ. pwd, cd, mkdir, rm, pico, gcc, make, κλπ).

3) Έτοιμη προς χρήση βιβλιοθήκη των POSIX Threads για Windows (pthread.tar.gz)

   και παράδειγμα χρήσης της (testpth.tar.gz)

    - Η βιβλιοθήκη (φάκελος pthread) πρέπει να βρίσκεται στο κατάλογο C:\ του σκληρού σας δίσκου

    - Ο κατάλογος "C:\pthread\lib" πρέπει να βρίσκεται στο PATH των Windows

    - Τα εργαλεία GNU για Windows πρέπει να έχουν εγκατασταθεί

    - Παράδειγμα χρήσης της βιβλιοθήκης των POSIX Threads για Windows μέσω του Microsoft Visual Studio (6.0) (testpth_vc_gcc.tar.gz)

4) Συνάρτηση μέτρησης χρόνου για Windows και Unix: (gettime.c)

5) GNU make για Solaris/Sparc (gmake)

   - Παρέχεται για να διευκολύνει τη χρήση αρχείων Makefile

   - Τοποθετήστε το αρχείο στο λογαριασμό σας και ενημερώστε κατάλληλα τη μεταβλητή PATH

6) Εγκατάσταση του περιβάλλοντος Cygwin στον υπολογιστή σας.

    α) Κατεβάστε το αρχείο: (cygwin_setup.zip [83.8 MB])

    β) Αποσυμπιέστε το παραπάνω αρχείο και εκτελέστε το πρόγραμμα εγκατάστασης setup.exe

    γ) Αν χρειάζεστε βοήθεια, ακολουθήστε τα βήματα εγκατάστάσης που παρουσιάζονται εδώ: (installation_steps.pdf)

    Περισσότερες πληροφορίες για το Cygwin μπορείτε να βρείτε στη διεύθυνση: http://www.cygwin.com

7) Χρήση της βιβλιοθήκης MPICH2 στο σύστημα atlantis.

 

Στο σύστημα atlantis είναι ήδη εγκαταστημένη η βιβλιοθήκη MPICH2, στον κατάλογο /tmp/mpich2. Για να τη χρησιμοποιήσετε πρέπει να κάνετε τα ακόλουθα:

   α) Προσθέστε τον κατάλογο /tmp/mpich2/bin στο PATH του λογαριασμού σας.

   β) Φτιάξτε το απαιτούμενο αρχείο .mpd.conf στο βασικό κατάλογο του λογαριασμού σας (σύμφωνα με την οδηγίες του MPICH2)

       π.χ.

    phadjido@atlantis:~$ ls -l .mpd.conf 
    -rw-------   1 phadjido guest          18 Mar 15  2007 .mpd.conf
    phadjido@atlantis:~$ cat .mpd.conf 
    secretword=whatever

   γ) Ξεκινήστε στο παρασκήνιο τον "δαίμονα" του MPICH2 ($ mpd &).

   δ) Μεταγλωττίστε τα προγράμματά σας με την εντολή mpicc. O υποκείμενος μεταγλωττιστής είναι ο Intel compiler v10.0, που υποστηρίζει OpenMP.

       Επομένως, με την παράμετρο "-openmp" μπορείτε να ενεργοποιήσετε και το OpenMP στα προγράμματα MPI (βλ. υβριδικό μοντέλο προγραμματισμού MPI+OpenMP).

   ε) Τρέξτε το εκτελέσιμο πρόγραμμά σας με mpiexec ή mpirun

 

Παρουσιάσεις

- Πληροφορίες μαθήματος (pfd-x6)

- Υπολογιστικά Συστήματα Υψηλών Επιδόσεων και Εφαρμογές (pfd-x6)

- Διεργασίες και Νήματα (pfd-x6)

- Προγραμματισμός Νημάτων Προτύπου POSIX (pfd-x6)

- Ειδικά Θέματα Προγραμματισμού Νημάτων (pfd-x6)

- Νήματα Επιπέδου Χρήστη (pfd-x6)

- Εισαγωγή στο OpenMP (pfd-x6)

- Προγραμματισμός με το μοντέλο OpenMP (pfd-x6)

- Ιεραρχία Μνήμης και Τεχνικές Βελτιστοποίησης (pfd-x6)

- Εισαγωγή στο MPI (pfd-x6)

- Επαναληπτικές Ασκήσεις (pfd-x6)

 

 

Εξέταση Μαθήματος

- Θα ανακοινωθεί

 

Σύνδεσμοι

- OMPi OpenMP C Compiler

- Βιβλιοθήκη νημάτων επιπέδου χρήστη PSthreads  (local download, report)

- OpenMP Application Program Interface, Version 2.5 (local download)

- Βιβλιοθήκες Υλοποίησης του MPI

    - MPICH2 (Unix, Windows)    [Οδηγίες εγκατάστασης στο README στο αρχείο διανομής]

    - DeinoMPI (Windows)

- MPI: The Complete Reference (local download)

 

 

Ασκήσεις - Εργασίες μαθήματος

- 1o σετ ασκήσεων (Παράδοση: 30/11/2009, Νέα Προθεσμία: 7/12/2009)

- 2o σετ ασκήσεων (Παράδοση: 22/1/2010, Νέα Προθεσμία: 15/2/2010)

- Εφαρμογή για παραλληλοποίηση (particle swarm optimization): dpso.tar.gz 

 

Βαθμολογίες

- Εξεταστική Φεβρουαρίου

 

 

 

Τελευταία ενημέρωση: 15/01/2010

php hit counter