Здравствуйте, Аркадий!

Я читал несколько статей по 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 тоже не находит. Кто-нибудь что-то знает про них?
> Аркадий
>
>>

Ответить