Παρουσιάστηκε η προδιαγραφή OpenCL 3.0

Η ανησυχία Khronos, υπεύθυνη για την ανάπτυξη των προδιαγραφών της οικογένειας OpenGL, Vulkan και OpenCL, ανακοινώθηκε σχετικά με την ολοκλήρωση της ανάπτυξης των προδιαγραφών OpenCL 3.0 που ορίζουν API και επεκτάσεις της γλώσσας C για την οργάνωση παράλληλων υπολογιστών πολλαπλών πλατφορμών με χρήση πολυπύρηνων CPU, GPU, FPGA, DSP και άλλα εξειδικευμένα τσιπ, από αυτά που χρησιμοποιούνται σε υπερυπολογιστές και διακομιστές cloud σε τσιπ που μπορούν να βρεθούν σε κινητές συσκευές και ενσωματωμένη τεχνολογία. Το πρότυπο OpenCL είναι εντελώς ανοιχτό και δεν απαιτεί τέλη άδειας χρήσης. Εταιρείες όπως IBM, NVIDIA, Intel, AMD, Apple, ARM, Electronic Arts, Qualcomm, Texas Instruments και Toshiba συμμετείχαν στις εργασίες για το πρότυπο.

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

Παρουσιάστηκε η προδιαγραφή OpenCL 3.0

Το πιο αξιοσημείωτο χαρακτηριστικά OpenCL 3.0:

  • Το OpenCL 3.0 API καλύπτει πλέον όλες τις εκδόσεις του OpenCL (1.2, 2.x), χωρίς να παρέχει ξεχωριστές προδιαγραφές για κάθε έκδοση. Το OpenCL 3.0 παρέχει τη δυνατότητα επέκτασης της βασικής λειτουργικότητας μέσω της ενσωμάτωσης πρόσθετων προδιαγραφών που θα επιστρωθούν με τη μορφή επιλογών χωρίς να εμποδίζεται η μονολιθική φύση του OpenCL 1.2/2.X.
  • Μόνο η λειτουργικότητα που συμμορφώνεται με το OpenCL 1.2 δηλώνεται υποχρεωτική και όλες οι δυνατότητες που προτείνονται στις προδιαγραφές OpenCL 2.x ταξινομούνται ως προαιρετικές. Αυτή η προσέγγιση θα διευκολύνει τη δημιουργία προσαρμοσμένων υλοποιήσεων που είναι συμβατές με το OpenCL 3.0 και θα επεκτείνει το εύρος των συσκευών στις οποίες μπορεί να χρησιμοποιηθεί το OpenCL 3.0. Για παράδειγμα, οι κατασκευαστές μπορούν να εφαρμόσουν υποστήριξη OpenCL 3.0 χωρίς να εφαρμόσουν συγκεκριμένες λειτουργίες OpenCL 2.x. Για πρόσβαση σε προαιρετικές λειτουργίες γλώσσας, το OpenCL 3.0 έχει προσθέσει ένα σύστημα ερωτημάτων δοκιμής που σας επιτρέπει να αξιολογείτε την υποστήριξη μεμονωμένων στοιχείων API, καθώς και ειδικών μακροεντολών.
  • Η ενοποίηση με τις προηγούμενες προδιαγραφές διευκολύνει τη μετεγκατάσταση εφαρμογών στο OpenCL 3.0. Οι εφαρμογές OpenCL 1.2 θα μπορούν να εκτελούνται σε συσκευές που υποστηρίζουν το OpenCL 3.0 χωρίς τροποποίηση. Οι εφαρμογές OpenCL 2.x δεν θα απαιτούν επίσης αλλαγές κώδικα, εφόσον το περιβάλλον OpenCL 3.0 παρέχει την απαιτούμενη λειτουργικότητα (για να διασφαλιστεί η μελλοντική φορητότητα, οι εφαρμογές OpenCL 2.x συνιστώνται να προσθέτουν ερωτήματα δοκιμής για να αξιολογήσουν την υποστήριξη για τις λειτουργίες OpenCL 2.x χρησιμοποιείται). Οι προγραμματιστές προγραμμάτων οδήγησης με υλοποιήσεις OpenCL μπορούν εύκολα να αναβαθμίσουν τα προϊόντα τους σε OpenCL 3.0, προσθέτοντας μόνο επεξεργασία ερωτημάτων για ορισμένες κλήσεις API και σταδιακά να αυξάνουν τη λειτουργικότητα με την πάροδο του χρόνου.
  • Η προδιαγραφή OpenCL 3.0 είναι ευθυγραμμισμένη με το περιβάλλον, τις επεκτάσεις και τις προδιαγραφές της γενικής ενδιάμεσης αναπαράστασης SPIR-V, η οποία χρησιμοποιείται επίσης από το Vulkan API. Η υποστήριξη για την προδιαγραφή SPIR-V 1.3 περιλαμβάνεται στον πυρήνα OpenCL 3.0 ως προαιρετικό χαρακτηριστικό. Μέσω της χρήσης μιας ενδιάμεσης αναπαράστασης SPIR-V Έχει προστεθεί υποστήριξη για λειτουργίες με υποομάδες για πυρήνες υπολογιστών.
    Παρουσιάστηκε η προδιαγραφή OpenCL 3.0

  • Προστέθηκε υποστήριξη για μια επέκταση για την εκτέλεση ασύγχρονων λειτουργιών DMA (Asynchronous DMA), που υποστηρίζεται σε τσιπ τύπου DSP με άμεση πρόσβαση στη μνήμη. Το ασύγχρονο DMA καθιστά δυνατή τη χρήση συναλλαγών DMA για τη μεταφορά δεδομένων μεταξύ καθολικής και τοπικής μνήμης ασύγχρονα, παράλληλα με υπολογισμούς ή άλλες λειτουργίες μεταφοράς δεδομένων.
  • Η προδιαγραφή C Parallel Programming Extensions έχει ενημερωθεί σε έκδοση 3.0, και η ανάπτυξη επεκτάσεων γλώσσας OpenCL για C++ διακόπηκε υπέρ του έργου «C++ for OpenCL». Το C++ για το OpenCL είναι ένας μεταγλωττιστής που βασίζεται στο Clang/LLVM και ραδιοφωνικός Πυρήνες C++ και OpenCL C σε ενδιάμεση αναπαράσταση SPIR-V ή σε κώδικα μηχανής χαμηλού επιπέδου. Μέσω της μετάδοσης, το SPIR-V οργανώνει επίσης τη συναρμολόγηση εφαρμογών C++ χρησιμοποιώντας τη βιβλιοθήκη προτύπων SYCL, η οποία απλοποιεί τη δημιουργία παράλληλων εφαρμογών.

    Παρουσιάστηκε η προδιαγραφή OpenCL 3.0

  • Έχει προταθεί ένας μεταγλωττιστής για μετάδοση του OpenCL μέσω του Vulkan API clspv, το οποίο μετατρέπει πυρήνες OpenCL σε αναπαράσταση Vulkan SPIR-V και επίπεδο clvk για να ενεργοποιήσετε το OpenCL API να λειτουργεί πάνω από το Vulkan.

    Παρουσιάστηκε η προδιαγραφή OpenCL 3.0

Πηγή: opennet.ru

Προσθέστε ένα σχόλιο