
Переосмислення паралельного програмування
Традиційно паралельні програми організовуються навколо процесів, які обмінюються даними та спілкуються між собою. Однак, Франкен пропонує іншу модель, де самі дані відіграють активнішу роль в обчисленнях. У цьому підході елементи даних не просто зберігають значення, а й можуть виконувати невеликі фрагменти обчислень під час виконання програми. Ці елементи даних взаємодіють локально один з одним, що зменшує потребу в явній координації багатьох окремих процесів.
Ця ідея формує основу так званої дата-автономної парадигми. Вона пропонує інший спосіб мислення про паралельні програми: не як про багато процесів, що працюють разом, а як про багато взаємодіючих фрагментів даних. На основі цієї ідеї Франкен розробив AuDaLa (Autonomous Data Language) – мову програмування, призначену для вивчення та формалізації цього підходу.
Для демонстрації роботи програм у цьому середовищі дисертація включає стандартні приклади з інформатики, такі як сортування, префіксні суми та досяжність графів. Ці приклади є широко використовуваними будівельними блоками в багатьох реальних застосунках, особливо в аналізі даних та обробці графів. Мова також є достатньо виразною для представлення загальних обчислень, що було продемонстровано реалізацією машини Тюрінга в системі.
Адаптація до сучасного обладнання
Ключовим аспектом дослідження Франкена є те, що AuDaLa розроблена таким чином, щоб залишатися незалежною від конкретного обладнання, але при цьому бути придатною для використання на реальних машинах. Його дисертація пояснює, як програми в AuDaLa можуть виконуватися на системах зі спільною пам'яттю та адаптуватися як для центральних процесорів (CPU), так і для графічних процесорів (GPU), які широко використовуються для високопродуктивних обчислень. Це робить підхід Франкена актуальним для практичних обчислювальних середовищ, де важливі як продуктивність, так і портативність.
Для підвищення ефективності Франкен також представив альтернативну версію системи з "слабкою пам'яттю" (weak-memory). Це дозволяє більшу гнучкість у порядку виконання операцій внутрішньо, що може покращити продуктивність на реальному обладнанні. Важливо, що ця оптимізована версія поводиться так само, як і оригінальна модель для добре структурованих програм, тобто покращення продуктивності не змінюють того, що програма фактично робить.
Забезпечення коректності паралельних програм
Окрім розробки мови програмування, дослідження Франкена також вирішує ключову практичну проблему: як забезпечити коректність паралельних програм. Оскільки багато речей відбувається одночасно, паралельні програми можуть поводитися по-різному залежно від часу виконання. Це означає, що самого лише тестування часто недостатньо для гарантування коректності.
Для вирішення цієї проблеми він розробив AuDaLogic – формальну систему для доведення коректності програм AuDaLa. Система базується на сепараційній логіці (separation logic) – математичному методі для міркувань про програми, які спільно використовують та модифікують дані. Вона дозволяє розробникам будувати покрокові доведення коректності. Робота Франкена демонструє цей метод, використовуючи приклади програм, включаючи алгоритми сортування, показуючи, як коректність може бути доведена на практиці.
Що це означає для розробників
Розробники отримують новий інструмент для створення паралельних програм, який спрощує розуміння та верифікацію. Підхід пропонує мову AuDaLa та систему AuDaLogic для доведення коректності, що може підвищити надійність складних паралельних систем.
Ключові факти
-
Франкен пропонує дата-орієнтований підхід до паралельного програмування, де дані активно виконують обчислення.
-
Цей підхід, названий дата-автономною парадигмою, зменшує потребу в явній координації процесів.
-
Розроблено мову програмування AuDaLa для формалізації та вивчення цієї парадигми.
-
AuDaLa може виконуватися на системах зі спільною пам'яттю, CPU та GPU, підтримуючи високопродуктивні обчислення.
-
Введено альтернативну "weak-memory" версію AuDaLa для підвищення продуктивності без зміни поведінки програми.
Джерела
Попередні статті

EDB представляє CloudNativePG 1.29 та рішення для захисту даних на KubeCon Europe
EnterpriseDB (EDB) оголосила про випуск спільнотою CloudNativePG 1.29, провідного оператора Postgres з відкритим вихідним кодом для Kubernetes, а також представила ексклюзивне корпоративне рішення для захисту даних. Ці інновації спрямовані на зменшення залежності від гіперскейлерів та підтримку суверенного ШІ.

FAU запускає новий центр для омікс-технологій та інженерії даних
Університет Флориди Атлантик (FAU) відкрив Центр омікс-технологій та інженерії даних (CODE) – міждисциплінарний дослідницький хаб, що поєднує інженерію, комп'ютерні науки та медицину для вирішення складних завдань у біології та охороні здоров'я.

xAI викрили у використанні даних Claude для навчання Grok після відкликання доступу
Стартап xAI Ілона Маска був викритий у використанні вихідних даних моделі Claude від Anthropic для навчання своєї моделі Grok. Це відбувалося навіть після того, як Anthropic відкликала офіційний доступ xAI до API.
Наступні статті

Штучний інтелект у розробці програмного забезпечення: інструменти, ризики та еволюція ролей
Штучний інтелект трансформує розробку програмного забезпечення, підвищуючи ефективність та змінюючи ролі розробників. Матеріал розглядає, як ШІ допомагає у повсякденній роботі, які інструменти доступні, які ризики існують та які навички стають ключовими для фахівців.

New Relic представила AI Coding Observability для розробки з ШІ
New Relic анонсувала відкриту функцію AI Coding Observability, яка надає інженерним командам видимість у використання помічників для кодування з ШІ. Вона покликана усунути прогалини в моніторингу, що виникають при широкому впровадженні таких інструментів, відстежуючи витрати, продуктивність, безпеку та відповідність.

Створення першого ETL-конвеєра з нуля: досвід новачка з GitHub API
Автор-початківець ділиться досвідом створення свого першого ETL-конвеєра, використовуючи Python та GitHub API. Він детально описує кроки з вилучення, трансформації та завантаження даних, демонструючи практичне застосування основ інженерії даних.