Навіщо у 2021 році вчити Fortran
Привіт, Я Саша Каленюк, працюю в компанії Materialise. Разом з командою алгоритмістів у Києві створюємо алгоритми для роботи із 3D-зображеннями, геометричними моделями, а також для підготовки моделей до друку тощо.
Сьогодні хочу розказати про явище, яке обговорюють здебільшого у вузьких колах. Можливо, ви про це чули, але не сприймали серйозно. Про відродження, або, як зараз модно казати, ренесанс Fortran.
Про це буде цікаво почитати тим, хто вважає, що High Performance Computing — це про статичний поліморфізм. Тим, хто думає, що С++ конкурує лише з C# і Java. Тим, хто впевнений, що історія починається з Altair 8800, а все що було раніше — перший дубль, незграбний і нецікавий нікому, крім купки істориків з археологами.
Це буде точно корисно почитати тому, хто навіть не уявляє собі, що одна і та ж історія може починатися двічі.
До ренесансу
Дуже-дуже давно, ще у 2017 році, NASA оголосило програмістський конкурс. Умови були прості: програміст подає заявку, NASA дає доступ до свого коду, фахівець його оптимізує, а хто зробив це найкраще — той і переможець. Просто? Еге ж.
Але є кілька нюансів. По-перше, оскільки агентство все ж американське і фінансується з американських податків, доступ до коду воно може надавати тільки американським громадянам. По-друге, код, який їм хотілося б оптимізувати — це чисельний розв’язок рівнянь Нав’є — Стокса. Це та математика, що стоїть за симуляцією повітряних потоків, така собі аеродинамічна труба у суперкомп’ютері. По-третє, код цей написаний на Fortran.
Коли про цей конкурс дізналися на Reddit, багато хто подумав, що це жарт. Хто ж пише на Fortran у 2017 році? Та ще й усілякі чисельні методи. Ну, в самій NASA може хтось і пише, але на волі? У відкритому плаванні? Навіщо?
Вважали, що конкурс приречений, що в усіх Штатах не знайдеться і кількох учасників, аби змагання набуло сенсу. І справді його зрештою скасували. Але не через брак учасників, а навпаки — через те, що кандидатів подалося забагато. Майже дві тисячі програмістів надіслали свої заявки, і агентство здалося. В NASA просто не встигли б надати всім охочим доступ згідно зі своєю стандартною процедурою. Бюрократія і в Штатах бюрократія.
Суперкомп’ютер Pleiades, Marco Librero, NASA Ames Research Center, Public domain, via Wikimedia Commons. Джерело
Але це ще не все. Насправді це ще навіть не початок.
Ренесанс
У
То що ж коїться? Як так сталося, що Fortran, про який вже всі встигли забути, раптом прокинувся, розпихав багатоперспективну молодь, обігнав Rust, D, Julia, Dart і Haskell та заскочив у двадцятку найпопулярніших мов за версією TIOBE?
А сталося те, що поки всі інші мови застрягли у дев’яностих роках і наввипередки розв’язують проблеми дев’яностих років, Fortran ніколи не вибирався з шістдесятих. Він не був популярним в епоху десктопу, і всю ту цукрову вату, які сучасні програмісти вважають за необхідне: святу трійцю наслідування-інкапсуляції-поліморфізм, патерн-матчинг, варіантні типи, контрваріантні конструктори і, прости, Господи, варіадичні шаблони — він просто пропустив повз.
Але чому дев’яності — такий небезпечний час, щоб у ньому залишатися? Та тому, що домінантною платформою тоі був звичайний одноядерний персональний комп’ютер. Один процесор, один тип пам’яті, один модем, якщо пощастить, навіть монітор — і той один.
У шістдесятих все було не так. Усі варті уваги обчислення виконувалися на суперкомп’ютерах — багатоплатних, багатопроцесорних, які ще й часто працювали в кластері. Ну не було тоді таких потужних процесорів, які б самотужки розв’язували рівняння Нав’є — Стокса. Доводилось викручуватись.
Тепер такі процесори є, але незаперечна річ: два процесори працюватимуть швидше за один. Понад те, тисячі спеціалізованих процесорів на одній платі працюватимуть ще швидше. Власне, сучасні обчислювальні системи з таких плат і будують.
Технологічний ландшафт
GPGPU, або графічні обчислювальні пристрої загального призначення, — це концепт, з яким NVIDIA вийшла на ринок 2006 року. За два роки NVIDIA з’їла свого єдиного на той час конкурента з позаграфічної сфери Ageia. Ageia спеціалізувалася на PPU — фізичних обчислювальних пристроях, тобто спеціалізованих процесорах для фізичної симуляції, за що і поплатилася.
Акселератор на базі PPU Ageia. Mohawkade, Public domain, via Wikimedia Commons. Джерело
У NVIDIA чудово розуміють, що майбутнє не за універсальними однопроцесорними системами. Закон Мура напоровся на фізичні закони: довжину хвилі, розсіювання тепла, розмір атома. Не можна просто брати й додавати в один процесор все більше й більше транзисторів. А от процесорів на плату — можна. Хоча для цього їх доведеться дещо спростити, а значить спеціалізувати.
Отже, сьогодні найбільше біткоїнів майниться не на процесорах для персоналок, а на графічних картках. Хоча які вони вже графічні? GP переміг GPU. І чи могло бути інакше?
Усі ці роки NVIDIA розвивала не графічні картки. А спеціалізовані пристрої для гетерогенного програмування. Але продавала картки. Бо без підживлення з власного головного бізнесу їх, як і Ageia свого часу, теж хтось би давно викупив і знищив. І ми всі з вами здогадуємось, хто саме.
У 2016 році Google, який так нічого вартого і не викупив, випустив свою власну спеціалізовану багатопроцесорну плату TPU — тензорний обчислювальний пристрій. Дуже спеціалізований. Дуже швидкий. Все, що він вміє робити, — це тензорні обчислення. Простіше кажучи, множити матриці, щоб вираховувати вагу для нейросіток. Це такий високоспеціалізований акселератор для штучного інтелекту.
Google TPU версії 3.0. Zinskauf, CC BY-SA 4.0, via Wikimedia Commons. Джерело
NVIDIA вирішала не відставати й 2020 року вивела на ринок своє нове дітище DPU — обчислювальний пристрій для обробки даних. Теж швидкий, теж спеціалізований. Матриці рахувати можна і на GPGPU, а от байти ганяти — ні. Для цього є спеціальний продукт. Навіть у Google такого немає.
Але гонитва технологій — це одна з тих ігор, де завжди переможе той, хто перший принесе штопор. У 2021 році маловідома компанія Lightmatter з Массачусетсу вже випускає на ринок фотонний акселератор для того ж самого штучного інтелекту.
Фотонний комп’ютер не упирається в закон Мура, він живе за власним законом — фотонним. Хіба що впирається в неспроможність робити бранчинг. Обчислювати може, а от запускати програми в класичному сенсі з «іфами» і «форами» уже ні. Що було б гігантською проблемою для декстопу, але не для гетерогенної системи. Не може в програму? Гаразд. Програмою буде займатися транзисторний комп’ютер, а фотонний буде тупо множити матриці. Тупо, але в сто разів швидше, наприклад, за TPU від Google або GPGPU від NVIDIA.
Що далі
Отже, повернемось до Fortran. Поки інші мови виплачували архітектурні борги дев’яностих, Fortran лишився тим, чим він завжди був — простим компілятором для швидких обчислень. Паралельних, конкурентних і гетерогенних. Простота означає, що для кожної нової архітектури, чи то GPU, TPU, чи то фотонний акселератор, компілятор може бути портований одним з перших. «Паралельних» означає, що він готовий для масивного паралелізму спеціалізованих комп’ютерів, «конкурентних» — що він готовий перескочити з кластерів
Fortran не прив’язаний до жодних сучасних архітектурних рішень. Він проспав унікодні війни, домінування Intel з його 2n суперскалярами. Якщо якийсь спеціалізований процесор має
До речі, Fortran — одна з трьох мов, яку CUDA (GPGPU фреймворк від NVIDIA) підтримує «з коробки». Решта — це С і С++. Якщо це не визнання, то що тоді?
Отже, популярність С і С++ невпевнено спадає, а Fortran навпаки — зростає несподіваними темпами. Чи може він у недалекому майбутньому витиснути з гетерогенного, а значить і мейнстримного програмування всіх конкурентів? Чи може знову, як колись, стати мовою № 1, беззаперечним лідером у науковому та інженерному програмуванні?
Може. Якщо його не зупинить Python. Але це герой зовсім іншого епосу.
Найкращі коментарі пропустити