Подано специфікацію OpenCL 3.0

Концерн Khronos, який відповідає за розробку специфікацій сімейства OpenGL, Vulkan та OpenCL, оголосив про завершення розробки специфікацій OpenCL 3.0, що визначають API та розширення мови С для організації крос-платформних паралельних обчислень з використанням багатоядерних CPU, GPU, FPGA, DSP та інших спеціалізованих чіпів, від тих, що застосовуються в суперкомп'ютерах та хмарних серверах, до чіпів, які можна зустріти в мобільних пристроях та вбудовуваній техніці. Стандарт OpenCL повністю відкритий та не вимагає ліцензійних відрахувань. У роботі над стандартом взяли участь такі компанії, як IBM, NVIDIA, Intel, AMD, Apple, ARM, Electronic Arts, Qualcomm, Texas Instruments та Toshiba.

На поточній стадії специфікації надано статус попередньої (provisional), що передбачає можливість доопрацювання на основі відгуків, надісланих через GitHub. Після того, як зауваження будуть враховані, специфікація отримає статус фінальної та буде опубліковано підсумковий тестовий набір для перевірки сумісності наявних реалізацій.

Подано специфікацію OpenCL 3.0

Найбільш помітні Особливості 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, яке також застосовується в API Vulkan. Підтримка специфікації SPIR-V 1.3 внесена до основного складу OpenCL 3.0 як опціональна можливість. Через використання проміжного подання СПІР-В для обчислювальних ядер додано підтримку операцій із підгрупами.
    Подано специфікацію OpenCL 3.0

  • Додано підтримку розширення для виконання асинхронних DMA-операцій (Asynchronous DMA), що підтримується в DSP-подібних чіпах з прямим доступом до пам'яті. Asynchronous DMA дає можливість використовувати транзакції DMA для передачі даних між глобальною та локальною пам'яттю в асинхронному режимі, паралельно з обчисленнями або іншими операціями передачі даних.
  • Специфікацію розширень паралельного програмування для мови Сі оновлено до версії 3.0, а розвиток мовних розширень OpenCL для C++ припинено на користь проекту C++ for OpenCL. C++ for OpenCL є компілятором, заснованим на Clang/LLVM і транслюючий ядра на C++ та OpenCL C у проміжне уявлення SPIR-V або низькорівневий машинний код. Через трансляцію в SPIR-V також організовано складання С++ додатків, що використовують бібліотеку шаблонів SYCL, що спрощує створення паралельних додатків.

    Подано специфікацію OpenCL 3.0

  • Для трансляції OpenCL через API Vulkan запропоновано компілятор clspv, що перетворює ядра OpenCL на представлення Vulkan SPIR-V, і прошарок clvk для забезпечення роботи API OpenCL поверх Vulkan.

    Подано специфікацію OpenCL 3.0

Джерело: opennet.ru

Додати коментар або відгук