DeepMind открыл код S6, библиотеки с реализацией JIT-компилятора для CPython
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Компания DeepMind, получившая известность своими разработками в области искусственного интеллекта, открыла исходные тексты проекта S6, развивавшего JIT-компилятор для языка Python. Проект интересен оформлением в виде библиотеки-расширения, интегрируемой с штатным CPython, обеспечивающей полную совместимость с CPython и не требующей модификации кода интерпретатора. Проект развивался с 2019 года, но к сожалению был свёрнут и больше не развивается. Так как созданные наработки могут оказаться полезными для улучшения Python было принято решение открыть исходные тексты. Код JIT-компилятора написан на языке C++, основан на CPython 3.7. и открыт под лицензией Apache 2.0.
По решаемым задачам S6 для Python сравнивается с движком V8 для JavaScript. Библиотека заменяет существующий обработчик интерпретатора байткода ceval.c собственной реализацией, использующей JIT-компиляцию для ускорения выполнения. S6 проверяет, скомпилирована ли уже текущая функция и, если да - исполняет скомпилированный код, а если нет - запускает функцию в режиме интерпретации байткода, похожем на интерпретатор CPython. При интерпретации подсчитывается число выполненных инструкций и обращений, связанных с обрабатываемой функцией. После достижения определённого рубежа для ускорения часто выполняемого кода инициируется процесс компиляции. Компиляция производится в промежуточное представление strongjit, которое после оптимизации преобразуется в машинные инструкции целевой системы при помощи библиотеки asmjit.
В зависимости от характера нагрузки S6 при оптимальных условиях демонстрирует повышение скорости выполнения тестов до 9.5 раз в сравнении с обычным CPython. При запуске 100 итераций тестового набора Richards наблюдается ускорение в 7 раз, а при запуске теста Raytrace, в котором присутствует большой объём математических вычислений, - в 3-4.5 раза.
Из задач которые плохо поддаются оптимизации при помощи S6, называются проекты, использующие C API, такие как NumPy, а также операции, связанные с необходимостью проверки типов большого числа значений. Низкая производительность также наблюдается для единичных вызовов ресурсоёмких функций из-за использования в S6 собственной неоптимизированной реализации Python-интерпретатора (разработка не достигла стадии проведения оптимизации режима интерпретации). Например, в тесте Unpack Sequence, выполняющем распаковку больших наборов массивов/кортежей, при единичном вызове наблюдаться замедление до 5 раз, а при цикличном вызове - производительность составляет 0.97 от CPython.
===========
Источник:
OpenNet.RU
===========
Похожие новости
- Главная ссылка к новости (https://news.ycombinator.com/i...)
- OpenNews: Представлен Pyston-lite, JIT-компилятор для штатного Python
- OpenNews: Гвидо ван Россум намерен достигнуть двукратного увеличения производительности в CPython 3.11
- OpenNews: Проект Pyston, предлагающий Python с JIT-компилятором, вернулся к открытой модели разработки
- OpenNews: Facebook открыл код Cinder, форка CPython, используемого в Instagram
- OpenNews: DeepMind открыл код симулятора физических процессов MuJoCo
Похожие новости:
- Выпуск Nuitka 1.0, компилятора для языка Python
- Packj - инструментарий для выявления вредоносных библиотек на языках Python и JavaScript
- Злоумышленники получили контроль над Python-пакетом ctx и PHP-библиотекой phpass
- DeepMind открыл код симулятора физических процессов MuJoCo
- Уязвимость в Python, позволяющая вызвать системные команды из изолированных скриптов
- Проект PyScript развивает платформу для выполнения Python-скриптов в web-браузере
- Bloomberg открыл код memray, инструмента профилирования памяти для Python
- Выпуск SciPy 1.8.0, библиотеки для научных и инженерных расчётов
- В 3.6% протестированных Python-репозиториев выявлены ошибки, связанные с пропущенными запятыми
- Выпуск Python-библиотеки для научных вычислений NumPy 1.22.0
Теги для поиска: #_s6, #_deepmind, #_python
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 08:47
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Компания DeepMind, получившая известность своими разработками в области искусственного интеллекта, открыла исходные тексты проекта S6, развивавшего JIT-компилятор для языка Python. Проект интересен оформлением в виде библиотеки-расширения, интегрируемой с штатным CPython, обеспечивающей полную совместимость с CPython и не требующей модификации кода интерпретатора. Проект развивался с 2019 года, но к сожалению был свёрнут и больше не развивается. Так как созданные наработки могут оказаться полезными для улучшения Python было принято решение открыть исходные тексты. Код JIT-компилятора написан на языке C++, основан на CPython 3.7. и открыт под лицензией Apache 2.0. По решаемым задачам S6 для Python сравнивается с движком V8 для JavaScript. Библиотека заменяет существующий обработчик интерпретатора байткода ceval.c собственной реализацией, использующей JIT-компиляцию для ускорения выполнения. S6 проверяет, скомпилирована ли уже текущая функция и, если да - исполняет скомпилированный код, а если нет - запускает функцию в режиме интерпретации байткода, похожем на интерпретатор CPython. При интерпретации подсчитывается число выполненных инструкций и обращений, связанных с обрабатываемой функцией. После достижения определённого рубежа для ускорения часто выполняемого кода инициируется процесс компиляции. Компиляция производится в промежуточное представление strongjit, которое после оптимизации преобразуется в машинные инструкции целевой системы при помощи библиотеки asmjit. В зависимости от характера нагрузки S6 при оптимальных условиях демонстрирует повышение скорости выполнения тестов до 9.5 раз в сравнении с обычным CPython. При запуске 100 итераций тестового набора Richards наблюдается ускорение в 7 раз, а при запуске теста Raytrace, в котором присутствует большой объём математических вычислений, - в 3-4.5 раза. Из задач которые плохо поддаются оптимизации при помощи S6, называются проекты, использующие C API, такие как NumPy, а также операции, связанные с необходимостью проверки типов большого числа значений. Низкая производительность также наблюдается для единичных вызовов ресурсоёмких функций из-за использования в S6 собственной неоптимизированной реализации Python-интерпретатора (разработка не достигла стадии проведения оптимизации режима интерпретации). Например, в тесте Unpack Sequence, выполняющем распаковку больших наборов массивов/кортежей, при единичном вызове наблюдаться замедление до 5 раз, а при цикличном вызове - производительность составляет 0.97 от CPython. =========== Источник: OpenNet.RU =========== Похожие новости
|
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 08:47
Часовой пояс: UTC + 5