yacts-0.4.7

Nov 29, 2024 20:16

Выпустил новую версию J&+ YACTS. Bitrot is real!

Вообще я хотел перегенерировать с чуть лучшим разрешением одно из этих видео для новой презентации. За каждым из них стоит примерно терабайтный файл траекторий движения магнитных моментов каждой ячейки, который, я, понятное дело, сразу (лет 10 назад) удалил. Хватился компилировать YACTS на Ubuntu 24 ( Read more... )

progr

Leave a comment

dr_klm November 29 2024, 22:46:37 UTC

Я подобную систему (управляемую по данным с ленивыми вычислениями) как раз около 30-ти лет назад писал. Но тогда графика была в новинку (а я мало ещё понимал в колбасных обрезках) и поэтому GUI был сразу вшит в язык - коробочки, стрелочки, которые мышкой нужно было соединять. Сейчас многие такие вещи делают, даже в Blender что-то подобное есть (хотя как там управление передаётся я не вникал). В принципе J&+ - это ровно то-же самое, но без GUI.

По поводу статьи - сразу понял, что там будут цепные дроби. Ещё до того как посмотрел. И ленивый, и управляемый по данным и обычный императивный подходы к организации вычислений Тьюринг-эквивалентны и позволяют вычислить одни и те же вещи. Эффективность программ, управляемых по данным (которая от ленивых вычислений отличается лишь тем - мы толкаем данные снизу по графу или тянем за "выходы" программы сверху), может быть выше за счёт более удобной параллелизации. Но и это ещё нужно эффективно реализовать... В YACTS я вычисления не параллелизовал, но J сам по себе векторный язык (хотя его тоже до конца для векторного процессора никто не реализовал*).

К.Л.М.

* У меня есть недоделанный компилятор J в шейдеры CUDA - он может глаголы (процентов 70), но прилагательные и союзы (в терминологии J) я так и не сделал.

Reply

thesz November 29 2024, 23:36:06 UTC
Ленивые вычисления не будут вычислять что-то более одного раза, в отличии от "управления по данным" (потоку данных). Их особо отделяют в области анализа программ и зависимостей внутри них.

Reply

dr_klm November 29 2024, 23:42:06 UTC

Можно и отделить, конечно. А можно и объединить. Да, если данные приходят - вычисляется весь граф, который от них зависит, даже то, что вроде бы и не нужно. С другой стороны, то, что не нужно - можно и не вычислять, если у вычислений нет побочных эффектов.

К.Л.М.

Reply


Leave a comment

Up