🚀💳 Trustee Plus - більше ніж криптогаманець з європейською платіжною карткою. Спробуй 👉
Наталя ХандусенкоГаряченьке
14 березня 2025, 11:22
2025-03-14
Дослідник із МТІ створили нову мову програмування Exo 2 для високопродуктивних обчислень із набагато меншим кодом
Дослідники з Лабораторії комп’ютерних наук та штучного інтелекту Массачусетського технологічного інституту створили нову мову програмування під назвою Exo 2.
Дослідники з Лабораторії комп’ютерних наук та штучного інтелекту Массачусетського технологічного інституту створили нову мову програмування під назвою Exo 2.
Exo 2 належить до нової категорії мов програмування, яку професор МТІ Джонатан Раган-Келлі називає «мовами, що плануються користувачем» (user-schedulable languages, USLs). Замість того, щоб сподіватися, що непрозорий компілятор автоматично згенерує найшвидший код, USL ставлять програмістів за кермо, дозволяючи їм писати «розклади», які явно контролюють те, як компілятор генерує код. Це дозволяє інженерам продуктивності перетворювати прості програми, які визначають, що вони хочуть обчислити, на складні програми, які роблять те ж саме, що і початкова специфікація, але набагато, набагато швидше, пише Tech Xplore.
Одним з обмежень існуючих USL (таких як оригінальна Exo) є їх відносно фіксований набір операцій планування, що ускладнює повторне використання коду планування у різних «ядрах» (окремих компонентах високопродуктивної бібліотеки). Exo 2 навпаки дозволяє користувачам визначати нові операції планування поза компілятором, що полегшує створення багаторазових бібліотек планування.
Джерело: Tech Xplore
За словами дослідників, Exo 2 може скоротити загальний код розкладу в 100 разів і забезпечити продуктивність, що конкурує з найсучаснішими реалізаціями на багатьох різних платформах, включаючи базові підпрограми лінійної алгебри (BLAS), які забезпечують роботу багатьох програм машинного навчання. Це робить його привабливим варіантом для інженерів HPC, які зосереджені на оптимізації ядер для різних операцій, типів даних і цільових архітектур.
«Це висхідний підхід до автоматизації, а не пошук за допомогою ML/AI у високопродуктивному коді, — каже дослідник Юка Ікараші. «Це означає, що інженери продуктивності та розробники апаратного забезпечення можуть написати власну бібліотеку планування, яка є набором методів оптимізації для їхнього обладнання для досягнення максимальної продуктивності».
Однією з головних переваг Exo 2 є те, що вона зменшує кількість зусиль, необхідних для кодування в будь-який момент часу, завдяки повторному використанню коду планування для різних програм і апаратних цілей.
Дослідники реалізували бібліотеку планування з приблизно 2000 рядків коду в Exo 2, яка інкапсулює багаторазові оптимізації, специфічні для лінійної алгебри та конкретних цілей (апаратні прискорювачі AVX512, AVX2, Neon та Gemmini). Ця бібліотека об’єднує зусилля з планування у понад 80 високопродуктивних ядрах, кожне з яких містить до десятка рядків коду, забезпечуючи продуктивність, порівнянну з MKL, OpenBLAS, BLIS та Halide, або навіть кращу за них.
Exo 2 включає новий механізм під назвою Cursors, який забезпечує те, що дослідники називають «стабільним посиланням» для вказівки на об’єктний код протягом усього процесу планування. Ікараші каже, що стабільне посилання є важливим для користувачів для інкапсуляції розкладів у бібліотечній функції, оскільки воно робить код планування незалежним від перетворень об’єктного коду.
«Ми вважаємо, що USL повинні бути розроблені так, щоб їх можна було розширювати, а не мати фіксований набір операцій, — каже Ікараші. «Таким чином, мова може розвиватися і підтримувати великі проєкти завдяки впровадженню бібліотек, які відповідають різноманітним вимогам оптимізації та сферам застосування».
Конструкція Exo 2 дає змогу інженерам продуктивності зосередитися на високорівневих стратегіях оптимізації, гарантуючи при цьому, що базовий об'єктний код залишається функціонально еквівалентним завдяки використанню безпечних примітивів. У майбутньому команда сподівається розширити підтримку Exo 2 для різних типів апаратних прискорювачів, таких як графічні процесори. Кілька поточних проєктів спрямовані на покращення самого аналізу компілятора з точки зору коректності, часу компіляції та виразності.