yacts-0.4.7

Nov 29, 2024 20:16

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

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

progr

Leave a comment

Comments 6

lj_frank_bot November 29 2024, 17:17:44 UTC
Hello!
LiveJournal categorization system detected that your entry belongs to the category: IT.
If you think that this choice was wrong please reply this comment. Your feedback will help us improve system.
Frank,
LJ Team

Reply

dr_klm November 29 2024, 17:24:32 UTC

Всё в мире -- информация. А значит любая технология - информационная.

К.Л.М.

Reply


thesz November 29 2024, 22:22:20 UTC
"J+ is a functional non-imperative simulation language with lazy evaluation, based on J programming language, a dialect of APL."

"YACTS uses J+ to interpret scripts, defining systems of ordinary differential equations, which it solves."

Я тут вспомнил про 27-тилетней давности статью: https://core.ac.uk/download/pdf/82546938.pdf

Там ленивые вычисления довольно интересно закручивают так, что взаимно-рекурсивные определения через интегралы становятся весьма просто и эффективно вычислимыми.

Я испытывал её на обучении (небольших) нейросетей через определение лагранжиана функции потерь, работает, как обещали. ;)

Уж не знаю, поможет ли это вам, или помешает, но не мог не поделиться. ;)

Reply

dr_klm November 29 2024, 22:46:37 UTC

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

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