Представлен pypy-stm, интерпретатор Python с поддержкой распараллеливания на многоядерных системах

11 мая 2012 года

Разработчики проекта PyPy представили (Архивная копия от 3 апреля 2016 на Wayback Machine) проект pypy-stm (PyPy Software Transactional Memory), в рамках которого проведена работа по избавлению от глобальной блокировки интерпретатора, мешающей обеспечению параллельного выполнения нескольких нитей кода на языке Python. В настоящее время представлена надстройка над PyPy c рабочей реализацией интерпретатора Python 2.7, поддерживающая одновременное исполнение нитей существующих многопоточных приложений на разных ядрах CPU. Кроме STM-надстройки над PyPy дополнительно ведётся работа (Архивная копия от 25 марта 2012 на Wayback Machine) по реализации поддержки STM для экспериментальной ветки СPython 3.3.

От проблем с глобальной блокировкой до настоящего времени был избавлен только проект Jython, который использовал для обеспечения параллельного выполнения особенности виртуальной машины JVM вкупе с привязкой локов к изменяемым встроенным типам. В PyPy, CPython и IronPython, глобальная блокировка присутствует, что существенно ограничивает производительность данных реализаций языка Python. Для решения указанной проблемы участники проекта PyPy решили перейти от традиционных блокировок к программной транзакционной памяти, в качестве механизма для обеспечения параллелизма. Данный механизм по своей сути напоминает методы изоляции изменений, используемые в СУБД для обеспечения целостности транзакций. Для желающих принять участие в тестировании проекта подготовлено подробное описание (Архивная копия от 5 декабря 2013 на Wayback Machine) используемых в pypy-stm методов управления параллелизмом.

В настоящее время подготовлена сборка для 32-разрядных Linux-систем ( можно собрать и для x86-64). Отмечается, что разработка пока представляет собой демонстрационный прототип, который ещё не подвергался оптимизации и поэтому работает очень медленно. Pypy-stm отстаёт по производительности от PyPy в 2-5 раз, так как PyPy в режиме STM пока не совместим с реализацией JIT-компилятора и не поддерживает многие оптимизации. В настоящее время pypy-stm полностью совместим с содержащей глобальную блокировку версией PyPy, т.е. может быть использован для выполнения многопоточных приложений в качестве прозрачной замены PyPy. Дополнительно, в стандартный модуль thread добавлен низкоуровневый API "thread.atomic", позволяющий более тонко управлять выполнением многопоточных приложений на разных ядрах CPU. Со временем на базе данного низкоуровневого API планируется разработать высокоуровневый программный интерфейс, который можно будет использовать для распараллеливания изначально не многопоточных программ.

Источники

править


 
 
Creative Commons
Эта статья содержит материалы из статьи «Представлен pypy-stm, интерпретатор Python с поддержкой распараллеливания на многоядерных системах», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
 
Эта статья загружена автоматически ботом NewsBots в архив и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.