Александр, добрый день!
Очень интересная идея, спасибо!
Мне она не приходила в голову.
Аркадий

чт, 4 февр. 2021 г. в 11:23, Александр Коновалов a.v.konovalov87_AT_mail.ru
<refal@botik.ru>:

> Доброе утро, Аркадий!
>
> *«Есть и другой вариант — использовать модель стека в форме слова
> в некотором алфавите. Мощность алфавита должна быть не меньше наибольшего
> числа „параллельных“ (рекурсивных) вызовов в рамках одной функции.
> Слово-стек легко кодировать целым числом, только длина его в битах будет
> расти линейно с глубиной рекурсии. Как-то так.»*
>
> В прошлом году Станислав Санталов (мой ученик) читал в ИПМ доклад
> о попытке распараллелить вычисления в Рефале. В обсуждаемой реализации
> распараллеливанию подвергались только чистые функции.
>
> Вы тогда заметили, что на практике широко распространены «почти чистые»
> функции — функции, которые могли быть чистыми, но используют единственную
> недетерминированную функцию — генератор «свежих» имён/индексов. Например,
> если программа является компилятором и ей нужно порождать в ассемблерном
> листинге имена для меток.
>
> Такую программу можно сделать чистой следующим образом. Функции, которым
> нужны свежие индексы, должны будут принимать число, номер очередного
> индекса, и возвращать число. Но тогда между по смыслу независимыми вызовами
> возникнет зависимость по данным и эти вызовы перестанут быть
> «параллельными».
>
> Я об этом думал, и тоже пришёл к предложенной Вами схеме: индексом сделать
> строку в некотором алфавите и наращивать её разными символами при передаче
> в разные дочерние вызовы:
>
> F {
>   …
>   … (e.ID) … = … <G … (e.ID 'A') …> … <H … (e.ID 'B') …> …;
>   …
> }
>
> Но, при дополнительном анализе кода и изменении схемы наращения строки
> можно добиться и логарифмической длины во многих практических случаях. Для
> этого нужно один из вызовов функции в правой части назначить «циклическим».
> При передаче строки-идентификатора в циклический вызов, к строке
> приписывается число, либо, если число уже приписано, оно инкрементируется.
> В остальные вызовы к строке будет приписываться символ-нечисло. Очевидно,
> циклическим вызовом должен быть рекурсивный вызов (если таковых в правой
> части несколько — то только один из них):
>
> *F* {
>   …
>   … (e.ID) … = … <G … (e.ID 'A') …> … *<F* … (<Inc e.ID>) …*>* …;
>   …
> }
>
> Inc {
>   e.Str '0' = e.Str '1';
>  e.Str '1' = <Inc e.Str> '0';
>   e.Str = e.Str '0';
> }
>
> Для нескольких рекурсивных вызовов в правой части циклический можно
> назначить либо произвольно, либо с учётом алгоритма — тот, по которому
> рекурсия ожидается глубже. В качестве эвристики можно различать хвостовые
> и нехвостовые вызовы.
>
>
>
> *«…вся память „ассоциативная“, или „content-addressаble“.»*
>
> Вопрос только в производительности этой памяти и скорости обмена с ней.
>
>
>
> С уважением,
> Александр Коновалов
>
>
>
>
>
> *From:* Arkady Klimov arkady.klimov_AT_gmail.com [mailto:refal@botik.ru]
> *Sent:* Tuesday, February 2, 2021 8:32 PM
> *To:* refal@botik.ru
> *Subject:* Re: Конференция МЭС - 2020
>
>
>
> Александр, добрый день!
>
> Тоже извиняюсь за задержку, затерялось Ваше письмо.
>
> Вопрос хороший, я постоянно (время от времени) подумываю насчет реализации
> Рефала в этой модели. Да, видимо тут нельзя предложить какой-то общей
> интерпретации индексов. В обычных задачах у нас индексы имеют
> содержательный прикладной смысл. Здесь же, видимо, это будет, как в обычных
> реализациях рефала и функц. языков, некий "свежий указатель", разница лишь
> в том, что тут не нужна какая-то память, с ним связанная, просто в силу
> того, что вся память "ассоциативная", или "content-addressаble". И если в
> обычных системах для порождения "свежего указателя" мы используем реальный
> пул свободных ячеек с адресами, то здесь нужны только сами "адреса". А для
> их порождения (и освобождения) можно вполне использовать такой же реальный
> пул ячеек (звеньев), размер которых должен быть достаточен лишь для
> размещения ссылок для организации списка свободных ячеек (адресов).
>
> Есть и другой вариант - использовать модель стека в форме слова в
> некотором алфавите. Мощность алфавита должна быть не меньше наибольшего
> числа "параллельных" (рекурсивных) вызовов в рамках одной функции.
> Слово-стек легко кодировать целым числом, только длина его в битах будет
> расти линейно с глубиной рекурсии. Как-то так.
>
> Аркадий
>
>
>
> чт, 21 янв. 2021 г. в 12:25, Александр Коновалов
> a.v.konovalov87_AT_mail.ru <refal@botik.ru>:
>
> Добрый день, Аркадий!
>
> Прошу прощения за поздний ответ, только сейчас я наконец добрался до этого
> письма.
>
> Вы написали в рассылку refal@botik.ru, и поэтому у меня к Вам вопрос:
> а можно ли применить этот подход к распараллеливанию программ на Рефале?
> Или он применим только к массивам однородных вычислений вроде
> рассмотренного перемножения матриц?
>
> Если брать Рефал Плюс, то у конкретизаций есть несколько входных
> и выходных аргументов, которые тоже можно представлять токенами в этой
> модели. Но проблема будет в том, что множество конкретизаций во время
> выполнения не известно заранее и назначить им индекс статически невозможно.
> Или всё-таки можно что-то придумать?
>
>
>
> С уважением,
> Александр Коновалов
>
>
>
> *From:* Arkady Klimov arkady.klimov_AT_gmail.com [mailto:refal@botik.ru]
> *Sent:* Wednesday, September 16, 2020 11:44 PM
> *To:* refal@botik.ru; metacomputation...@googlegroups.com
> *Subject:* Re: Конференция МЭС - 2020
>
>
>
> Сообщаю интересующимся, что наконец залил презентацию своего доклада (в
> формате pptx).
>
> Надеюсь теперь будет понятнее, а то статья получилась сумбурная и потому
> трудно читаемая.
>
> Ее, как и статью, можно найти среди докладов (скажем, по фамилии автора) в
> разделе *Доклады* сайта конференции
>
> http://www.mes-conference.ru/
>
> Туда же можно попасть по прямой ссылке
>
> http://www.mes-conference.ru/index.php?page=reportsV3
>
>
>
> Название моего доклада:
>
> *Средства верификации распределения вычислений в потоковой архитектуре
> ППВС «Буран»*
> <http://www.mes-conference.ru/data/year2020/pdf/D107.pdf?t=1600275592>
>
> Хотя вопрос довольно частный, но кажется получилось интересно. И относится
> он скорее не к конкретной архитектуре, а к ее абстрактной модели вычислений.
>
> Надеюсь скоро озвучку выставить. (В принципе текст озвучки уже введен в
> виде комментариев к слайдам).
>
> С уважением,
>
> Аркадий
>
>
>
> PS. Просматривать вроде можно и без регистрации (кроме обсуждения), а для
> комментирования (обсуждения) надо зарегистрироваться.
>
> Буду рад комментариям.
>
>
>
>
>
> чт, 16 июл. 2020 г. в 10:14, Arkady Klimov <arkady.kli...@gmail.com>:
>
> Отвечая на просьбу организаторов конференции, сообщаю коллегам о том, что
> проводится в режиме заочного интернет-форума
>
>
>
> Всероссийская с международным участием научно-техническая конференция
> *"Проблемы разработки перспективных микро- и наноэлектронных систем"*
>
> *МЭС-2020*
>
>
>
> Зарегистрировавшись на портале
>
> http://www.mes-conference.ru/  ,
>
> можно читать выставленные статьи (в разделе *Доклады*) и участвовать в их
> обсуждении.
>
> Спасибо за участие!
>
> --
>
> _______________
>
>
>
>
>
  • Кон... Arkady Klimov arkady . klimov_AT_gmail . com
    • ... Arkady Klimov arkady . klimov_AT_gmail . com
      • ... Александр Коновалов a . v . konovalov87_AT_mail . ru
        • ... Arkady Klimov arkady . klimov_AT_gmail . com
          • ... Александр Коновалов a . v . konovalov87_AT_mail . ru
            • ... Arkady Klimov arkady . klimov_AT_gmail . com
              • ... Александр Коновалов a . v . konovalov87_AT_mail . ru

Ответить