Конференція Високопродуктивні обчислення, Київ, 13-15 жовтня 2014

NVidia запускає відкритий компілятор CUDA

15 грудня 2011

Компанія NVidia збирається зробити компілятор CUDA та його внутрішній формат публічними, відкриваючи технологію для різних мов програмування та процесорних архітектур. Оголошення було зроблено на початку конференції з GPU технологій у Пекіні, Китай.

Компанія стверджує, що буде використовувати інфраструктуру компілятора LLVM у якості основи для загальнодоступного вихідного коду CUDA. LLVM – це проект з відкритим кодом, який обслуговує бібліотеки вихідних кодів різних засобів розробки. Новий, заснований на LLVM вихідний код CUDA, буде доступним в найближчому випуску CUDA Toolkit версії 4.1, який також буде запущений цього тижня.

Варіант CUDA з відкритим кодом, однак, не означає, що NVidia буде включати довільні зміни та покращення свого компілятора від сторонніх розробників. Компанія продовжує наполягати на збереженні повного контролю над вихідним кодом. Розробники програм зможуть змінювати стандартний компілятор та середовище виконання для власних потреб, але ці зміни, швидше за все, не потраплять до бази вихідних кодів NVidia.

Основна ідея – це дозволити розробникам програмних засобів портувати CUDA компілятор до інших середовищ, у яких NVidia та її комерційні партнери не зацікавлені. У випадку мов програмування, вже існують компілятори для C, C++ та Fortran, три основні мови у високопродуктивних обчисленнях. Але оскільки ринок обчислень на GPU стрімко зростає, NVidia передбачає потребу в інших мовах, як Python або Java, а також більш специфічних мов.

NVidia Cuda LLVM компілятор

У CUDA є великий простір для портування на інші платформи. Перший кандидат – це платформа AMD GPU. Не дивлячись на те, що CUDA – найбільш розповсюджене програмне середовище для GPU обчислень, воно працює лише на GPU картах компанії NVidia (та на x86 багатоядерних вузлах за допомогою реалізації PGI компілятора). Ймовірно, з’явиться багато користувачів програм на CUDA, які або зацікавлені у запуску їх на AMD GPU або принаймні будуть зацікавлені у цьому в найближчій перспективі.

Компанія AMD досі просуває технологію OpenCL для GPU. Архітектура OpenCL не залежить від виробника, є відкритим стандартом для паралельних обчислень, який також підтримується компанією NVidia, але до цих пір не зуміла залучити багато розробників. Пропонуючи відкриту версії CUDA, компанія NVidia, ймовірно, намагається вивести з вжитку OpenCL, припускаючи, що постачальник компілятора або дослідницька група створює компілятор для AMD GPU на CUDA.

Оскільки CUDA є паралельною технологією загального вжитку, будь-яка багатоядерна архітектура вже є потенційною метою для впровадження CUDA. Іншими архітектурами для впровадження CUDA можуть стати Intel MIC, Power CPU, багатоядерні ARM чіпи (особливо майбутні 64-бітні реалізації), та навіть більш екзотичні речі, як новий цифровий процесор для обробки звуку компанії Texas Instruments.

Академічне середовище, можливо, швидше за інших оцінить переваги відкритого CUDA компілятора. Наприклад, в Georgia Tech, проект Ocelot спрямований на впровадження CUDA C на різних процесорах, включаючи AMD GPU та x86 CPU. Судхар Яламанчілі, керівник проекту, заявляє, що відкриття CUDA технології – це значний крок.

Навіть продавці компіляторів, які вже мають спеціальні домовленості з NVidia, зможуть відчути переваги нової стратегії з відкритим кодом. В прес-релізі керівник PGI Дуг Майлс каже: «Ця ініціатива дозволяє PGI створювати природні компілятори CUDA Fortran та OpenACC, які отримують таку саму низькорівневу оптимізацію, як і NVidia CUDA C/C++. Це спростить відлагоджування програм існуючими засобами, та дозволить PGI сфокусуватись на високорівневій оптимізації та властивостях мови».

NVidia не завжди отримуватиме пряму користь від свого нового відкритого проекту. Безумовно, якщо яка-небудь група розробників портує CUDA на AMD чіпи, це може позначитись на продажах карт Tesla. Але для більшого блага від залучення клієнтів до власного обладнання, NVidia розуміє, що закрита платформа перешкоджає великій кількості користувачів, які не хочуть бути прив’язаними до єдиної апаратної платформи або покладатись на одного виробника.

Як і нещодавнє схвалення компанією NVidia директив OpenACC, відкриття CUDA, схоже, є частиною стратегії, спрямованої на розширення привабливості обчислень на GPU, а не просто на продуктах NVidia. Схоже, що виробник графічних карт прикинув, що збільшення пирога може дати більше у довгостроковій перспективі, ніж намагання збільшити свою частку в ньому.

Теги: AMD, ARM, CUDA, GPU, NVidia, OpenCL, паралельні обчислення, процесори, технології

Матеріали за темою:

Коментарі