Здравствуйте, Аркадий! Я читал несколько статей по AnyDSL и некоторых научных программах на его основе.
Про остальные слышу в первый раз. Игорь On Sun, Apr 9, 2023 at 11:13 PM Arkady Klimov arkady.klimov_AT_gmail.com < refal@botik.ru> wrote: > Я подумал, что ЧатГПТ будет правильным использовать как источник > информации по каким-то профессиональным темам. Решил начать с динамических > частичных вычислений, которые меня реально интересуют. Результаты меня > потрясли. (К сожалению, форматирование выдачи несколько кривое для вставки > в письмо. Поэтому я пропустил его через простой текст) > > ------------------------------------------------------------------------------------- > Do you know what is partial evaluation? > > Yes, I do. Partial evaluation is a technique used in computer science and > programming that involves specializing a program with respect to some of > its arguments or inputs, in order to produce a new program that is > optimized for a specific use case. > > The resulting program is typically faster and more efficient than the > original program, because it eliminates unnecessary computations by > partially evaluating expressions that depend on the specialized inputs. > > Partial evaluation is often used in the context of functional programming, > where functions are first-class citizens that can be passed as arguments to > other functions. It can also be used in optimizing compilers to generate > code that is specific to a particular architecture or target platform. > > > > > ------------------------------------------------------------------------------------- > arkady.kli...@gmail.com > Ok. I wonder whether partial evaluation can be used by application program > for specializing its parts dynamically with respect of some of user input > > Yes, partial evaluation can be used dynamically in an application program > to specialize its parts with respect to some user input. This is known as > dynamic partial evaluation or runtime specialization. > > In this approach, the program takes some input from the user and uses it > to specialize parts of the code that are relevant to the user's input. For > example, a program that performs mathematical calculations might take a > user input specifying the type of operation to perform (addition, > subtraction, multiplication, etc.) and use that input to generate > specialized code that is optimized for that specific operation. > > Dynamic partial evaluation can help improve the performance of an > application by generating specialized code on the fly, based on the input > it receives. However, it can also be complex to implement and can require > careful management of the specialized code generated at runtime. > > > > > ----------------------------------------------------------------------------------------------------- > arkady.kli...@gmail.com > Do there exist any tools that help to produce application programs with > the capability of dynamic partial evaluation? > > Yes, there are tools and frameworks that can help in producing application > programs with the capability of dynamic partial evaluation. > > One such tool is the Partial Evaluation Framework (PEF), which is a > library for C and C++ that allows for dynamic partial evaluation of > programs at runtime. The PEF library provides a set of functions for > performing partial evaluation on program fragments, as well as a runtime > system for managing the generated code. > > Another tool is the Specializer, which is a tool for automatically > generating specialized code from high-level descriptions of computations. > The Specializer can be used to generate code for a wide range of > programming languages and platforms, and supports dynamic partial > evaluation through a set of APIs. > > There are also specialized programming languages, such as RPython and > MetaOCaml, that support partial evaluation natively and can be used to > build application programs with dynamic partial evaluation capabilities. > > Overall, while the use of dynamic partial evaluation in application > programs requires careful consideration and management, there are a variety > of tools and frameworks available to help in implementing this approach. > > > > > ------------------------------------------------------------------------------------------------------------- > arkady.kli...@gmail.com > It is very interesting. Could you please give some references to the > systems or frameworks you mentioned. > > Sure, here are some references to the systems and frameworks that I > mentioned: > > Partial Evaluation Framework (PEF): > Website: https://github.com/sfu-arch/pef > Paper: "PEF: A Framework for Dynamic Partial Evaluation of C and C++ > Programs" by John T. O'Donnell and Arrvindh Shriraman ( > https://people.scs.carleton.ca/~arun/papers/pef.pdf) > The Specializer: > Website: http://specializer.info/ > Paper: "Automatically Generating Specialized Programs for High-Performance > Computing" by Keshav Pingali, Gianfranco Bilardi, and Bevin Brett ( > https://dl.acm.org/doi/10.1145/267660.267670) > RPython: > Website: https://rpython.readthedocs.io/en/latest/ > Paper: "The PyPy Approach to Virtual Machine Construction" by Armin Rigo > and Samuele Pedroni (https://dl.acm.org/doi/10.1145/1035292.1035295) > MetaOCaml: > Website: https://okmij.org/ftp/ML/MetaOCaml.html > Paper: "MetaOCaml: Staged metaprogramming in a typed functional language" > by Jacques Garrigue ( > https://www.sciencedirect.com/science/article/pii/S1571066105050079) > I hope this helps! Let me know if you have any further questions. > -------------------------------------------------------------------------------------------конец > диалога > > Однако, ссылки из первых двух групп оказались фейковыми. Не работают. > Из двух последних групп ссылки действуют, но пока не понятно, насколько > они релевантны вопросу. > Дополнительных гуглеж по "Partial Evaluation Framework" дал еще одну > интересную ссылку > https://compilers.cs.uni-saarland.de/papers/anydsl.pdf > на статью под названием "AnyDSL: A Partial Evaluation Framework for > Programming High-Performance Libraries" > Остается главный вопрос: про фреймворк PEF и про Specializer она просто > придумала или они действительно существуют! Гугл вроде их не видит. SciHub > по doi тоже не находит. Кто-нибудь что-то знает про них? > Аркадий > >>