OpenCL.

Σχετικά έγγραφα
Παράλληλος Προγραμματισμός με OpenCL

ii Πυργιώτης Θεμιστοκλής

Παράλληλος προγραμματισμός περιστροφικών αλγορίθμων εξωτερικών σημείων τύπου simplex ΠΛΟΣΚΑΣ ΝΙΚΟΛΑΟΣ

Παράλληλη Επεξεργασία

Κεντρική Μονάδα Επεξεργασίας

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ

Παράλληλη Επεξεργασία

Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας

i Όλες οι σύγχρονες ΚΜΕ είναι πολυπλοκότερες!

Παράλληλα Συστήματα. Γιώργος Δημητρίου. Ενότητα 3 η : Παράλληλη Επεξεργασία. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής

ΜΕΛΕΤΗ ΣΧΕΔΙΑΣΗ ΕΦΑΡΜΟΓΗΣ ΣΕ ΥΠΟΛΟΓΙΣΤΙΚΟ ΝΕΦΟΣ (CLOUD COMPUTING) ΜΕ ΕΜΦΑΣΗ ΣΤΗΝ ΚΑΤΑΣΚΕΥΗ ΔΕΝΤΡΩΝ.

Διαχείριση Κύριας Μνήμης

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Προγραμματισμός Δομές Δεδομένων

Standard Template Library (STL) C++ library

Παραλληλισμός Αλγορίθμων σε Κάρτες Γραφικών για Σχεδιασμό Κίνησης

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον

All Pairs Shortest Path

Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ, ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΚΑΙ ΔΙΚΤΥΩΝ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΠΡΟΓΡΑΜΜΑ ΜΕΤΑΠΤΥΧΙΑΚΩΝ ΣΠΟΥΔΩΝ ΤΜΗΜΑΤΟΣ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ. Διπλωματική Εργασία. του. Καραογλάνογλου Σωτήριου

Δομές Δεδομένων. Λουκάς Γεωργιάδης.

Εξωτερική Αναζήτηση. Ιεραρχία Μνήμης Υπολογιστή. Εξωτερική Μνήμη. Εσωτερική Μνήμη. Κρυφή Μνήμη (Cache) Καταχωρητές (Registers) μεγαλύτερη ταχύτητα

ΤΕΧΝΙΚΕΣ ΑΥΞΗΣΗΣ ΤΗΣ ΑΠΟΔΟΣΗΣ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ I

Μηχανοτρονική. Τμήμα Μηχανικών Παραγωγής και Διοίκησης 7 ο Εξάμηνο,

Δείκτες σε συναρτήσεις. Προγραμματισμός II 1

Lab 1: C/C++ Pointers and time.h. Panayiotis Charalambous 1

ΓΛΩΣΣΙΚΗ ΤΕΧΝΟΛΟΓΙΑ. Python & NLTK: Εισαγωγή

Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1

Δομημένος Προγραμματισμός

Εικονική Μνήμη (1/2)

Αρχιτεκτονική υπολογιστών

Παράλληλη Επεξεργασία Κεφάλαιο 1 Γιατί Παράλληλος Προγραμματισμός;

Προγραμματισμός Συστημάτων Υψηλών Επιδόσεων (ΗΥ421) Εργασία Εξαμήνου

Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής T.E.I. ΘΕΣΣΑΛΟΝΙΚΗΣ

Εικονική Μνήμη (Virtual Μemory)

Μεθόδων Επίλυσης Προβλημάτων

ΕΙΣΑΓΩΓΗ. Παρέχει µια διεπαφή (interface) ανάµεσα στο υλισµικό και στα προγράµµατα εφαρµογών/χρηστών.

i Throughput: Ο ρυθμός ολοκλήρωσης έργου σε συγκεκριμένο χρόνο

VERSION 1.0 ΝΟΕΜΒΡΙΟΣ, 2016 ΤΕΧΝΟΛΟΓΙΕΣ ΥΠΟΛΟΓΙΣΤΙΚΟΥ ΝΕΦΟΥΣ ΔΗΜΙΟΥΡΓΩΝΤΑΣ ΤΟΠΟΛΟΓΙΕΣ ΔΙΚΤΥΩΝ ΣΤΟ CLOUDSIM ΕΠΙΜΕΛΕΙΑ: ΒΑΣΙΛΕΙΟΣ ΤΣΑΚΑΝΙΚΑΣ

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών Απόδοση ΚΜΕ. (Μέτρηση και τεχνικές βελτίωσης απόδοσης)

Δομές Δεδομένων Standard Template Library (STL) 23/3/2017 ΜΠΟΜΠΟΤΑΣ ΑΓΟΡΑΚΗΣ

εισαγωγικές έννοιες Παύλος Εφραιμίδης Δομές Δεδομένων και

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Κατακερματισμός. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Οργάνωση και Σχεδίαση Υπολογιστών Η Διασύνδεση Υλικού και Λογισμικού, 4 η έκδοση. Σύντομη Εισαγωγή στη χρήση του προσομοιωτή και συμβολομεταφραστή

Πρόβλημα 1: Αναζήτηση Ελάχιστης/Μέγιστης Τιμής

Επιτεύγµατα των Λ.Σ.

ΔΙΑΧΥΤΑ ΚΑΙ ΕΝΣΩΜΑΤΩΜΕΝΑ ΣΥΣΤΗΜΑΤΑ

Τεχνικές για διαμοιρασμό φορτίου και μακροεντολές Broadcast - Scatter για αποδοτικές πολύ-επεξεργαστικές εφαρμογές

VERSION 1.0 ΝΟΕΜΒΡΙΟΣ, 2016 ΤΕΧΝΟΛΟΓΙΕΣ ΥΠΟΛΟΓΙΣΤΙΚΟΥ ΝΕΦΟΥΣ ΤΟ ΠΕΡΙΒΑΛΛΟΝ ΠΡΟΣΟΜΟΙΩΣΗΣ CLOUDSIM ΕΠΙΜΕΛΕΙΑ: ΒΑΣΙΛΕΙΟΣ ΤΣΑΚΑΝΙΚΑΣ

Συστήματα σε Ολοκληρωμένα Κυκλώματα

Μελέτη και Υλοποίηση Αλγορίθμων για Βιολογικές Εφαρμογές σε MapReduce Περιβάλλον

Τελική Εξέταση, Απαντήσεις/Λύσεις

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Αρχιτεκτονική Υπολογιστών

Δομές Δεδομένων και Αλγόριθμοι

Αντικειμενοστρεφής Προγραμματισμός

Πίνακες (Μια παλιά άσκηση) Πίνακες Κατακερματισμού (Hash Tables) Πίνακες (Μια παλιά άσκηση) Εισαγωγή. A n

Κεφάλαιο 7: Υποπρογράμματα. Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών

Κεφάλαιο , 3.2: Συναρτήσεις II. (Διάλεξη 12)

ΑΕΠΠ Ερωτήσεις θεωρίας

Λειτουργικά Συστήματα Η/Υ

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών Κρυφές Μνήμες. (οργάνωση, λειτουργία και απόδοση)

ΟΜΑΔΕΣ ΕΝΤΟΛΩΝ: ΙΔΙΟΤΗΤΕΣ ΚΑΙ ΛΕΙΤΟΥΡΓΙΕΣ

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΑΡΑΛΛΗΛΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΜΕ OpenMP

Πανεπιστήμιο Θεσσαλίας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων

Δομές δεδομένων (2) Αλγόριθμοι

Π Τ Υ Χ Ι Α Κ Η Ε Ρ Γ Α Σ Ι Α

Κεφάλαιο 7: Υπορουτίνες

Lab 1: C/C++ Pointers and time.h. Panayiotis Charalambous 1

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #2

Week. 6: Java Collections

Το ολοκληρωμένο κύκλωμα μιας ΚΜΕ. «Φέτα» ημιαγωγών (wafer) από τη διαδικασία παραγωγής ΚΜΕ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ Η/Υ

Εισαγωγή στον Προγραμματισμό

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας

ILP (integer linear programming) βασιζόμενη εξαρτώμενη από τους πόρους μεταγλώττιση

ΟΡΓΑΝΙΣΜΟΣ ΒΙΟΜΗΧΑΝΙΚΗΣ ΙΔΙΟΚΤΗΣΙΑΣ

Ελαχιστοποίηση της Καταναλισκόμενης Ενέργειας σε Φορητές Συσκευές

Παράλληλη Επεξεργασία Κεφάλαιο 10 ο Αντίγραφα Εργαζομένων

Βασικές έννοιες. Κατανεμημένα Συστήματα 1

ΕΙΔΙΚΟΤΗΤΑ: ΤΕΧΝΙΚΟΣ ΕΦΑΡΜΟΓΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΘΗΜΑ: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

Chapter 4 (1) Αξιολόγηση και κατανόηση της απόδοσης

Λειτουργικά Συστήματα (Λ/Σ)

Μετατροπή χαρακτήρων ASCII σε ακέραιο αριθµό (atoi) & Άνοιγµα αρχείου µέσα από τo QtSPIM, διάβασµα, και αποθήκευση του περιεχοµένου του στη µνήµη

Διάλεξη 10: Δομές Δεδομένων Ι (Στοίβες & Ουρές)

Αρχιτεκτονική Υπολογιστών

Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστηµάτων Βάσεων εδοµένων Εαρινό Εξάµηνο

Προαπαιτούμενες Ασκήσεις 5 ου Εργαστηρίου. Dose stoixeio (integer) : 25 Found stoixeio in position 7 Dose stoixeio (integer) :94 Value not found

Τύποι Δεδομένων και Απλές Δομές Δεδομένων. Παύλος Εφραιμίδης V1.0 ( )

Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών

10. Πίνακες Κατακερματισμού

Προγραμματισμός και Χρήση Ηλεκτρονικών Υπολογιστών - Βασικά Εργαλεία Λογισμικού

TRAVIS TRAFFIC VIOLATION INFORMATION SYSTEM ΣΥΣΤΗΜΑ ΔΙΑΧΕΙΡΗΣΗΣ ΠΑΡΑΒΑΣΕΩΝ ΦΩΤΟΕΠΙΣΗΜΑΝΣΗΣ

Απλές Δοµές Δεδοµένων Στην ενότητα αυτή θα γνωρίσουµε ορισµένες απλές Δοµές Δεδοµένων και θα τις χρησιµοποιήσουµε για την αποδοτική επίλυση του προβλή

Εισαγωγή στα Λειτουργικά συστήματα Ι. Καθηγητής Κώστας Αναγνωστόπουλος

Εισαγωγή στον επιστημονικό προγραμματισμό 2 o Μάθημα

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ. Άσκηση 5: Παράλληλος προγραμματισμός σε επεξεργαστές γραφικών

Παράλληλος προγραμματισμός: παράλληλες λ υπολογιστικές πλατφόρμες και ανάλυση προγραμμάτων

Transcript:

Προγραμματισμός GPU σε περιβάλλον OpenCL και ταύτιση αλφαριθμητικών Πυργιώτης Θεμιστοκλής t.pirgiot@gmail.com ΠΜΣ Τμήματος Εφαρμοσμένης Πληροφορικής Συστήματα Υπολογιστών Πανεπιστημίο Μακεδονίας. Επιβλέπων καθηγητής: Μαργαρίτης Κωνσταντίνος Μάρτιος, 2012 1 / 20 Πυργιώτης Θεμιστοκλής Προγραμματισμός GPU σε περιβάλλον OpenCL

Περιεχόμενα OpenCL Τι είναι; Βασικοί όροι Αρχιτεκτονική 1 OpenCL Τι είναι; Βασικοί όροι Αρχιτεκτονική 2 3 2 / 20 Πυργιώτης Θεμιστοκλής Προγραμματισμός GPU σε περιβάλλον OpenCL

Τι είναι το OpenCL; Τι είναι; Βασικοί όροι Αρχιτεκτονική Ορισμός Το OpenCL (Open Computing Language) είναι ένα ανοιχτό πρότυπο για την υλοποίηση εφαρμογών γενικού σκοπού, οι οποίες εκτελούνται σε ετερογενείς πλατφόρμες αποτελούμενες από CPU, GPU και άλλους επεξεργαστές, δίνοντας έτσι την δυνατότητα στους προγραμματιστές να εκμεταλλευτούν στο έπακρο όλη την υπολογιστική ισχύ ενός συστήματος. 3 / 20 Πυργιώτης Θεμιστοκλής Προγραμματισμός GPU σε περιβάλλον OpenCL

Τι είναι το OpenCL; Τι είναι; Βασικοί όροι Αρχιτεκτονική Αποτελείται από δύο βασικά στοιχεία: Το API που χρησιμοποιείται για τον συντονισμό των παράλληλων εφαρμογών σε ετερογενείς επεξεργαστές. Μια γλώσσα προγραμματισμού ανεξαρτήτου πλατφόρμας, την OpenCL C (βασιζόμενη στην C99). 3 / 20 Πυργιώτης Θεμιστοκλής Προγραμματισμός GPU σε περιβάλλον OpenCL

Τι είναι το OpenCL; Τι είναι; Βασικοί όροι Αρχιτεκτονική Πλεονέκτηματα: Ανάπτυξη κώδικα ανεξαρτήτου πλατφόρμας χωρίς την ανάγκη χρησιμοποίησης γλώσσας συγκεκριμένου κατασκευαστή ή αντιστοίχισης με άλλες βιβλιοθήκες (OpenGL, DirectX). Μπορεί να δια λειτουργεί και να συνεργάζεται με το OpenGL, το OpenGL ES και άλλα γραφικά API. 3 / 20 Πυργιώτης Θεμιστοκλής Προγραμματισμός GPU σε περιβάλλον OpenCL

Βασικοί όροι του OpenCL Τι είναι; Βασικοί όροι Αρχιτεκτονική Εφαρμογή OpenCL Host Device Platform (host, devices) Device (GPU, multi-core CPU) Kernel ( kernel) Context (Διαχειρίζεται αντικείμενα του OpenCL) Command Queue Memory Objects (buffer, image) Program 4 / 20 Πυργιώτης Θεμιστοκλής Προγραμματισμός GPU σε περιβάλλον OpenCL

Αρχιτεκτονική του OpenCL Τι είναι; Βασικοί όροι Αρχιτεκτονική Παρουσιάζεται μέσα από μία ιεραρχία μοντέλων. Platform Model Execution Model Memory Model Programming Model 5 / 20 Πυργιώτης Θεμιστοκλής Προγραμματισμός GPU σε περιβάλλον OpenCL

Αρχιτεκτονική του OpenCL Platform Model Τι είναι; Βασικοί όροι Αρχιτεκτονική Το μοντέλο πλατφόρμας παρέχει μία υψηλού επιπέδου αφαίρεση για την OpenCL αρχιτεκτονική. 6 / 20 Πυργιώτης Θεμιστοκλής Προγραμματισμός GPU σε περιβάλλον OpenCL

Αρχιτεκτονική του OpenCL Execution Model Τι είναι; Βασικοί όροι Αρχιτεκτονική Η βασική αρμοδιότητα που έχει το μοντέλο εκτέλεσης, είναι ο καθορισμός εκτέλεσης των kernel στις συσκευές. work-item index space (NDRange), N = 1, 2, 3 work-group global ID work-group ID local ID 7 / 20 Πυργιώτης Θεμιστοκλής Προγραμματισμός GPU σε περιβάλλον OpenCL

Αρχιτεκτονική του OpenCL Execution Model Τι είναι; Βασικοί όροι Αρχιτεκτονική 7 / 20 Πυργιώτης Θεμιστοκλής Προγραμματισμός GPU σε περιβάλλον OpenCL

Αρχιτεκτονική του OpenCL Memory Model Τι είναι; Βασικοί όροι Αρχιτεκτονική 8 / 20 Πυργιώτης Θεμιστοκλής Προγραμματισμός GPU σε περιβάλλον OpenCL

Αρχιτεκτονική του OpenCL Programming Model Τι είναι; Βασικοί όροι Αρχιτεκτονική Data parallel Άμεσα, όπου ο προγραμματιστής καθορίζει τον συνολικό αριθμό work-item που θα εκτελεστούν παράλληλα και το πώς αυτά θα καταταχθούν στις διάφορες ομάδες εργασιών (work-group). Εμμεσα, όπου ο προγραμματιστής καθορίζει μόνο τον συνολικό αριθμό των work-item που θα εκτελεστούν παράλληλα και το OpenCL από μόνο του αναλαμβάνει την κατάταξη αυτών στα διάφορα work-group. Task parallel 9 / 20 Πυργιώτης Θεμιστοκλής Προγραμματισμός GPU σε περιβάλλον OpenCL

Περιεχόμενα OpenCL 1 OpenCL Τι είναι; Βασικοί όροι Αρχιτεκτονική 2 3 10 / 20 Πυργιώτης Θεμιστοκλής Προγραμματισμός GPU σε περιβάλλον OpenCL

Πρόγραμμα εκτέλεσης στο host (C) Memory allocation for matrices A, B Initialize matrices A,B Memory allocation for matrix C Multiplication with OpenCL Print out result & free up memory 1. Initialize OpenCL Platform Devices Context command queue memory buffer 2. Load and build OpenCL kernel program object load and build kernel object 3. Launch OpenCL kernel set kernel arguments set NDRange execute the kernel 4. Get results back cl mem d A = clcreatebuffer( context, CL_MEM_READ_WRITE CL_MEM_COPY_HOST_PTR, mem_size_a, h_a, &errcode ); size_t localworksize [2], globalworksize [2]; localworksize [0] = 16; localworksize [1] = 16; globalworksize [0] = 1024; globalworksize [1] = 1024; clenqueuendrangekernel ( CQ, clkernel, 2, NULL, globalworksize, localworksize, 0, NULL, NULL ) ; clenqueuereadbuffer ( CQ, d_c, CL_TRUE, 0, mem_size_c, h_c, 0, NULL, NULL ) ; 11 / 20 Πυργιώτης Θεμιστοκλής Προγραμματισμός GPU σε περιβάλλον OpenCL

Πρόγραμμα εκτέλεσης στη συσκευή (OpenCL C, *.cl) kernel void matrixmul( global float* C, global float* A, global float* B, int wa, int wb){ // 2D Thread ID int tx = get_global_id(0); int ty = get_global_id(1); // value stores the element that is computed by the thread float value = 0; for (int k = 0; k < wa; ++k) { float elementa = A[ty * wa + k]; float elementb = B[k * wb + tx]; value += elementa * elementb; } } // Write the matrix to device memory each thread writes one element C[ty * wa + tx] = value; 11 / 20 Πυργιώτης Θεμιστοκλής Προγραμματισμός GPU σε περιβάλλον OpenCL

Χρήση global μνήμης Χρήση local μνήμης 11 / 20 Πυργιώτης Θεμιστοκλής Προγραμματισμός GPU σε περιβάλλον OpenCL

Αποτελέσματα πειραμάτων Running time (sec) 1000 100 10 1 0.1 0.01 0.001 0.0001 CPU GPU (OpenCL) GPU (Optimize OpenCL) 512, επιτάχυνση 52X (OpenCL, CPU) 1024, επιτάχυνση 219X (OpenCL, CPU) 2048, επιτάχυνση 4X (OpenCL opt, OpenCL) 1024, επιτάχυνση 881X (OpenCL opt, CPU) 1e-05 16 32 64 128 256 512 1024 2048 4096 Matrix dimensions 11 / 20 Πυργιώτης Θεμιστοκλής Προγραμματισμός GPU σε περιβάλλον OpenCL

Πίνακα με διάνυσμα Αποτελέσματα πειραμάτος 0.1 CPU GPU (OpenCL) Running time (sec) 0.01 0.001 0.0001 1e-05 32 64 128 256 512 1024 2048 4096 8192 Dimensions of matrix and vector. 12 / 20 Πυργιώτης Θεμιστοκλής Προγραμματισμός GPU σε περιβάλλον OpenCL

Πίνακα με διάνυσμα Αποτελέσματα πειραμάτος 1024, επιτάχυνση 1.7X (OpenCL, CPU) 2048, επιτάχυνση 2.2X (OpenCL, CPU) Στη περίπτωση πολλαπλασιασμού πινάκων ο αριθμός των πράξεων είναι ανάλογος του n 3, ενώ στο τρέχον παράδειγμα είναι ανάλογος του n 2. 12 / 20 Πυργιώτης Θεμιστοκλής Προγραμματισμός GPU σε περιβάλλον OpenCL

Άνω τριγωνικού ζωνικού πίνακα με διάνυσμα Αποτελέσματα πειραμάτος CPU GPU (OpenCL) 0.1 Running time (sec) 0.01 0.001 0.0001 Το m, δηλαδή οι διαγώνιοι των πινάκων είναι n 2. 1e-05 32 64 128 256 512 1024 2048 4096 8192 16384 Dimensions of matrix and vector (upper banded triangular matrix). 13 / 20 Πυργιώτης Θεμιστοκλής Προγραμματισμός GPU σε περιβάλλον OpenCL

Άνω τριγωνικού ζωνικού πίνακα Toeplitz με διάνυσμα Ενας πίνακας Toeplitz έχει σε κάθε διαγώνιο σταθερά δεδομένα. 14 / 20 Πυργιώτης Θεμιστοκλής Προγραμματισμός GPU σε περιβάλλον OpenCL

Άνω τριγωνικού ζωνικού πίνακα Toeplitz με διάνυσμα 100 CPU GPU (OpenCL) 100 Speed Up (CPU time / GPU time) 10 10 1 Running time (sec) 0.1 0.01 Speed Up 1 0.001 0.1 0.0001 1e-05 32 64 128 256 512 1024 2048 4096 131072 65536 32768 16384 8192 262144 0.01 32 64 128 256 512 1024 2048 4096 131072 65536 32768 16384 8192 262144 Dimensions of matrix and vector (Toeplitz upper banded triangular matrix). Dimensions of matrix and vector (Toeplitz upper banded triangular matrix). Λόγω της σύμπτυξης του πίνακα Α, τα πειράματα μπορούν να εκτελεστούν για πολύ μεγαλύτερες διαστάσεις. Η επιτάχυνση πλησιάζει στην τιμή 100. Λιγότερες προσπελάσεις στη μνήμη για τον πίνακα A, m στοιχεία και όχι m n. 14 / 20 Πυργιώτης Θεμιστοκλής Προγραμματισμός GPU σε περιβάλλον OpenCL

Προσεγγιστική Αναζήτηση προτύπου a σε κείμενο x Στο πίνακα a( διάνυσμα a) κρατείται το πρότυπο (μεγέθους 4, 8, 16, 32, 64, 128). Στο πολλαπλασιαζόμενο διάνυσμα x κρατείται το κείμενο πάνω στο οποίο θα γίνει η αναζήτηση. Η πράξη του πολλαπλασιασμού γίνεται έλεγχος ισότητας. Τύπος δεδομένων από float σε char. Απαιτούνται n m νήματα. Χρησιμοποιήθηκαν δύο αλφάβητα μεγέθους 4 και 100. 15 / 20 Πυργιώτης Θεμιστοκλής Προγραμματισμός GPU σε περιβάλλον OpenCL

Προσεγγιστική Αναζήτηση προτύπου a σε κείμενο x 4 Alphabet 4 Alphabet 100 30 Alphabet 4 Alphabet 100 3.5 Same performance 25 3 Speed Up (dimension 1024) 2.5 2 1.5 1 Speed Up (dimension 32768) 20 15 10 0.5 5 4 8 16 32 64 128 4 8 16 32 64 128 Size of pattern Size of pattern 30 Alphabet 4 Alphabet 100 30 Alphabet 4 Alphabet 100 25 25 Speed Up (dimension 1048576) 20 15 10 Speed Up (dimension 67108864) 20 15 10 5 5 4 8 16 32 64 128 4 8 16 32 64 128 Size of pattern Size of pattern 15 / 20 Πυργιώτης Θεμιστοκλής Προγραμματισμός GPU σε περιβάλλον OpenCL

Προσεγγιστική Αναζήτηση προτύπου a σε κείμενο x 35 pattern = 4 pattern = 8 30 pattern = 4 pattern = 8 30 pattern = 16 pattern = 32 pattern = 64 pattern = 128 25 pattern = 16 pattern = 32 pattern = 64 pattern = 128 Speed Up (Alphabet 4) 25 20 15 10 Speed Up (Alphabet 100) 20 15 10 5 5 65536 32768 16384 8192 4096 2048 1024 524288 262144 131072 1.67772e+07 8.38861e+06 4.1943e+06 2.09715e+06 1.04858e+06 1024 6.71089e+07 3.35544e+07 131072 65536 32768 16384 8192 4096 2048 6.71089e+07 3.35544e+07 1.67772e+07 8.38861e+06 4.1943e+06 2.09715e+06 1.04858e+06 524288 262144 Text size Text size Απεικονίζει την επιτάχυνση με βάση τα διαφορετικά μεγέθη κειμένου. Για μικρά μεγέθη κειμένου (έως 65536), παρατηρείται ότι όσο πιο μεγάλο είναι το μέγεθος του προτύπου τόσο καλύτερη επιτάχυνση έχει. Οσο το μέγεθος του κειμένου αυξάνεται παρατηρείται μία εξισορρόπηση στην επιτάχυνση η οποία παραμένει σχετικά σταθερή (περιορισμένους πόρους της κάρτας). 15 / 20 Πυργιώτης Θεμιστοκλής Προγραμματισμός GPU σε περιβάλλον OpenCL

Αναζήτηση προτύπου a σε κείμενο x 0.14 Alphabet 4 Alphabet 100 3 Alphabet 4 Alphabet 100 2.5 0.12 Speed Up (dimension 1024) 0.1 0.08 0.06 Speed Up (dimension 32768) 2 1.5 1 0.04 0.5 0.02 4 8 16 32 64 128 4 8 16 32 64 128 Size of pattern Size of patterns 10 9 Alphabet 4 Alphabet 100 30 Alphabet 4 Alphabet 100 8 25 Speed Up (dimension 1048576) 7 6 5 4 3 Speed Up (dimension 67108864) 20 15 10 2 1 5 4 8 16 32 64 128 4 8 16 32 64 128 Size of patterns Size of patterns 16 / 20 Πυργιώτης Θεμιστοκλής Προγραμματισμός GPU σε περιβάλλον OpenCL

Αναζήτηση πολλαπλών προτύπων Βασικό πρόβλημα στην επιστήμη της Πληροφορικής (ανάκτηση πληροφοριών, σε συστήματα ανίχνευσης επιθέσεων και στη βίο-πληροφορική). Ορισμός Δοθέντος ενός κειμένου εισόδου T = t 1 t 2...t n, αποτελούμενο από ένα αλφάβητο Σ, και ενός πεπερασμένου συνόλου από r λέξεις-κλειδιά P = {p 1, p 2,..., p r }, όπου όλες έχουν σταθερό μήκος m χαρακτήρων και το συνολικό μέγεθος συμβολίζεται με P, η πολλαπλή αναζήτηση προτύπων είναι ο εντοπισμός όλων των τοποθεσιών i στο T, όπου υπάρχει εύρεση οποιασδήποτε λέξης. 17 / 20 Πυργιώτης Θεμιστοκλής Προγραμματισμός GPU σε περιβάλλον OpenCL

Αναζήτηση πολλαπλών προτύπων Αλγόριθμος (Wu-Manber) Αλγόριθμος κατηγορίας κατακερματισμού (hashing). 1994 Sun Wu και τον Udi Manber και χρησιμοποιήθηκε στο εργαλείο glimpse. Σήμερα παραλλαγή του χρησιμοποιείται στο εργαλείο Snort (συστήματα ανίχνευσης επιθέσεων). Βασίζεται στον αλγόριθμο αναζήτησης προτύπου Boyer-Moore, παρακάμπτει μεγάλη ποσότητα του κειμένου κατά την αναζήτηση με μετατοπίσεις. Εξετάζει το κείμενο ανά μπλοκ χαρακτήρων μεγέθους Β (log Σ 2P), γίνεται αύξηση του μεγέθους του αλφαβήτου. 18 / 20 Πυργιώτης Θεμιστοκλής Προγραμματισμός GPU σε περιβάλλον OpenCL

Αναζήτηση πολλαπλών προτύπων Αλγόριθμος (Wu-Manber) 1 - Φάση προ-επεξεργασίας Προ-επεξεργασία των προτύπων και δημιουργούνται 3 πίνακες. SHIFT: παρόμοιος με την τεχνική bad-character-shift του Boyer-Moore. (μέγιστη τιμή μετατόπισης m B + 1) HASH: περιέχει κατακερματισμένες τιμές του επιθέματος Β χαρακτήρων των προτύπων. PREFIX: περιέχει κατακερματισμένες τιμές του προθέματος Β χαρακτήρων των προτύπων. 2 -Φάση αναζήτησης Σαρώνεται το κείμενο έως ο δέικτης T p < T end. Υπολογίζεται η τιμή κατακερματισμού B χαρακτήρων από το επίθεμα του παραθύρου (hash(sbc)). Αν το SHIFT[hash(sbc)] == 0, γίνεται μετατόπιση κατά T p = T p + SHIFT [hash(sbc)]. Αν το SHIFT [hash(sbc)] > 0, υπάρχει πιθανό ταίριασμα και ελέγχεται η τιμή HASH(hash(sbc)) (δείκτη στην αρχή λίστας πρότυπων) και η PREFIX[(hash(sbc)]. 18 / 20 Πυργιώτης Θεμιστοκλής Προγραμματισμός GPU σε περιβάλλον OpenCL

Αναζήτηση πολλαπλών προτύπων Αλγόριθμος (Wu-Manber) α) Σειριακή υλοποίηση Start text (n) Stop β) Παράλληλη υλοποίηση Start(0) Start(1) Start(2) Start(n) Stop(0) Stop(1) Stop(2) Stop(n) text (n)... 18 / 20 Πυργιώτης Θεμιστοκλής Προγραμματισμός GPU σε περιβάλλον OpenCL

Αναζήτηση πολλαπλών προτύπων Αλγόριθμος (Wu-Manber) Μεθοδολογία πειραμάτων Τα σύνολα δεδομένων που χρησιμοποιήθηκαν είναι: Φυσική γλώσσα αγγλικού αλφαβήτου (n = 2.473.400 και του αλφαβήτου είναι 94). Το γονιδίωμα του βακτήριου Εσερίχια κόλι (Escherichia coli) (n = 4.638.690 χαρακτήρες και αλφάβητο 4). FASTA Nucleidic Acid (FNA) του γονιδιώματος A-thaliana (n = 118.100.062 χαρακτήρες και αλφάβητο 4) Το FASTA Amino Acid (FAA) του γονιδιώματος A-thaliana (n = 11.273.437 χαρακτήρες και αλφάβητο 20) Τη βάση δεδομένων της ακολουθίας αμινοξέων SWISS-PROT (n = 182.116.687 και αλφάβητο 20) 18 / 20 Πυργιώτης Θεμιστοκλής Προγραμματισμός GPU σε περιβάλλον OpenCL

Αναζήτηση πολλαπλών προτύπων Αλγόριθμος (Wu-Manber) Αποτελέσματα πειράματος 0.03 CPU OpenCL 0.03 CPU OpenCL 0.025 0.025 0.02 Running time (sec) 0.02 0.015 Running time (sec) 0.015 0.01 0.01 0.005 0.005 100 1000 10000 0 100 1000 10000 Number of patterns (m = 8) Number of patterns (m = 32) 1 Speed Up (CPU time / GPU time) 0.55 Speed Up (CPU time / GPU time) 0.9 0.5 0.45 0.8 0.4 0.7 0.35 Speed Up 0.6 0.5 Speed Up 0.3 0.25 0.2 0.4 0.15 0.3 0.1 0.2 100 1000 10000 0.05 100 1000 10000 Number of patterns (m = 8) Number of patterns (m = 32) Χρόνος εκτέλεσης και επιτάχυνση για κείμενο φυσικής γλώσσας (CIA World Factbook). 18 / 20 Πυργιώτης Θεμιστοκλής Προγραμματισμός GPU σε περιβάλλον OpenCL

Αναζήτηση πολλαπλών προτύπων Αλγόριθμος (Wu-Manber) Αποτελέσματα πειράματος 4 CPU OpenCL 3.5 4.5 CPU OpenCL 4 Running time (sec) 3 2.5 2 1.5 1 Running time (sec) 3.5 3 2.5 2 1.5 1 0.5 0.5 0 100 1000 10000 0 100 1000 10000 Number of patterns (m = 8) Number of patterns (m = 32) 9 Speed Up (CPU time / GPU time) 8 Speed Up (CPU time / GPU time) 8.5 7.5 8 7 7.5 6.5 Speed Up 7 6.5 6 5.5 5 Speed Up 6 5.5 5 4.5 4.5 4 4 100 1000 10000 3.5 100 1000 10000 Number of patterns (m = 8) Number of patterns (m = 32) Χρόνος εκτέλεσης και επιτάχυνση για κείμενο γονιδιώματος Εσερίχια κόλι (E.Coli). 18 / 20 Πυργιώτης Θεμιστοκλής Προγραμματισμός GPU σε περιβάλλον OpenCL

Αναζήτηση πολλαπλών προτύπων Αλγόριθμος (Wu-Manber) Αποτελέσματα πειράματος 0.45 CPU OpenCL 0.4 0.3 CPU OpenCL 0.25 0.35 0.3 0.2 Running time (sec) 0.25 0.2 0.15 Running time (sec) 0.15 0.1 0.1 0.05 0.05 0 100 1000 10000 0 100 1000 10000 Number of patterns (m = 8) Number of patterns (m = 32) 4 Speed Up (CPU time / GPU time) 4 Speed Up (CPU time / GPU time) 3.5 3.5 3 3 2.5 Speed Up 2.5 Speed Up 2 2 1.5 1 1.5 0.5 1 100 1000 10000 0 100 1000 10000 Number of patterns (m = 8) Number of patterns (m = 32) Χρόνος εκτέλεσης και επιτάχυνση για κείμενο FASTA Amino Acid (FAA). 18 / 20 Πυργιώτης Θεμιστοκλής Προγραμματισμός GPU σε περιβάλλον OpenCL

Αναζήτηση πολλαπλών προτύπων Αλγόριθμος (Wu-Manber) Αποτελέσματα πειράματος Η επιτάχυνση κυμαίνεται από 0,06 για φυσική γλώσσα και αριθμό προτύπων 100, έως 8,62 για κείμενο αλφαβήτου μεγέθους τέσσερα και αριθμό προτύπων 10.000. Παράγοντας αλφαβήτου Σ. Οσο μεγαλύτερο είναι το αλφάβητο τόσο η επιτάχυνση μειώνεται. Παράγοντας μεγέθους κειμένου n. Οσο αυξάνεται το μέγεθος τόσο αυξάνεται και η επιτάχυνση (0,98 3,07 για τετραπλάσιο μέγεθος φυσικού κειμένου). Παράγοντας πλήθους προτύπων r. Οσο αυξάνεται το πλήθος τόσο αυξάνεται και η επιτάχυνση. Παράγοντας μεγέθους προτύπων m. Δεν παίζει τόσο σημαντικό ρόλο στην επιτάχυνση κυρίως για μικρά αλφάβητα. 18 / 20 Πυργιώτης Θεμιστοκλής Προγραμματισμός GPU σε περιβάλλον OpenCL

Περιεχόμενα 1 OpenCL Τι είναι; Βασικοί όροι Αρχιτεκτονική 2 3 19 / 20 Πυργιώτης Θεμιστοκλής Προγραμματισμός GPU σε περιβάλλον OpenCL

Η παραλληλοποίηση είναι επιθυμητή μέθοδος όσο το πλήθος των πράξεων και των δεδομένων αυξάνεται. Τόσο τα πειράματα εκτέλεσης του αλγορίθμου Wu-Manber, όσο και τα παραδείγματα του πολλαπλασιασμού πίνακα με διάνυσμα εκτελέστηκαν με χρήση της global μνήμης του OpenCL και επιδέχονται περαιτέρω βελτίωση, με τη χρήση κατώτερων επιπέδων μνήμης. 20 / 20 Πυργιώτης Θεμιστοκλής Προγραμματισμός GPU σε περιβάλλον OpenCL