CUDA Compute Unified Device Architecture
|
|
- Δαρείος Παπαϊωάννου
- 8 χρόνια πριν
- Προβολές:
Transcript
1 CUDA Compute Unified Device Architecture Καλέρης Κωνσταντίνος Πεµπτοετής φοιτητής του τµήµατος Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Η/Υ του Πανεπιστηµίου Πατρών Καλλέργης Γεώργιος Πεµπτοετής φοιτητής του τµήµατος Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Η/Υ του Πανεπιστηµίου Πατρών Abstract Σε µια εποχή που η ανάγκη για ταχύτερη επεξεργασία γίνεται ολοένα και πιο έντονη, οι κοινοί επεξεργαστές δεν επαρκούν, για τις συνεχώς αυξανόµενες υποχρεώσεις τους. Η nvidia, πρωτοπόρος στον τοµέα των επεξεργαστών γραφικών, εισάγει την CUDA, µια αρχιτεκτονική που επιτρέπει την χρήση των επεξεργαστών γραφικών για συµβατικές εφαρµογές αυξηµένου υπολογιστικού φορτίου. Με την νέα αυτή αρχιτεκτονική κάνει την εµφάνισή του ένα νέο προγραµµατιστικό παράδειγµα γνωστό µε το ακρωνύµιο SIMT (Single Instruction Multiple Threads). Με ένα µινιµαλιστικό σύνολο επεκτάσεων στην γλώσσα προγραµµατισµού C η νέα αυτή αρχιτεκτονική γίνεται προσιτή σε κάθε προγραµµατιστή σε ελάχιστο χρόνο. Η τεράστια υπολογιστική ισχύς των επεξεργαστών γραφικών σε συνδυασµό µε την ικανότητα ελέγχου ροής των κοινών επεξεργαστών ανοίγουν τον δρόµο για µια νέα εποχή στον τοµέα των υπολογιστών. 1. Εισαγωγή Η nvidia, θέλοντας να εκµεταλλευθεί την υπολογιστική ισχύ των επεξεργαστών γραφικών (GPU), σε συνδυασµό µε την συνεχή ανάπτυξη του παράλληλου λογισµικού, εισήγαγε µια νέα αρχιτεκτονική που επιτρέπει την ανάπτυξη κοινών, µη γραφικών, εφαρµογών, τµήµατα των οποίων ανατίθενται προς εκτέλεση στην GPU. Το ποια τµήµατα της εφαρµογής θα ανατεθούν στην GPU έχει σχέση µε την δυνατότητα παραλληλοποίησής τους και επιλέγονται από τον προγραµµατιστή. Η CUDA, προκειµένου να παραµείνει όσο το δυνατόν πιο προσιτή στους προγραµµατιστές, δηµιουργήθηκε ως µια επέκταση της ήδη πολύ δηµοφιλούς γλώσσας C χρησιµοποιώντας σε γενικές γραµµές συντακτικό και έννοιες προγραµµατισµού ίδιες µε αυτήν. Σε αντίθεση µε την C, όπου η εκτέλεση είναι συνήθως µονονηµατική (single-threaded execution), η CUDA µας δίνει την δυνατότητα να ορίσουµε συναρτήσεις (ονόµατι kernels) οι οποίες εκτελούνται παράλληλα από έναν καθορισµένο αριθµό νηµάτων (multi-threaded execution). Η χρήση της CUDA έχει δείξει µεγάλες βελτιώσεις σε πακέτα υπάρχοντος λογισµικού που τροποποιήθηκαν έτσι ώστε τµήµατά τους να τρέχουν στην GPU, πχ. Matlab, Celestia, Photoshop CS 4. Στην παρούσα εργασία, θα παρουσιάσουµε ένα πρόγραµµα που εκτελεί πρόσθεση και πολλαπλασιασµό πινάκων σε CUDA και σε C και θα συγκρίνουµε τους αντίστοιχους χρόνους εκτέλεσης. Επίσης θα µελετήσουµε την επίδραση του µεγέθους των πινάκων στην ταχύτητα εκτέλεσης. Τέλος θα υπολογίσουµε τους χρόνους επικοινωνίας της κάρτας γραφικών µε την CPU, προκειµένου να µπορούµε να εκτιµήσουµε τις περιπτώσεις για τις οποίες η CUDA συµφέρει έναντι της συµβατικής σειριακής εκτέλεσης. 2. Προγραµµατιστικό Μοντέλο Τα νήµατα οργανώνονται σε µονοδιάστατες, δισδιάστατες ή τρισδιάστατες δοµές που ονοµάζονται thread blocks. Τα thread blocks µε την σειρά τους οργανώνονται σε µονοδιάστατες ή δισδιάστατες δοµές, τα grid. Κάθε νήµα, εντός ενός thread block, κατέχει έναν αριθµό που το χαρακτηρίζει µονοσήµαντα. Αυτός είναι ο δείκτης του (index) και είναι διαθέσιµος σε κάποιον kernel µέσω της µεταβλητής threadidx (βλ. Ενότητα 4). Η µεταβλητή αυτή είναι ένα διάνυσµα τριών στοιχείων, µοναδικό για κάθε νήµα, που περιέχει το index του στο εκάστοτε thread block που ανήκει. Οµοίως κάθε thread block έχει έναν µονοδιάστατο ή δισδιάστατο δείκτη
2 (blockidx βλ. Ενότητα 4) που το χαρακτηρίζει µε µοναδικό τρόπο εντός του grid. Όλα τα νήµατα εκτελούν τον ίδιο κώδικα. Η επιτάχυνση έγκειται στο ότι το κάθε thread εκτελεί τον κώδικα πάνω σε διαφορετικά δεδοµένα. Αυτό σηµαίνει ότι όταν έχουµε να κάνουµε, πχ. 100 προσθέσεις ανεξάρτητες µεταξύ τους, µπορούµε να αναθέσουµε µια πρόσθεση σε κάθε πυρήνα. Ο συνολικός χρόνος για τις 100 προσθέσεις, για την περίπτωση όπου έχουµε 100 πυρήνες διαθέσιµους, είναι ίσος µε τον χρόνο µιας πρόσθεσης. Άρα το συγκεκριµένο κοµµάτι κώδικα επιταχύνεται κατά 100 φορές, και ο συνολικός χρόνος εκτέλεσης για ολόκληρο το πρόγραµµα µειώνεται κατά ένα ποσοστό που δίνεται από τον νόµο του Amdahl. Ο κώδικας του πυρήνα περιέχει παραµέτρους οι οποίες καθορίζουν την θέση των δεδοµένων µέσα στην δοµή που τα περιέχει, στα οποία θα επιδράσει το κάθε thread (παράµετροι δεδοµένων). Οι παράµετροι δεδοµένων πρέπει να παίρνουν διαφορετικές τιµές για κάθε thread, ώστε όλα τα δεδοµένα να υποστούν την κατάλληλη επεξεργασία. Για να το πετύχουµε αυτό, γράφουµε τις παραµέτρους δεδοµένων ως συνάρτηση της θέσης του thread µέσα στο grid, η οποία είναι µοναδική για κάθε thread. Έτσι, η κάθε παράµετρος γράφεται µε την βοήθεια των threadidx, blockidx, blockdim και griddim. Οι δυο τελευταίες περιέχουν τις διαστάσεις του κάθε block και κάθε grid αντίστοιχα. 3. Αρχιτεκτονική Επεξεργαστή Γραφικών 3.1. Επεξεργαστικοί Πόροι Όπως το software, έτσι και οι πόροι του hardware είναι δοµηµένοι ιεραρχικά σε ένα σύνολο από επίπεδα. Για την ακριβή επεξήγηση αυτής της ιεραρχίας είναι απαραίτητο να γνωρίζουµε τον τρόπο µε τον οποίο η κάρτα επεξεργάζεται τα γραφικά, κάτι που ξεφεύγει από το αντικείµενο αυτής της εργασίας. Παρ όλα αυτά, καθώς στην δόµηση του υλικού αρχίζει να λαµβάνεται υπ όψιν και ο ρόλος της GPU ως co-processor, µπορούµε να δώσουµε µια γενική εικόνα για τον τρόπο µε τον οποίο εκτελούνται οι kernels. Ως αναφορά θα έχουµε την κάρτα geforce GTX280. Από την σκοπιά της CUDA, στο υψηλότερο σηµείο της ιεραρχίας είναι οι 30 multiprocessors. Ένας multiprocessor αποτελείται από 8 υπολογιστικές µονάδες (processing cores) που σηµαίνει ότι στο σύνολο έχουµε 240 µονάδες επεξεργασίας. Ο multiprocessor είναι υπεύθυνος για να κατανέµει τα threads στους processors, να τα συγχρονίζει, να φορτώνει και να αποκωδικοποιεί τις εντολές και να τις προωθεί για εκτέλεση. Threads του ιδίου block ανατίθενται πάντα στον ίδιο multiprocessor. Για να εκτελεστούν, οµαδοποιούνται σε warps, τα οποία είναι πακέτα των 32 threads. Κάθε warp εκτελείται στον multiprocessor µε την λογική SIMT (Single Instruction Multiple Data). Σύµφωνα µε τον ορισµό της nvidia, τα threads ενός warp εκτελούν ταυτόχρονα όλα την ίδια εντολή (αυτό είναι πρακτικά αδύνατο µε 8 processors, αλλά πετυχαίνεται µε switching χωρίς σηµαντικό overhead). Μόλις ολοκληρωθεί η εκτέλεση της εντολής, ο multiprocessor προωθεί την επόµενη κοινή εντολή (γνωστό µοντέλο SIMD). Σε περίπτωση που ο κώδικας του kernel περιέχει διακλαδώσεις που δεν ακολουθούνται µε τον ίδιο τρόπο από όλα τα threads, τότε το κάθε branch εκτελείται σειριακά, µέχρι και πάλι όλα τα threads να συγκλίνουν στην κοινή τους ροή. Αυτή είναι η λογική της εκτέλεσης SIMT που εισάγει η nvidia στην αρχιτεκτονική CUDA. Παρόλα αυτά υπάρχουν κάποιοι περιορισµοί. εν µπορούµε να έχουµε περισσότερα από συνολικά 32 warps ενεργά σε κάθε πολυεπεξεργαστή. εν µπορούµε να έχουµε περισσότερα από 8 blocks ενεργά σε κάθε multiprocessor, ακόµα και αν ο αριθµός των threads δεν είναι περιοριστικός. Για την geforce GTX280 αυτό σηµαίνει ότι το σύνολο των ενεργών threads ανά multiprocessor είναι Οργάνωση µνήµης Τα νήµατα της CUDA έχουν πρόσβαση σε δεδοµένα από µια πληθώρα θέσεων µνήµης. Κάθε νήµα έχει την δική του τοπική µνήµη στην οποία µόνο το ίδιο έχει πρόσβαση. Αυτή είναι οι καταχωρητές του πολυεπεξεργαστή στον οποίο το νήµα έχει ανατεθεί προς εκτέλεση. Σε ένα υψηλότερο επίπεδο όλα τα νήµατα ενός thread block έχουν πρόσβαση σε µία κοινή µνήµη (shared memory) µέσω της οποίας µπορούν και να επικοινωνήσουν. Υψηλότερα από όλα τα άλλα είδη µνήµης υπάρχει η global µνήµη στην οποία έχουν πρόσβαση όλα τα νήµατα ανεξάρτητα από το block στο οποίο ανήκουν. Ενηµερωτικά αναφέρουµε την ύπαρξη των constant και texture µνηµών οι οποίες προσφέρονται µόνο για ανάγνωση από τα νήµατα. Η εγγραφή τους είναι δυνατή µόνο από την πλευρά της CPU (host). 4. Προγραµµατισµός Εφαρµογής 4.1. ιεπαφή προγραµµατισµού Για να είναι δυνατός ο προγραµµατισµός της εφαρµογής η nvidia παρέχει µία διεπαφή προγραµµατισµού (API) η οποία περιέχει συναρτήσεις, που βοηθούν στην εκτέλεση χρήσιµων λειτουργιών στην κάρτα γραφικών και µεταβλητές που είναι απαραίτητες για τον καθορισµό των δεδοµένων στα οποία επιδρά κάθε νήµα. Οι συναρτήσεις που θα χρησιµοποιηθούν στην παρούσα εφαρµογή αφορούν στην δέσµευση,
3 αποδέσµευση µνήµης στην κάρτα γραφικών, στην δηµιουργία, χρησιµοποίηση και καταστροφή events για µέτρηση χρονικών διαστηµάτων εκτέλεσης καθώς και στην µεταφορά δεδοµένων από και προς την κάρτα γραφικών. Οι συνάρτηση δέσµευσης χώρου είναι παρόµοια µε αυτή της C. Η συνάρτηση που χρησιµοποιούµε είναι η cudamalloc η οποία δέχεται σαν ορίσµατα της έναν δείκτη στον οποίο επιστρέφει την διεύθυνση της δεσµευθήσας περιοχής µνήµης στην κάρτα και έναν ακέραιο αριθµό που δηλώνει το µέγεθος της µνήµης προς δέσµευση. Με την παρακάτω δήλωση δεσµεύουµε στην κάρτα γραφικών έναν πίνακα ακεραίων δέκα στοιχείων. int *matrix; cudamalloc((void**)&matrix, 10 * sizeof(int)); Για την αποδέσµευση του παραπάνω χώρου χρησιµοποιούµε την συνάρτηση cudafree δίνοντας της σαν µοναδικό όρισµα τον δείκτη προς την περιοχή που θέλουµε να αποδεσµεύσουµε. cudafree(matrix); Οι συναρτήσεις δηµιουργίας event για την χρονοµέτρηση χρησιµοποιούνται όπως φαίνεται στο παρακάτω δείγµα κώδικα //Ορισμός μεταβλητών event cudaevent_t start, stop; //Δημιουργία event cudaeventcreate(&start); cudaeventcreate(&stop); //Έναρξη μέτρησης cudaeventrecord(start, 0); <<<Κώδικας προς χρονομέτρηση>>> //Λήξη μέτρησης cudaeventrecord(stop, 0); cudaeventsynchronize(stop); float time; //Λήψη χρόνου cudaeventelapsedtime(&time, start, stop); //Καταστροφή των event cudaeventdestroy(start); cudaeventdestroy(stop); Με τον τρόπο αυτό ουσιαστικά χρησιµοποιούµε το ρολόι του επεξεργαστή γραφικών σαν χρονόµετρο ακρίβειας 0,5µsec! Η συνάρτηση cudaeventelapsedtime µας επιστρέφει σε µία µεταβλητή float (πρώτο όρισµα), σε κλίµακα millisecond, τον χρόνο που πέρασε από την έγερση του πρώτου event (δεύτερο όρισµα) µέχρι την έγερση του δεύτερου event (τρίτο όρισµα). Σηµειώνουµε ότι το πρώτο όρισµα της cudaeventelapsedtime είναι δείκτης στην θέση µνήµης που θα αποθηκευθεί το αποτέλεσµα της χρονοµέτρησης γι αυτό και είναι απαραίτητο εδώ το σύµβολο &. Τέλος για την µεταφορά των δεδοµένων γίνεται χρήση της συνάρτησης cudamemcpy. Η συνάρτηση αυτή λαµβάνει σαν δεδοµένα εισόδου έναν δείκτη στην µνήµη προέλευσης, έναν δείκτη στην µνήµη προορισµού, έναν ακέραιο που δίνει το µέγεθος των δεδοµένων προς µεταφορά και τέλος έναν ακέραιο αριθµό που καθορίζει την φορά της µεταφοράς. Ο τελευταίος αυτός αριθµός για διευκόλυνση του προγραµµατιστή έχει δηλωθεί σαν enumeration στην CUDA και εµφανίζεται ως cudamemcpyhosttodevice, cudamemcpydevicetodevice ή cudamemcpydevicetohost. Πρέπει να σηµειωθεί ότι ο δείκτης που καθορίζει την θέση µνήµης στην κάρτα γραφικών είναι απαραίτητο να έχει προκύψει από ανάθεση µέσω της cudamalloc ή από ανάθεση µέσω αλλού δείκτη ο οποίος έχει δηµιουργηθεί µε χρήση της cudamalloc. Έτσι µε τον παρακάτω κώδικα δεσµεύουµε χώρο στην κάρτα γραφικών, µεταφέρουµε σε αυτήν ακέραια δεδοµένα από την RAM του υπολογιστή, στην συνέχεια τα µεταφέρουµε σε άλλη θέση στην κάρτα και τέλος τα µεταφέρουµε πίσω στην µνήµη RAM του υπολογιστή. int *data_device, *data_device_2; int *data_host; //Δέσμευση μνήμης στην κάρτα cudamalloc((void**)&data_device, size); //Δέσμευση επιπλέον μνήμης στην κάρτα cudamalloc((void**)&data_device_2, size); //Μεταφορά από την RAM στην κάρτα cudamemcpy(data_device,data_host,cudamemcpyhost ToDevice); //Μεταφορά από την κάρτα στην κάρτα cudamemcpy(data_device_2,data_device,cudamemcpy DeviceToDevice); //Μεταφορά από την κάρτα στην RAM cudamemcpy(data_host,data_device_2,cudamemcpyde vicetohost); Για απλοποίηση θεωρούµε ότι η µεταβλητή size περιέχει το µέγεθος των δεδοµένων προς µεταφορά και ότι η µεταβλητή data_host είναι δείκτης στα δεδοµένα τα οποία µεταφέρουµε. Στην παρούσα εφαρµογή αρχικά δεσµεύουµε τον απαραίτητο χώρο στην κάρτα, µεταφέρουµε εκεί τα δεδοµένα προς επεξεργασία, τα επεξεργαζόµαστε µε έναν kernel και στην συνέχεια µεταφέρουµε το αποτέλεσµα πίσω στην κεντρική µνήµη του υπολογιστή Πυρήνες Προγράµµατος
4 Για τον πυρήνα του πολλαπλασιασµού, οι πίνακες αντιµετωπίστηκαν ως δισδιάστατοι προκειµένου να εφαρµοστούν σε αυτούς απ ευθείας οι ιδιότητες του πολλαπλασιασµού πινάκων. Με βάση την παραπάνω προσέγγιση, υπάρχουν δύο παράµετροι επιλογής δεδοµένων από τις οποίες σχηµατίζεται το Thread ID του κάθε thread, η παράµετρος i και η παράµετρος j, που αντιστοιχούν στην γραµµή και την στήλη του πίνακα που περιέχει το αποτέλεσµα. Τα blocks και το grid είναι δισδιάστατα. Με τον παραπάνω σχεδιασµό του grid και των blocks, το grid έχει ακριβώς την δοµή του πίνακα του αποτελέσµατος (αν εξαιρέσουµε τα πιθανώς επιπρόσθετα threads που δεν παίζουν ρόλο στο αποτέλεσµα). Ο κώδικας του πυρήνα φαίνεται παρακάτω i = blockdim. x blockidx. x+ threadidx. x = = 4 και j = blockdim. y blockidx. y+ threadidx. y = = 2, άρα υπολογίζει το στοιχείο C [2][4] του πίνακα αποτελέσµατος. Να σηµειωθεί ότι η αρίθµηση των δεικτών ξεκινά από το µηδέν. global void CudaMul(float *A, float *B, float *C, int noc0, int noc1, int nor0) int k; int i = blockdim.x*blockidx.x + threadidx.x; int j = blockdim.y*blockidx.y + threadidx.y; if(i < noc1 && j < nor0) C[j*noc1 + i] = 0; for(k = 0; k < noc0; k++) C[j*noc1 + i] += A[j*noc0 + k] * B[k*noc1 + i]; Ο παραπάνω κώδικας εκτελεί τον πολλαπλασιασµό C = A B. Σηµειώνεται ότι τα ορίσµατα noc 0, noc 1, nor 0 είναι ο αριθµός των στηλών του πρώτου και δεύτερου πίνακα και ο αριθµός των γραµµών του πρώτου πίνακα. Στο κάθε thread ανατίθεται ο υπολογισµός ενός στοιχείου του πίνακα του αποτελέσµατος. Αυτό σηµαίνει ότι το κάθε thread εκτελεί ένα σύνολο από noc 0 (αριθµός στηλών του πρώτου πίνακα) πολλαπλασιασµούς και noc0 1 προσθέσεις, οι οποίες γίνονται σειριακά για κάθε thread στο βρόχο for. Η παράµετρος k για τον πίνακα A επιλέγει στοιχεία της ίδιας γραµµής, διαδοχικά για κάθε µια στήλη, ενώ για τον πίνακα B επιλέγει στοιχεία της ίδιας στήλης, διαδοχικά για κάθε γραµµή. Ανάλογα µε την θέση του στο grid, το κάθε thread υπολογίζει ένα στοιχείο του C[ j][ i ]. Για παράδειγµα, στο grid που φαίνεται στο Σχήµα 1, το οποίο είναι διαστάσεων 2x2 και αποτελείται από τέσσερα blocks 3x3, το σηµειωµένο thread έχει Σχήµα 1. Θέση thread(2,1) σε grid 2x2 µε block 3x3 Για να δηµιουργήσουµε το grid και να τρέξουµε τον kernel εκτελούµε τις παρακάτω εντολές στο κυρίως πρόγραµµα: dim3 dimblock(16,16); dim3 dimgrid(ceil(nor[0]/float(16)), ceil(noc[1]/float(16))); CudaMul<<<dimGrid, dimblock>>>(matrix_d[0], matrix_d[1], result_d, noc[0], noc[1], nor[0]); Με αυτές τις εντολές δηµιουργούµε ένα grid του οποίου οι διαστάσεις είναι ceil(nor[0]/float(16))*ceil(noc[1]/float(16)) και το κάθε block έχει διαστάσεις 16*16. Στην περίπτωση που η διαίρεση noc[1]/float(16) ή nor[0]/float(16) δεν γίνεται ακριβώς, δηµιουργούνται περισσότερα threads απ όσα είναι απαραίτητα. Γι αυτό τον λόγο χρησιµοποιούµε το if, προκειµένου τα επιπλέον threads να µην εκτελέσουν τον κώδικα και να τερµατίσουν κατευθείαν. Ο πυρήνας της πρόσθεσης είναι πολύ πιο απλός λόγω της απλότητας της ίδιας της πράξης, αλλά και διότι χρησιµοποιήθηκε µονοδιάστατο grid και block. Οι πίνακες στην πρόσθεση αντιµετωπίστηκαν ως µονοδιάστατοι και έτσι η µόνη εργασία του κάθε νήµατος είναι να προσθέσει δυο στοιχεία των πινάκων που προστίθενται και να αποθηκεύσει το αποτέλεσµα στον τελικό πίνακα.
5 Ο κώδικας του πυρήνα της πρόσθεσης είναι ο ακόλουθος: dim3 dimblock(threads_per_block); dim3 dimgrid(ceil((noc[0]*nor[0])/(float) THREADS_PER_BLOCK)); CudaAdd<<<dimGrid, dimblock>>>(matrix_d[0], matrix_d[1], result_d, nor[0], noc[0]); global void CudaAdd(float* A, float* B, float* C, int h, int w) int i = (blockidx.x * blockdim.x) + threadidx.x; if(i < (h*w)) C[i] = A[i] + B[i]; Όπου h w= noc[0] noc[1] ο συνολικός αριθµός στοιχείων των πινάκων που προστίθενται. 5. Μετρήσεις και Αποτελέσµατα Η παραπάνω εφαρµογή αρχικά εκτελέστηκε για διαφορετικά µεγέθη τετραγωνικών πινάκων εισόδου και µετρήθηκε κάθε φορά ο απαιτούµενος χρόνος ολοκλήρωσης της εκτέλεσης. Μετρήσεις έγιναν για την πρόσθεση σε C, την πρόσθεση σε CUDA, τον πολλαπλασιασµό σε C, τον πολλαπλασιασµό σε CUDA, τον συνολικό χρόνο εκτέλεσης πρόσθεσης και πολλαπλασιασµού σε CUDA συµπεριλαµβανοµένης και της µεταφοράς των δεδοµένων από και προς την κάρτα καθώς και µετρήσεις χρόνου µεταφοράς δεδοµένων ανάµεσα στην κεντρική µνήµη και την κάρτα. Στο Σχήµα 2 βλέπουµε τον χρόνο εκτέλεσης της πρόσθεσης σε C (κόκκινο χρώµα) και CUDA (µπλε χρώµα) για τα διάφορα µεγέθη πινάκων. Στο Σχήµα 3 βλέπουµε τον χρόνο εκτέλεσης του πολλαπλασιασµού σε C (κόκκινο χρώµα) και CUDA (µπλε χρώµα) για τα διάφορα µεγέθη πινάκων. Time 2.µ10 6 Hmsec L 1.5µ µ C vs CUDA Multiplication Σχήµα 3. Πολλαπλασιασµός σε C & CUDA Στο Σχήµα 4 βλέπουµε τον χρόνο εκτέλεσης της πρόσθεσης σε C (κόκκινο χρώµα) και CUDA (µπλε χρώµα) για τα διάφορα µεγέθη πινάκων συµπεριλαµβάνοντας στην CUDA τον χρόνο µεταφοράς των δεδοµένων από και προς την κάρτα C vs CUDA Total Addition Σχήµα 4. Πρόσθεση σε C & CUDA (µε καθυστέρηση µεταφοράς δεδοµένων) C vs CUDA Addition Στο Σχήµα 5 βλέπουµε τον χρόνο εκτέλεσης του πολλαπλασιασµού σε C (κόκκινο χρώµα) και CUDA (µπλε χρώµα) για τα διάφορα µεγέθη πινάκων συµπεριλαµβάνοντας στην CUDA τον χρόνο µεταφοράς των δεδοµένων από και προς την κάρτα Σχήµα 2. Πρόσθεση σε C & CUDA
6 Time 2.µ10 6 HmsecL 1.5µ µ10 6 C vs CUDA Total Multiplication C vs CUDA Multiplication Close Up Σχήµα 5. Πολλαπλασιασµός σε C & CUDA (µε καθυστέρηση µεταφοράς δεδοµένων) Στο Σχήµα 6 βλέπουµε τους χρόνους µεταφοράς των δεδοµένων από την κεντρική µνήµη του υπολογιστή στην κάρτα (κόκκινο χρώµα) και το αντίστροφο (µπλε χρώµα). Να σηµειωθεί ότι κατά την µεταφορά δεδοµένων πίσω στην κεντρική µνήµη το µέγεθος είναι το µισό. Time Hmsec L Data Transfers Time Σχήµα 6. Χρόνοι µεταφοράς δεδοµένων πρόσθεσης Τέλος στο Σχήµα 7 βλέπουµε τους χρόνους εκτέλεσης της πρόσθεσης σε C (κόκκινο χρώµα) και CUDA (µπλε χρώµα) για πίνακες εισόδου µικρού µεγέθους και αντίστοιχα στο Σχήµα 8 για τον πολλαπλασιασµό. Time Hmsec L 0.20 C vs CUDA Addition Close Up Σχήµα 8. Πολλαπλασιασµός σε C & CUDA Στην συνέχεια εκτελούµε την εφαρµογή µεταβάλλοντας το µέγεθος των block χρησιµοποιώντας σταθερό πίνακα εισόδου διαστάσεων 1000x1000. Τo Σχήµα 9 δείχνει την µεταβολή του χρόνου εκτέλεσης καθώς αυξάνει ο αριθµός των νηµάτων ανά block CUDA Multiplication 1000x1000 Matrix Block Dimention Σχήµα 9. Πολλαπλασιασµός σε CUDA µεταβάλλοντας τον αριθµό νηµάτων ανά block Στο Σχήµα 10 φαίνεται ο αριθµός των δισεκατοµµυρίων πράξεων που εκτελούνται στην µονάδα του χρόνου καθώς µεταβάλλεται η διάσταση των block. GFLOPS CUDA Multiplication Σχήµα 7. Πρόσθεση σε C & CUDA Block Dimention
7 Σχήµα 10. Πολλαπλασιασµός σε CUDA µεταβάλλοντας τον αριθµό νηµάτων ανά block Σηµειώνουµε ότι τα block είναι τετράγωνα και µεταβάλουµε όµοια και τις δυο διαστάσεις τους κατά την πειραµατική διαδικασία. Τέλος υπολογίζουµε τον µέσο αριθµό πράξεων κινητής υποδιαστολής ανά δευτερόλεπτο για κάθε περίπτωση. Στην πρόσθεση ο συνολικός αριθµός πράξεων 3 2 είναι n n και στον πολλαπλασιασµό 2 n n, όπου n η διάσταση του τετραγωνικού πίνακα. Στον πίνακα 1 φαίνονται τα αποτελέσµατα σε GFLOPS (δισεκατοµµύρια πράξεις το δευτερόλεπτο). Πίνακας 1. ισεκατοµµύρια πράξεις κινητής υποδιαστολής ανά δευτερόλεπτο Dim C+ CUDA+ C* CUDA* 10 0,03 0,01 0,13 0, ,12 0,01 0,15 0, ,04 0,05 0,51 2, ,04 0,16 0,19 7, ,04 0,31 0,17 12, ,04 1,14 0,17 17, ,04 4,19 0,18 15, ,04 7,35 0,13 19, ,04 8,80 0,12 17, ,04 9,52 0,12 20, ,04 9,85 0,12 16, ,04 10,01 0,12 17, ,04 9,42 0,12 14, ,05 9,29 0,12 18, ,04 9,47-14,43 σταθερά πιο γρήγορη από την C για πίνακες εισόδου µεγαλύτερους από 35x 35 ( 5KB για float δεδοµένα). Στον πολλαπλασιασµό, οι µετρήσεις προσεγγίζονται στην γραφική παράσταση του Σχήµατος 3 από πολυωνυµική συνάρτηση τρίτου βαθµού. Για την C ο -5 συντελεστής µεγιστοβάθµιου όρου είναι ενώ για την CUDA είναι , δηλαδή δυο τάξεις µεγέθους µικρότερος. Λαµβάνοντας υπ όψιν τους χρόνους µεταφοράς (Σχήµα 8) προκύπτει ότι η CUDA είναι σταθερά πιο γρήγορη από την C για πίνακες εισόδου µεγαλύτερους από 91x 91( 33KB για float δεδοµένα). Όπως έχει αναφερθεί και στην επεξήγηση του προγραµµατιστικού µοντέλου, ο χρόνος διεκπεραίωσης για την CUDA εξαρτάται από τον αριθµό των thread ανά block. Για να µελετήσουµε την συµπεριφορά της CUDA ως προς αυτή την παράµετρο, εκτελέσαµε µια σειρά πολλαπλασιασµών µεταξύ πινάκων , αλλάζοντας κάθε φορά το blockdim. Για ευκολία χρησιµοποιήθηκαν µόνο τετραγωνικά block. Τα αποτελέσµατα των µετρήσεων αυτών συνοψίζονται στις γραφικές παραστάσεις 9 και 10, που απεικονίζουν την µεταβολή του χρόνου και των GFLOPS αντίστοιχα. Προσεγγίζοντας τις µετρήσεις µε την βέλτιστη καµπύλη, βρέθηκε ότι ο χρόνος µειώνεται εκθετικά και τα GFLOPS αυξάνονται λογαριθµικά έναντι του µεγέθους της µιας διάστασης του blockdim. 7. Βιβλιογραφία - Πηγές [1] nvidia, nvidia CUDA Compute Unified Device Architecture Programming Guide Version 2.0, nvidia, 6/7/2008. [2] nvidia, nvidia CUDA Compute Unified Device Architecture Reference Manual Version 2.0, nvidia, June Συµπεράσµατα Όπως φαίνεται από τις παραπάνω γραφικές παραστάσεις η CUDA είναι αρκετές φορές ποιο γρήγορη από την C κυρίως όταν η επεξεργασία αφορά σε µεγάλο όγκο δεδοµένων. Στην πρόσθεση, η µετρήσεις προσεγγίζονται στην γραφική παράσταση του Σχήµατος 2 από πολυωνυµική συνάρτηση δευτέρου βαθµού. Για την C ο συντελεστής -5 µεγιστοβάθµιου όρου είναι ενώ για την -7 CUDA είναι , δηλαδή δυο τάξεις µεγέθους µικρότερος. Για να κάνουµε µια αντικειµενική σύγκριση πρέπει, για την CUDA, να λάβουµε υπ όψιν και τους χρόνους µεταφοράς των δεδοµένων εισόδου από την κεντρική µνήµη στην κάρτα γραφικών και των δεδοµένων εξόδου από την κάρτα γραφικών στην κύρια µνήµη (Σχήµα 4). Από το Σχήµα 7 προκύπτει ότι η CUDA είναι
Παράλληλος Προγραμματισμός σε Επεξεργαστές Γραφικών
Παράλληλος Προγραμματισμός σε Επεξεργαστές Γραφικών Συστήματα Παράλληλης Επεξεργασίας 9ο εξάμηνο, ΣΗΜΜΥ Εργαστήριο Υπολογιστικών Συστημάτων (CSLab) Δεκέμβριος 2015 Περιεχόμενα 2 01 / 2014 Προγραμματισμός
Παράλληλος Προγραμματισμός σε Επεξεργαστές Γραφικών
Παράλληλος Προγραμματισμός σε Επεξεργαστές Γραφικών Συστήματα Παράλληλης Επεξεργασίας 9ο εξάμηνο, ΣΗΜΜΥ Εργαστήριο Υπολογιστικών Συστημάτων (CSLab) Φεβρουάριος 2014 Περιεχόμενα 1 Εισαγωγή 2 Επεξεργαστές
Παράλληλος προγραμματισμός σε επεξεργαστές γραφικών
Παράλληλος προγραμματισμός σε επεξεργαστές γραφικών Συστήματα Παράλληλης Επεξεργασίας 9ο εξάμηνο, ΣΗΜΜΥ Εργαστήριο Υπολογιστικών Συστημάτων (CSLab) Νοέμβριος 2010 Περιεχόμενα...1 Σύντομη Ιστορική Αναδρομή...2
Παράλληλος Προγραμματισμός σε Επεξεργαστές Γραφικών
Παράλληλος Προγραμματισμός σε Επεξεργαστές Γραφικών Συστήματα Παράλληλης Επεξεργασίας 9ο εξάμηνο, ΣΗΜΜΥ Εργαστήριο Υπολογιστικών Συστημάτων (CSLab) Νοέμβριος 2017 1 Εισαγωγικά 2 Compute Unified Device
Παράλληλος Προγραμματισμός σε Επεξεργαστές Γραφικών
Παράλληλος Προγραμματισμός σε Επεξεργαστές Γραφικών Συστήματα Παράλληλης Επεξεργασίας 9ο εξάμηνο, ΣΗΜΜΥ Εργαστήριο Υπολογιστικών Συστημάτων (CSLab) Νοέμβριος 2016 1 Εισαγωγικά 2 Compute Unified Device
Εισαγωγή στον GPGPU προγραμματισμό 50,000, ,000,000 (1 από 2) 19/5/2018
Εισαγωγή στον GPGPU προγραμματισμό Ηλίας K. Σάββας Καθηγητής Τμ. Μηχ. Πληροφορικής ΤΕ, ΤΕΙ Θεσσαλίας savvas@teilar.gr 50,000,000 Χρόνια που μας πήρε να φτάσουμε αυτό τον αριθμό χρηστών κάποιας υπηρεσίας:
ΕΘΝΙΚΟ ΚΑΙ ΚΑΠΟΔΙΣΤΡΙΑΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ
ΕΘΝΙΚΟ ΚΑΙ ΚΑΠΟΔΙΣΤΡΙΑΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΠΡΟΓΡΑΜΜΑ ΜΕΤΑΠΤΥΧΙΑΚΩΝ ΣΠΟΥΔΩΝ "ΤΕΧΝΟΛΟΓΙΑ ΣΥΣΤΗΜΑΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ" ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ ΥΛΟΠΟΙΗΣΗ
ΕΣ 08 Επεξεργαστές Ψηφιακών Σηµάτων. Βιβλιογραφία Ενότητας
ΕΣ 08 Επεξεργαστές Ψηφιακών Σηµάτων Βελτιστοποίηση κώδικα σε επεξεργαστές ΨΕΣ Τµήµα Επιστήµη και Τεχνολογίας Τηλεπικοινωνιών Πανεπιστήµιο Πελοποννήσου Βιβλιογραφία Ενότητας Kehtarnavaz [2005]: Chapter
Προγραμματισμός Συστημάτων Υψηλών Επιδόσεων (ΗΥ421) Εργασία Εξαμήνου
Προγραμματισμός Συστημάτων Υψηλών Επιδόσεων (ΗΥ421) Εργασία Εξαμήνου ΟΜΑΔΑ: Ιωαννίδης Σταύρος ΑΕΜ: 755 Ντελής Γιώργος ΑΕΜ: 726 Επιλογή της Εργασίας Για την εργασία μας επιλέξαμε την βελτιστοποίηση της
All Pairs Shortest Path
All Pairs Shortest Path χρησιμοποιώντας Κυπριώτη Αικατερίνη 6960 Μόσχογλου Στυλιανός 6978 20 Ιανουαρίου 2012 Περιεχόμενα 1 Πρόλογος 3 2 Ο σειριακός APSP 3 3 Η παραλληλοποίηση με 5 3.1 Το προγραμματιστικό
Ανάπτυξη αλγόριθμου Closest Pair με CUDA API
ΕΘΝΙΚΟ ΚΑΙ ΚΑΠΟΔΙΣΤΡΙΑΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΤΜΗΜΑ ΦΥΣΙΚΗΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΜΕΤΑΠΤΥΧΙΑΚΟ ΔΙΠΛΩΜΑ ΕΙΔΙΚΕΥΣΗΣ ΗΛΕΚΤΡΟΝΙΚΟY ΑΥΤΟΜΑΤΙΣΜΟY ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ Ανάπτυξη αλγόριθμου Closest Pair με
Π Τ Υ Χ Ι Α Κ Η / Δ Ι Π Λ Ω Μ ΑΤ Ι Κ Η Ε Ρ ΓΑ Σ Ι Α
Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Σχολή Θετικών Επιστημών Τμήμα Πληροφορικής Π Τ Υ Χ Ι Α Κ Η / Δ Ι Π Λ Ω Μ ΑΤ Ι Κ Η Ε Ρ ΓΑ Σ Ι Α Αυτόνομη ρύθμιση προγραμμάτων που χρησιμοποιούν GPU Δοδόπουλος Ρωμανός
Προγραμματισμός GPUs μέσω του περιβάλλοντος CUDA
Προγραμματισμός GPUs μέσω του περιβάλλοντος CUDA Κωνσταντινίδης Ηλίας Υποψήφιος Διδάκτωρ Τμήμα Πληροφορικής & Τηλεπικοινωνιών Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών Νόμος Moore density doubles/18m
ΕΙΣΑΓΩΓΗ ΣΤΟ MATLAB- SIMULINK
ΕΙΣΑΓΩΓΗ ΣΤΟ MATLAB- SIMULINK ρ. Γεώργιος Φ. Φραγκούλης Καθηγητής Ver. 0.2 9/2012 ιανύσµατα & ισδιάστατοι πίνακες Ένα διάνυσµα u = (u1, u2,, u ) εισάγεται στη MATLAB ως εξής : u=[ u1, u2,, un ] ή u=[ u1
ΤΕΙ Κρήτης, Παράρτηµα Χανίων
ΠΣΕ, Τµήµα Τηλεπικοινωνιών & ικτύων Η/Υ Εργαστήριο ιαδίκτυα & Ενδοδίκτυα Η/Υ ( ηµιουργία συστήµατος µε ροint-tο-ροint σύνδεση) ρ Θεοδώρου Παύλος Χανιά 2003 Περιεχόµενα 1 ΕΙΣΑΓΩΓΗ...2 2 ΤΟ ΚΑΝΑΛΙ PΟINT-TΟ-PΟINT...2
Παραλληλισµός Εντολών (Pipelining)
ΕΣ 08 Επεξεργαστές Ψηφιακών Σηµάτων Παραλληλισµός Εντολών (Pipelining) Τµήµα Επιστήµη και Τεχνολογίας Τηλεπικοινωνιών Πανεπιστήµιο Πελοποννήσου Βιβλιογραφία Ενότητας Kuo [2005]: Chapter 3: Section 3.4,
Παράλληλα Συστήματα. Γιώργος Δημητρίου. Ενότητα 3 η : Παράλληλη Επεξεργασία. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής
Γιώργος Δημητρίου Ενότητα 3 η : Παράλληλη Επεξεργασία Παράλληλες Αρχιτεκτονικές Παράλληλο σύστημα είναι ένα σύνολο από επεξεργαστικά στοιχεία (processing elements) τα οποία: συνεργάζονται για γρήγορη επίλυση
Αρχιτεκτονική Επεξεργαστών Ψ.Ε.Σ
ΕΣ 08 Επεξεργαστές Ψηφιακών Σηµάτων Αρχιτεκτονική Επεξεργαστών Ψ.Ε.Σ Βιβλιογραφία Ενότητας Kehtarnavaz [2005]: Chapter 3 Kuo [2005]: Chapters 1 & 4-5 Lapsley [2002]: Chapter 4 Hayes [2000]: Κεφάλαιo 8
Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας
Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας Ενότητα 2: Αρχιτεκτονικές Von Neuman, Harvard. Κατηγοριοποίηση κατά Flynn. Υπολογισμός απόδοσης Συστημάτων
3 ο Εργαστήριο Μεταβλητές, Τελεστές
3 ο Εργαστήριο Μεταβλητές, Τελεστές Μια μεταβλητή έχει ένα όνομα και ουσιαστικά είναι ένας δείκτης σε μια συγκεκριμένη θέση στη μνήμη του υπολογιστή. Στη θέση μνήμης στην οποία δείχνει μια μεταβλητή αποθηκεύονται
Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών
Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Αρχιτεκτονική Υπολογιστών Άσκηση 6: Ασκήσεις Εξαμήνου Μέρος Β Νοέμβριος 2016 Στην άσκηση αυτή θα μελετήσουμε την εκτέλεση ενός
Οργάνωση επεξεργαστή (2 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική
Οργάνωση επεξεργαστή (2 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική Ταχύτητα εκτέλεσης Χρόνος εκτέλεσης = (αριθμός εντολών που εκτελούνται) Τί έχει σημασία: Χ (χρόνος εκτέλεσης εντολής) Αριθμός
ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ
ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ www.cslab.ece.ntua.gr Διπλωματικές
Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C
Εισαγωγή στην C Μορφή Προγράµµατος σε γλώσσα C Τµήµα Α Με την εντολή include συµπεριλαµβάνω στο πρόγραµµα τα πρότυπα των συναρτήσεων εισόδου/εξόδου της C.Το αρχείο κεφαλίδας stdio.h είναι ένας κατάλογος
Πολυπύρηνοι επεξεργαστές Multicore processors
Πολυπύρηνοι επεξεργαστές Multicore processors 1 Μετάβαση στους πολυπύρηνους(1) Απόδοση των µονοεπεξεργαστών 25% ετήσια βελτίωση της απόδοσης από το 1978 έως το 1986 Κυρίως από την εξέλιξη της τεχνολογίας
Σχήµα 6.1: Εισαγωγή της εντολής Read From Spreadsheet File στο Block Diagram.
Εισαγωγή αρχείων δεδοµένων 1. Η εισαγωγή αρχείων δεδοµένων στο LaVIEW γίνεται στο Block Diagram µε την εντολή Read From Spreadsheet File. 2. Εισάγουµε την εντολή Read From Spreadsheet File στο Block Diagram
Πτυχιακή εργασία της φοιτήτριας Λαδοπούλου Παρασκευής ΑΛΕΞΑΝΔΡΕΙΟ Τ.Ε.Ι. ΘΕΣΣΑΛΟΝΙΚΗΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ
ΑΛΕΞΑΝΔΡΕΙΟ Τ.Ε.Ι. ΘΕΣΣΑΛΟΝΙΚΗΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΠΑΡΑΛΛΗΛΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΕΠΙΣΤΗΜΟΝΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΜΕ ΧΡΗΣΗ GPU / CUDA Της φοιτήτριας ΛΑΔΟΠΟΥΛΟΥ ΠΑΡΑΣΚΕΥΗΣ
Παρεµβολή και Προσέγγιση Συναρτήσεων
Κεφάλαιο 4 Παρεµβολή και Προσέγγιση Συναρτήσεων 41 Παρεµβολή µε πολυώνυµο Lagrage Εστω ότι γνωρίζουµε τις τιµές µιας συνάρτησης f (x), f 0, f 1,, f ν σε σηµεία x 0, x 1,, x ν, και Ϲητάµε να υπολογίσουµε
ΑΕΠΠ Ερωτήσεις θεωρίας
ΑΕΠΠ Ερωτήσεις θεωρίας Κεφάλαιο 1 1. Τα δεδομένα μπορούν να παρέχουν πληροφορίες όταν υποβάλλονται σε 2. Το πρόβλημα μεγιστοποίησης των κερδών μιας επιχείρησης είναι πρόβλημα 3. Για την επίλυση ενός προβλήματος
ΠΛΗ10 Κεφάλαιο 2. ΠΛΗ10 Εισαγωγή στην Πληροφορική: Τόμος Α Κεφάλαιο: 2 2.1: Bασική Δομή του Υπολογιστή
Εισαγωγή στην Πληροφορική: Τόμος Α Κεφάλαιο: 2 2.1: Bασική Δομή του Υπολογιστή Στόχοι Μαθήματος: Να γνωρίσετε τις βασικές λειτουργίες ενός Η/Υ. Να γνωρίσετε τις έννοιες δεδομένα, πληροφορία, επεξεργασία,
Οι δείκτες στη γλώσσα C
Οι δείκτες στη γλώσσα C Δείκτης είναι µία µεταβλητή η οποία περιέχει σαν τιµή µία διεύθυνση της µνήµης Η τιµή ενός δείκτη δείχνει σε µία άλλη µεταβλητή, η οποία µπορεί να προσεγγισθεί έµµεσα µε τους ειδικούς
int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι
Εισαγωγή Στον Προγραµµατισµό «C» Πίνακες Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Δ. Τσελίκας Νικόλαος Προγραµµατισµός Δ. Τσελίκας Ι Πίνακες στη C Ένας πίνακας στη C είναι
Ετήσια Τεχνική Έκθεση
Ετήσια Τεχνική Έκθεση Έτος 2012 ΘΑΛΗΣ Πολυτεχνείο Κρήτης Πλατφόρµα προηγµένων µαθηµατικών µεθόδων και λογισµικού για την επίλυση προβληµάτων πολλαπλών πεδίων (multiphysics, multidomain) σε σύγχρονες υπολογιστικές
a = 10; a = k; int a,b,c; a = b = c = 10;
C: Από τη Θεωρία στην Εφαρµογή Κεφάλαιο 4 ο Τελεστές Γ. Σ. Τσελίκης Ν. Δ. Τσελίκας Ο τελεστής εκχώρησης = Ο τελεστής = χρησιµοποιείται για την απόδοση τιµής (ή αλλιώς ανάθεση τιµής) σε µία µεταβλητή Π.χ.
Παράλληλη Επεξεργασία
Παράλληλη Επεξεργασία Φροντιστήριο: Εισαγωγή στα Πολυεπεξεργαστικά Συστήματα Διερασίες και Νήματα σε Πολυεπεξεργαστικά Συστήματα Εργαστήριο Πληροφοριακών Συστημάτων Υψηλής Επίδοσης Parallel and Distributed
ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ
ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ www.cslab.ece.ntua.gr ΠΡΟΗΓΜΕΝΑ ΘΕΜΑΤΑ
ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ. ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ, 5 ο εξάµηνο
ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ και ΥΠΟΛΟΓΙΣΤΩΝ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ, 5 ο εξάµηνο ΦΕΒΡΟΥΑΡΙΟΣ 2006 ΘΕΜΑΤΑ ΚΑΙ ΛΥΣΕΙΣ
Πανεπιστήμιο Θεσσαλίας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων
Πανεπιστήμιο Θεσσαλίας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων Οργάνωση Η/Υ Ενότητα 1η: Εισαγωγή στην Οργάνωση Η/Υ Άσκηση 1: Αναλύστε τη διαδοχική εκτέλεση των παρακάτω εντολών MIPS με βάση τις
J-GANNO. Σύντοµη αναφορά στους κύριους στόχους σχεδίασης και τα βασικά χαρακτηριστικά του πακέτου (προέκδοση 0.9Β, Φεβ.1998) Χάρης Γεωργίου
J-GANNO ΓΕΝΙΚΕΥΜΕΝΟ ΠΑΚΕΤΟ ΥΛΟΠΟΙΗΣΗΣ ΤΕΧΝΗΤΩΝ ΝΕΥΡΩΝΙΚΩΝ ΙΚΤΥΩΝ ΣΤΗ ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ JAVA Σύντοµη αναφορά στους κύριους στόχους σχεδίασης και τα βασικά χαρακτηριστικά του πακέτου (προέκδοση 0.9Β,
Παράλληλος Προγραμματισμός με OpenCL
Παράλληλος Προγραμματισμός με OpenCL Συστήματα Παράλληλης Επεξεργασίας 9ο εξάμηνο, ΣΗΜΜΥ Εργαστήριο Υπολογιστικών Συστημάτων (CSLab) Δεκέμβριος 2017 1 Γενικά για OpenCL 2 Platform Model 3 Execution Model
for for for for( . */
Εισαγωγή Στον Προγραµµατισµό «C» Βρόχοι Επανάληψης Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Δ. Τσελίκας Νικόλαος Προγραµµατισµός Δ. Τσελίκας Ι Ο βρόχος for Η εντολή for χρησιµοποιείται
Αρχιτεκτονική Μνήµης
ΕΣ 08 Επεξεργαστές Ψηφιακών Σηµάτων Αρχιτεκτονική Μνήµης Τµήµα Επιστήµη και Τεχνολογίας Τηλεπικοινωνιών Πανεπιστήµιο Πελοποννήσου Βιβλιογραφία Ενότητας Kuo [2005]: Chapters 3 & 4 Lapsley [2002]: Chapter
Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας
Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας Ενότητα 2: Αρχιτεκτονικές Von Neuman, Harvard. Κατηγοριοποίηση κατά Flynn. Υπολογισμός απόδοσης Συστημάτων
Μάθημα 3: Αρχιτεκτονική Υπολογιστών
Μάθημα 3: Αρχιτεκτονική Υπολογιστών 3.1 Περιφερειακές μονάδες και τμήμα επεξεργασίας Στην καθημερινή μας ζωή ερχόμαστε συνέχεια σε επαφή με υπολογιστές. Ο υπολογιστής είναι μια συσκευή που επεξεργάζεται
Γενικά Στοιχεία Ηλεκτρονικού Υπολογιστή
Γενικά Στοιχεία Ηλεκτρονικού Υπολογιστή 1. Ηλεκτρονικός Υπολογιστής Ο Ηλεκτρονικός Υπολογιστής είναι μια συσκευή, μεγάλη ή μικρή, που επεξεργάζεται δεδομένα και εκτελεί την εργασία του σύμφωνα με τα παρακάτω
Κεφάλαιο 8.7. Πολυδιάστατοι Πίνακες ( ιάλεξη 18) ιδάσκων: ηµήτρης Ζεϊναλιπούρ
Κεφάλαιο 8.7 Πολυδιάστατοι Πίνακες ( ιάλεξη 18) ιδάσκων: ηµήτρης Ζεϊναλιπούρ Πολυδιάστατοι πίνακες Μέχρι τώρα µιλούσαµε για Μονοδιάστατους Πίνακες. ή π.χ. int age[5]= {31,28,31,30,31; για Παράλληλους πίνακες,
ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ Σχολή Μηχανολόγων Μηχανικών Εργαστήριο Θερμικών Στροβιλομηχανών
2009 ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ Σχολή Μηχανολόγων Μηχανικών Εργαστήριο Θερμικών Στροβιλομηχανών [ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΣΕ ΚΑΡΤΕΣ ΓΡΑΦΙΚΩΝ ΚΑΙ ΕΦΑΡΜΟΓΗ ΣΤΗΝ ΑΕΡΟΔΥΝΑΜΙΚΗ ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ] Διπλωματική Εργασία του
ΣΥΣΤΗΜΑΤΑ ΠΑΡΑΛΛΗΛΗΣ ΕΠΕΞΕΡΓΑΣΙΑΣ 9o εξάμηνο ΗΜΜΥ, ακαδημαϊκό έτος
ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΞΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ http://www.cslab.ece.ntua.gr ΣΥΣΤΗΜΑΤΑ
Αρχιτεκτονική Υπολογιστών
Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Αρχιτεκτονική Υπολογιστών Ενότητα 13: (Μέρος Γ ) Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Εργαστήριο Ψηφιακών
Μικροεπεξεργαστές - Μικροελεγκτές Ψηφιακά Συστήματα
Μικροεπεξεργαστές - Μικροελεγκτές Ψηφιακά Συστήματα 1. Ποια είναι η σχέση της έννοιας του μικροεπεξεργαστή με αυτή του μικροελεγκτή; Α. Ο μικροεπεξεργαστής εμπεριέχει τουλάχιστο έναν μικροελεγκτή. Β. Ο
ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ. Σχεδίαση παράλληλων αλγορίθμων ταξινόμησης και ψηφιακών φίλτρων (DSP) με εφαρμογή σε FPGA και CUDA. Αλέξανδρος Κ.
ΕΘΝΙΚΟ ΚΑΙ ΚΑΠΟΔΙΣΤΡΙΑΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΦΥΣΙΚΗΣ ΤΟΜΕΑΣ ΗΛΕΚΤΡΟΝΙΚΗΣ, ΥΠΟΛΟΓΙΣΤΩΝ, ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΚΑΙ ΑΥΤΟΜΑΤΙΣΜΟΥ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ Σχεδίαση παράλληλων αλγορίθμων ταξινόμησης και ψηφιακών φίλτρων
Αρχιτεκτονική Μνήμης
ΕΣ 08 Επεξεργαστές Ψηφιακών Σημάτων Αρχιτεκτονική Μνήμης Τμήμα Επιστήμη και Τεχνολογίας Τηλεπικοινωνιών Πανεπιστήμιο Πελοποννήσου Βιβλιογραφία Ενότητας Kuo [2005]: Chapters 3 & 4 Lapsley [2002]: Chapter
Εισαγωγή στην Πληροφορική
Εισαγωγή στην Πληροφορική Χειµερινό Εξάµηνο 2006-07 ρ. Παναγιώτης Χατζηδούκας (Π..407/80) Εισαγωγή στην Πληροφορική 1 Γενικές πληροφορίες Εισαγωγή στην Πληροφορική ιδασκαλία: Παναγιώτης Χατζηδούκας Email:
Ευρωπαϊκή Ολυµπιάδα Φυσικών Επιστηµών 2010 Προκαταρκτικός διαγωνισµός στη Φυσική. Σχολείο:
ΕΚΦΕ ΑΝΑΤΟΛΙΚΗΣ ΑΤΤΙΚΗΣ Ευρωπαϊκή Ολυµπιάδα Φυσικών Επιστηµών 010 Προκαταρκτικός διαγωνισµός στη Φυσική Σχολείο: Ονόµατα των µαθητών της οµάδας 1) ) 3) Οι στόχοι του πειράµατος 1. Η µέτρηση της επιτάχυνσης
4 ο Εργαστήριο Τυχαίοι Αριθμοί, Μεταβλητές Συστήματος
4 ο Εργαστήριο Τυχαίοι Αριθμοί, Μεταβλητές Συστήματος Μεταβλητές Συστήματος Η Processing χρησιμοποιεί κάποιες μεταβλητές συστήματος, όπως τις ονομάζουμε, για να μπορούμε να παίρνουμε πληροφορίες από το
ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal 1 ο Μέρος σηµειώσεων (Ενότητες 8.1 & 8.2 σχολικού βιβλίου)
ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal 1 ο Μέρος σηµειώσεων (Ενότητες 8.1 & 8.2 σχολικού βιβλίου) 1. Εισαγωγή Χαρακτηριστικά της γλώσσας Τύποι δεδοµένων Γλώσσα προγραµµατισµού
Είναι το «μυαλό» του υπολογιστή μας. Αυτός κάνει όλους τους υπολογισμούς και τις πράξεις. Έχει δική του ενσωματωμένη μνήμη, τη λεγόμενη κρυφή
1 Είναι το «μυαλό» του υπολογιστή μας. Αυτός κάνει όλους τους υπολογισμούς και τις πράξεις. Έχει δική του ενσωματωμένη μνήμη, τη λεγόμενη κρυφή μνήμη(cache). Η cache είναι πολύ σημαντική, πολύ γρήγορη,
Αρχιτεκτονική υπολογιστών
1 Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου Αρχιτεκτονική υπολογιστών Ενότητα 11-12 : Δομή και Λειτουργία της CPU Ευάγγελος Καρβούνης Παρασκευή, 22/01/2016 2 Οργάνωση της CPU Η CPU πρέπει:
Βασική δοµή και Λειτουργία Υπολογιστή
Βασική δοµή και Λειτουργία Υπολογιστή Η τεχνολογία των Η/Υ έχει βασιστεί στη λειτουργία του ανθρώπινου οργανισµού. Οπως ο άνθρωπος πέρνει εξωτερικά ερεθίσµατα από το περιβάλλον τα επεξεργάζεται και αντιδρά
Προγραμματισμός Συστημάτων Υψηλών Επιδόσεων (ΗΥ421) 3η Εργαστηριακή Άσκηση
Προγραμματισμός Συστημάτων Υψηλών Επιδόσεων (ΗΥ421) 3η Εργαστηριακή Άσκηση ΟΝΟΜΑ: Ιωαννίδης Σταύρος ΑΕΜ: 755 Αποτελέσματα devicequery Profiling με το Vtune Το profiling έδειξε πως οι πιο αργές συναρτήσεις
Διαφορές single-processor αρχιτεκτονικών και SoCs
13.1 Τα συστήματα και η επικοινωνία μεταξύ τους γίνονται όλο και περισσότερο πολύπλοκα. Δεν μπορούν να περιγραφούνε επαρκώς στο επίπεδο RTL καθώς αυτή η διαδικασία γίνεται πλέον αρκετά χρονοβόρα. Για αυτό
13.2 Παράλληλος Προγραµµατισµός Γλωσσάρι, Σελ. 1
13.2 Παράλληλος Προγραµµατισµός Γλωσσάρι, Σελ. 1 ΓΛΩΣΣΑΡΙ Αµοιβαίος αποκλεισµός (mutual exclusion) Στο µοντέλο κοινού χώρου διευθύνσεων, ο αµοιβαίος αποκλεισµός είναι ο περιορισµός του αριθµού των διεργασιών
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 3 Ο. Σταθερές-Παράμετροι-Μεταβλητές Αριθμητικοί & Λογικοί Τελεστές Δομή ελέγχου-επιλογής Σύνθετοι έλεγχοι
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 3 Ο Σταθερές-Παράμετροι-Μεταβλητές Αριθμητικοί & Λογικοί Τελεστές Δομή ελέγχου-επιλογής Σύνθετοι έλεγχοι ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 2010-11 1 Μεταβλητές-Σταθερές-Παράμετροι Τα στοιχεία
Ατομική Διπλωματική Εργασία ΕΚΤΕΛΕΣΗ ΤΟΥ QUERY 6 ΤΟΥ BENCHMARK TPC-H ΣΕ ΚΑΡΤΑ ΓΡΑΦΙΚΩΝ, ΜΕ CUDA. Μαρία Λοϊζίδη ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ
Ατομική Διπλωματική Εργασία ΕΚΤΕΛΕΣΗ ΤΟΥ QUERY 6 ΤΟΥ BENCHMARK TPC-H ΣΕ ΚΑΡΤΑ ΓΡΑΦΙΚΩΝ, ΜΕ CUDA Μαρία Λοϊζίδη ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ Δεκέμβριος 2009 ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ
1 ΕΙΣΑΓΩΓΗ. Πρωταρχικοί Τύποι
1 ΕΙΣΑΓΩΓΗ Η γλώσσα προγραµµατισµού Java είναι ισχυρά τυποποιηµένη (strongly typed), που σηµαίνει ότι κάθε µεταβλητή και κάθε έκφραση έχει κάποιο τύπο, ο οποίος πρέπει να είναι γνωστός κατά το χρόνο της
Επαναληπτικές δοµές. µτ α.τ. Όχι. ! απαγορεύεται µέσα σε µία ΓΙΑ να µεταβάλλουµε τον µετρητή! διότι δεν θα ξέρουµε µετά πόσες επαναλήψεις θα γίνουν
Επαναληπτικές δοµές Η λογική των επαναληπτικών διαδικασιών εφαρµόζεται όπου µία ακολουθία εντολών εφαρµόζεται σε ένα σύνολο περιπτώσεων που έχουν κάτι κοινό. Όταν ψάχνουµε θέση για να παρκάρουµε κοντά
Συστήματα μνήμης και υποστήριξη μεταφραστή για MPSoC
Συστήματα μνήμης και υποστήριξη μεταφραστή για MPSoC Πλεονεκτήματα MPSoC Είναι ευκολότερο να σχεδιαστούν πολλαπλοί πυρήνες επεξεργαστών από τον σχεδιασμό ενός ισχυρότερου και πολύ πιο σύνθετου μονού επεξεργαστή.
ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ
ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ Μελέτη και σύγκριση βασικών πράξεων βάσεων δεδοµένων σε µονάδες επεξεργασίας γραφικών ΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ της Μέντα Βαρβάρας
ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ
ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ www.cslab.ece.ntua.gr Συστήματα Παράλληλης
Ενότητα 4. Εισαγωγή στην Πληροφορική. Αναπαράσταση δεδοµένων. Αναπαράσταση πληροφορίας. υαδικοί αριθµοί. Χειµερινό Εξάµηνο 2006-07
Ενότητα 4 Εισαγωγή στην Πληροφορική Κεφάλαιο 4Α: Αναπαράσταση πληροφορίας Κεφάλαιο 4Β: Επεξεργαστές που χρησιµοποιούνται σε PCs Χειµερινό Εξάµηνο 2006-07 ρ. Παναγιώτης Χατζηδούκας (Π..407/80) Εισαγωγή
Επιτεύγµατα των Λ.Σ.
Επιτεύγµατα των Λ.Σ. ιεργασίες ιαχείριση Μνήµης Ασφάλεια και προστασία δεδοµένων Χρονοπρογραµµατισµός & ιαχείρηση Πόρων οµή Συστήµατος ιεργασίες Ένα πρόγραµµα σε εκτέλεση Ένα στιγµιότυπο ενός προγράµµατος
Βασικές Έννοιες της Πληροφορικής
Βασικές Έννοιες της Πληροφορικής Ηλεκτρονικός Υπολογιστής Αυτόματη ηλεκτρονική μηχανή που δέχεται, φυλάσσει, επαναφέρει, επεξεργάζεται και παρουσιάζει πληροφορίες σύμφωνα με προκαθορισμένες εντολές. Δεδομένα
i Throughput: Ο ρυθμός ολοκλήρωσης έργου σε συγκεκριμένο χρόνο
Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών 6-7 Απόδοση ΚΜΕ (Μέτρηση και τεχνικές βελτίωσης απόδοσης) http://mixstef.github.io/courses/comparch/ Μ.Στεφανιδάκης Κεντρική Μονάδα Επεξεργασίας
Κεφάλαιο 3.5-3.6, 3.2: Συναρτήσεις II. ( ιάλεξη 12) ιδάσκων: ηµήτρης Ζεϊναλιπούρ
Κεφάλαιο 3.5-3.6, 3.2: Συναρτήσεις II ( ιάλεξη 12) ιδάσκων: ηµήτρης Ζεϊναλιπούρ 12-1 Ανασκόπηση οµής Προγράµµατος µε Συναρτήσεις #include 1 void PrintMessage (); Πρότυπο ( ήλωση) Συνάρτησης (
Προγραμματισμός Η/Υ 1 (Εργαστήριο)
Προγραμματισμός Η/Υ 1 (Εργαστήριο) Ενότητα 2: Δομή ενός προγράμματος C Καθηγήτρια Εφαρμογών: Τσαγκαλίδου Ροδή Τμήμα: Ηλεκτρολόγων Μηχανικών Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες
ΕΙΔΙΚΟΤΗΤΑ: ΤΕΧΝΙΚΟΣ ΕΦΑΡΜΟΓΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΘΗΜΑ: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ
ΕΙΔΙΚΟΤΗΤΑ: ΤΕΧΝΙΚΟΣ ΕΦΑΡΜΟΓΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΘΗΜΑ: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ (Τμήματα Υπολογιστή) ΕΚΠΑΙΔΕΥΤΗΣ:ΠΟΖΟΥΚΙΔΗΣ ΚΩΝΣΤΑΝΤΙΝΟΣ ΤΜΗΜΑΤΑ ΗΛΕΚΤΡΟΝΙΚΟΥ ΥΠΟΛΟΓΙΣΤΗ Κάθε ηλεκτρονικός υπολογιστής αποτελείται
Πανεπιστήμιο Θεσσαλίας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων
Πανεπιστήμιο Θεσσαλίας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων Προσομοίωση μεγάλης κλίμακας γραμμικών κυκλωμάτων σε παράλληλες πλατφόρμες Ειδικό Θέμα Ιωαννίδης Κ. Σταύρος Αριθμός Ειδικού Μητρώου:
ΑΣΚΗΣΗ 6: ΔΕΙΚΤΕΣ. Σκοπός της Άσκησης. 1. Εισαγωγικά στοιχεία για τους Δείκτες
Σκοπός της Άσκησης ΑΣΚΗΣΗ 6: ΔΕΙΚΤΕΣ Ο σκοπός αυτής της εργαστηριακής άσκησης είναι η εξοικείωση με τη χρήση των δεικτών (pointers). Οι δείκτες δίνουν την δυνατότητα σε προγράμματα να προσομοιώνουν τη
Στοιχεία από την αρχιτεκτονική των μικροϋπολογιστών
Στοιχεία από την αρχιτεκτονική των μικροϋπολογιστών Η επεξεργασία των δεδομένων ακολουθεί μια στερεότυπη διαδρομή: τα δεδομένα εισάγονται στο υπολογιστικό σύστημα, υφίστανται μια ορισμένη επεξεργασία και
Επιστηµονικός Υπολογισµός Ι Ενότητα 1 - Εισαγωγή. Ευστράτιος Γαλλόπουλος
Ενότητα 1 - Εισαγωγή Ευστράτιος Γαλλόπουλος c Ε. Γαλλόπουλος 201-2015 Ασκηση 1 Τι ονοµάζουµε υπολογιστικούς πυρήνες ; πυρήνων. Να δώσετε 3 παραδείγµατα τέτοιων Απάντηση ιαδικασίες (που µπορεί να είναι
Πρώτη επαφή με το μαθηματικό πακέτο Mathematica
Πρώτη επαφή με το μαθηματικό πακέτο Mathematica Με δύο λόγια, μπορούμε να πούμε ότι η Mathematica είναι ένα πρόγραμμα που το χρησιμοποιούμε για να κάνουμε αναλυτικούς και αριθμητικούς υπολογισμούς αλλά
Το ολοκληρωμένο κύκλωμα μιας ΚΜΕ. «Φέτα» ημιαγωγών (wafer) από τη διαδικασία παραγωγής ΚΜΕ
Το ολοκληρωμένο κύκλωμα μιας ΚΜΕ Η Κεντρική Μονάδα Επεξεργασίας (Central Processing Unit -CPU) ή απλούστερα επεξεργαστής αποτελεί το μέρος του υλικού που εκτελεί τις εντολές ενός προγράμματος υπολογιστή
ιεργασίες και νήµατα Προγραµµατισµός ΙΙΙ 1 lalis@inf.uth.gr
ιεργασίες και νήµατα Προγραµµατισµός ΙΙΙ 1 lalis@inf.uth.gr Η έννοια της διεργασίας ιεργασία (process) είναι ο µηχανισµός εκτέλεσης ενός προγράµµατος σε ένα λειτουργικό σύστηµα. Η διεργασία είναι µια ενεργή
Εισαγωγή στην Αριθμητική Ανάλυση
Εισαγωγή στην Αριθμητική Ανάλυση Εισαγωγή στη MATLAB ΔΙΔΑΣΚΩΝ: ΓΕΩΡΓΙΟΣ ΑΚΡΙΒΗΣ ΒΟΗΘΟΙ: ΔΗΜΗΤΡΙΑΔΗΣ ΣΩΚΡΑΤΗΣ, ΣΚΟΡΔΑ ΕΛΕΝΗ E-MAIL: SDIMITRIADIS@CS.UOI.GR, ESKORDA@CS.UOI.GR Τι είναι Matlab Είναι ένα περιβάλλον
Αρχιτεκτονική Υπολογιστών
Αρχιτεκτονική Υπολογιστών Παραλληλισμός Βασικές Πηγές: Αρχιτεκτονική Υπολογιστών: μια Δομημένη Προσέγγιση, Α. Tanenbaum, Vrije Universiteit, Amsterdam. Computer Architecture and Engineering, K. Asanovic,
Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών Απόδοση ΚΜΕ. (Μέτρηση και τεχνικές βελτίωσης απόδοσης)
Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών 2016-17 Απόδοση ΚΜΕ (Μέτρηση και τεχνικές βελτίωσης απόδοσης) http://mixstef.github.io/courses/comparch/ Μ.Στεφανιδάκης Κεντρική Μονάδα Επεξεργασίας
; Γιατί είναι ταχύτερη η λήψη και αποκωδικοποίηση των εντολών σταθερού μήκους;
Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών 2015-16 Αρχιτεκτονικές Συνόλου Εντολών (ΙΙ) (Δομή Εντολών και Παραδείγματα) http://di.ionio.gr/~mistral/tp/comparch/ Μ.Στεφανιδάκης Αρχιτεκτονική
Προσομοιώσεις Monte Carlo σε GPU
ΕΘΝΙΚΟ ΜΕΤΣΟΒΕΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΕΦΑΡΜΟΣΜΕΝΩΝ ΜΑΘΗΜΑΤΙΚΩΝ ΚΑΙ ΦΥΣΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΟΜΕΑΣ ΦΥΣΙΚΗΣ Προσομοιώσεις Monte Carlo σε GPU Δημήτρης Καρκούλης Επιβλέπων: Κ. Αναγνωστόπουλος 15/07/2010 Πρακτική στο
Μάθημα 4: Κεντρική Μονάδα Επεξεργασίας
Μάθημα 4: Κεντρική Μονάδα Επεξεργασίας 4.1 Γενικά Ο υπολογιστής επεξεργάζεται δεδομένα ακολουθώντας βήμα βήμα, τις εντολές ενός προγράμματος. Το τμήμα του υπολογιστή, που εκτελεί τις εντολές και συντονίζει
ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ. Άσκηση 5: Παράλληλος προγραμματισμός σε επεξεργαστές γραφικών
ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ www.cslab.ece.ntua.gr Συστήματα Παράλληλης
ΛΟΓΙΣΜΙΚΟ (software)
ΛΟΓΙΣΜΙΚΟ (software) Το Λογισµικό του Ηλεκτρονικού Υπολογιστή Περιεχόµενα Ορισµός Λογισµικού Κατηγορίες Λογισµικό Συστήµατος Λογισµικό Εφαρµογών Το λογισµικό είναι: Το λογισµικό Το σύνολο των προγραµµάτων
Εισαγωγή στην επιστήµη των υπολογιστών. Πράξεις µε µπιτ
Εισαγωγή στην επιστήµη των υπολογιστών Πράξεις µε µπιτ 1 Πράξεις µε µπιτ 2 Αριθµητικές Πράξεις σε Ακέραιους Πρόσθεση, Αφαίρεση, Πολλαπλασιασµός, Διαίρεση Ο πολλαπλασιασµός και η διαίρεση στο επίπεδο του
Εισαγωγή στην Πληροφορική Προγραμματισμός-Λειτουργικά
Εισαγωγή στην Πληροφορική Προγραμματισμός-Λειτουργικά Ηλ. Γκρίνιας Τ. Ε. Ι. Σερρών Τμήμα Πληροφορικής και Επικοινωνιών Αλγόριθμοι Ορισμός: ο αλγόριθμος είναι μια σειρά από πεπερασμένα βήματα που καθορίζουν
Άρα, Τ ser = (A 0 +B 0 +B 0 +A 0 ) επίπεδο 0 + (A 1 +B 1 +A 1 ) επίπεδο 1 + +(B 5 ) επίπεδο 5 = 25[χρονικές µονάδες]
Α. Στο παρακάτω διάγραµµα εµφανίζεται η εκτέλεση ενός παράλληλου αλγόριθµου που λύνει το ίδιο πρόβληµα µε έναν ακολουθιακό αλγόριθµο χωρίς πλεονασµό. Τα Α i και B i αντιστοιχούν σε ακολουθιακά υποέργα
Εισαγωγή στην πληροφορική
Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Αγρονόµων Τοπογράφων Μηχανικών Εισαγωγή στην πληροφορική Βασίλειος Βεσκούκης ρ. Ηλεκτρολόγος Μηχανικός & Μηχανικός Υπολογιστών ΕΜΠ v.vescoukis@cs.ntua.gr Η γλώσσα προγραµµατισµού
Στοιχειώδης προγραμματισμός σε C++
Στοιχειώδης προγραμματισμός σε C++ Σύντομο Ιστορικό. Το πρόγραμμα Hello World. Ο τελεστής εξόδου. Μεταβλητές και δηλώσεις τους. Αντικείμενα, μεταβλητές, σταθερές. Ο τελεστής εισόδου. Θεμελιώδεις τύποι.
Παράλληλα Συστήματα. Γιώργος Δημητρίου. Ενότητα 4 η : Παράλληλος Προγραμματισμός. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής
Γιώργος Δημητρίου Ενότητα 4 η : Παράλληλος Προγραμματισμός Παράλληλος Προγραμματισμός Ο παράλληλος προγραμματισμός με βάση την αφαιρετικότητα: Ελάχιστη έως καμία γνώση της αρχιτεκτονικής Επεκτάσεις παράλληλου
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4 «Προγραμματισμός Η/Υ» - Τετράδιο Εργαστηρίου #4 2 Γενικά Στο Τετράδιο #4 του Εργαστηρίου θα αναφερθούμε σε θέματα διαχείρισης πινάκων
Εισαγωγή στην επιστήµη των υπολογιστών. Πράξεις µε µπιτ
Εισαγωγή στην επιστήµη των υπολογιστών Πράξεις µε µπιτ 1 Πράξεις µε µπιτ 2 Αριθµητικές Πράξεις σε Ακέραιους Πρόσθεση, Αφαίρεση, Πολλαπλασιασµός, Διαίρεση 3 Πρόσθεση στη µορφή συµπληρώµατος ως προς δύο
Ιστορική Αναδρομή Λειτουργικών Συστημάτων (ΛΣ) Εισαγωγή : ο πυρήνας (kernel) / ο φλοιός (shell) Β ΕΠΑΛ
Ιστορική Αναδρομή Λειτουργικών Συστημάτων (ΛΣ) Εισαγωγή : ο πυρήνας (kernel) / ο φλοιός (shell) Β ΕΠΑΛ http://leitourgika-systhmata-epal-b.ggia.info/ Σύγχρονο Λειτουργικό Σύστημα - ΛΣ Λειτουργικό Σύστημα: