דאגת חרונוס, שאחראית על פיתוח מפרטים עבור משפחת OpenGL, Vulkan ו- OpenCL, הודיעה על השלמת פיתוח מפרטי OpenCL 3.0 המגדירים APIs ותוספות שפה C לארגון מחשוב מקבילי מרובה צורות באמצעות מעבדים מרובי ליבות, GPUs, FPGA, DSP ושבבים מיוחדים אחרים.
אלה הם משמש ממחשבי-על ושרתי ענן, ועד שבבים שניתן למצוא במכשירים ניידים ובטכנולוגיה משובצת. תקן OpenCL פתוח לחלוטין. חברות כמו IBM, NVIDIA, Intel, AMD, Apple, ARM, Electronic Arts, Qualcomm, Texas Instruments ו- Toshiba השתתפו בעבודה על התקן.
בשלב הנוכחי של המפרט, הסטטוס הוא זמני, מה שמרמז על אפשרות של חידוד על סמך ההערות שנשלחו דרך GitHub. לאחר שההערות נלקחות בחשבון, המפרט יקבל את הסטטוס הסופי וחבילת הבדיקה הסופית תפורסם על מנת לאמת את תאימות המימוש הקיים.
תכונות OpenCL 3.0
API של OpenCL 3.0 מכסה כעת את כל גרסאות 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 עבור ליבות חישוב, נוספה תמיכה בפעולות עם תת קבוצות.
נוסף תמיכה בהרחבה לביצוע פעולות DMA אסינכרוניות, תואם לשבבים דמויי DSP עם גישה ישירה לזיכרון. DMA אסינכרוני מאפשר לך להשתמש בעסקאות DMA להעברת נתונים בין זיכרון גלובלי ומקומי במצב אסינכרוני, במקביל לחישובים שבוצעו או לפעולות אחרות להעברת נתונים.
המפרט של הרחבות תכנות מקבילות עבור C עודכן לגרסה 3.0 ופיתוח הרחבות השפה OpenCL עבור C ++ הופסק לטובת פרויקט "C ++ עבור OpenCL".
C ++ עבור OpenCL הוא מהדר מבוסס Clang / LLVM שמתרגם את גרעיני C ++ ו- OpenCL C לייצוג SPIR-V ביניים או קוד מכונה ברמה נמוכה. באמצעות התרגום ל- SPIR-V, אוסף יישומי C ++ מאורגן גם באמצעות ספריית התבניות SYCL, מה שמפשט את היצירה של יישומים מקבילים.
לתרגום OpenCL דרך Vulkan API מוצע מהדר clspv, הממיר את גרעיני OpenCL לתצוגת Vulkan SPIR-V ולשכבת clvk כדי לאפשר ל- API של OpenCL לעבוד על גבי Vulkan.
מקור: https://www.khronos.org