Выпустил новую версию
J&+ YACTS. Bitrot is real!
Вообще я хотел перегенерировать с чуть лучшим разрешением одно из
этих видео для новой презентации. За каждым из них стоит примерно терабайтный файл траекторий движения магнитных моментов каждой ячейки, который, я, понятное дело, сразу (лет 10 назад) удалил. Хватился компилировать YACTS на Ubuntu 24
(
Read more... )
Я подобную систему (управляемую по данным с ленивыми вычислениями) как раз около 30-ти лет назад писал. Но тогда графика была в новинку (а я мало ещё понимал в колбасных обрезках) и поэтому GUI был сразу вшит в язык - коробочки, стрелочки, которые мышкой нужно было соединять. Сейчас многие такие вещи делают, даже в Blender что-то подобное есть (хотя как там управление передаётся я не вникал). В принципе J&+ - это ровно то-же самое, но без GUI.
По поводу статьи - сразу понял, что там будут цепные дроби. Ещё до того как посмотрел. И ленивый, и управляемый по данным и обычный императивный подходы к организации вычислений Тьюринг-эквивалентны и позволяют вычислить одни и те же вещи. Эффективность программ, управляемых по данным (которая от ленивых вычислений отличается лишь тем - мы толкаем данные снизу по графу или тянем за "выходы" программы сверху), может быть выше за счёт более удобной параллелизации. Но и это ещё нужно эффективно реализовать... В YACTS я вычисления не параллелизовал, но J сам по себе векторный язык (хотя его тоже до конца для векторного процессора никто не реализовал*).
К.Л.М.
* У меня есть недоделанный компилятор J в шейдеры CUDA - он может глаголы (процентов 70), но прилагательные и союзы (в терминологии J) я так и не сделал.
Reply
Reply
Можно и отделить, конечно. А можно и объединить. Да, если данные приходят - вычисляется весь граф, который от них зависит, даже то, что вроде бы и не нужно. С другой стороны, то, что не нужно - можно и не вычислять, если у вычислений нет побочных эффектов.
К.Л.М.
Reply
Leave a comment