Тож у мене нарешті з'явилася можливість поглянути на Mojo/Modular. Це не те, що я думав, це заміна OpenCL + реалізації ядер, а не AI-компілятор. Хоча це значно спрощує швидке отримання повної продуктивності, я думаю, що повнота Тюрінга є помилкою для цього матеріалу. Ми нарешті отримуємо шанс жити в чистому світі потоку даних, чому б нам ним не скористатися? Такі мови не відокремлюють визначення обчислень від планування обчислень. Почитайте доктора філософії Halide, я одержимий цією ідеєю. У міру того, як нейронні мережі стають все кращими і кращими в програмуванні, ми хочемо отримати найкоротший спосіб виразити *точно* те, що робить програма, не турбуючись про деталі того, як це зробити. Залиште це машинам. Зверніть увагу на параметр "maybe_epilogue_func". Що робити, якщо ви хочете зберігати дві функції епілогу в різних буферах або з'єднувати скорочення? Цикл знаходиться всередині цієї функції conv, тому вже занадто пізно змінювати. Для контрасту прочитайте tinygrad conv. "За десятиліття створення компіляторів я ніколи не бачив, щоб міф про "достатньо розумного компілятора" насправді спрацьовував!" – @clattner_llvm Ми б'ємося об заклад, що з сучасними методами пошуку (читай: ШІ) це нарешті зміниться. Хоча це абсолютно справедлива ставка на іншу сторону, і якщо це не станеться в найближчі 10 років, Mojo, ймовірно, є правильною точкою в просторі компромісу.