The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Первый выпуск PyPy-STM, интерпретатора Python с поддержкой м..."
Отправлено opennews, 07-Июл-14 11:45 
После трёх лет разработки представлен (http://morepypy.blogspot.ru/2014/07/pypy-stm-first-interesti... первый официальный выпуск проекта PyPy-STM (http://pypy.readthedocs.org/en/latest/stm.html) (PyPy Software Transactional Memory), в рамках которого развивается реализация языка Python, способная распараллеливать выполнение разных потоков одного многопоточного приложения на нескольких ядрах CPU. Разработка PyPy-STM направлена на устранение одной из основных проблем СPython - наличие глобальной блокировки интерпретатора (GIL, global interpreter lock), не позволяющей обеспечить параллельное выполнение нескольких нитей кода на языке Python.


PyPy-STM основывается на кодовой базе PyPy, высокопроизводительной реализации языка Python, написанной на языке Python (используется статически типизированное подмножество RPython (http://doc.pypy.org/en/latest/coding-guide.html#id1), Restricted Python). Высокий уровень производительности достигается благодаря задействованию JIT-компилятора, на лету транслирующего некоторые элементы в машинный код. PyPy-STM  полностью совместим с содержащей глобальную блокировку версией PyPy, т.е. может быть использован для выполнения обычных многопоточных приложений на языке Python, выступая в качестве прозрачной замены PyPy. Дополнительно, в стандартный модуль thread добавлен низкоуровневый API "thread.atomic", позволяющий более тонко управлять выполнением многопоточных приложений на разных ядрах CPU.

Для решения проблемы с распараллеливанием на многоядержных системах в PyPy-STM осуществлён переход от традиционных блокировок к программной транзакционной памяти (http://ru.wikipedia.org/wiki/%D0%9F%D1%8... в качестве механизма для обеспечения параллелизма. Данный механизм по своей сути напоминает методы изоляции изменений, используемые в СУБД для обеспечения целостности транзакций. По производительности выполнения программ PyPy-STM приблизился к уровню  PyPy, в основном благодаря задействованию единого JIT-компилятора и устранению узких мест в сборщике мусора (первые сборки PyPy-STM отставали по производительности от PyPy в 2-5 раз).


При выполнении однопоточных программ наблюдается заметное отставание от PyPy на 20% - 300%, но уже при запуске многопоточной программы на двух ядрах CPU PyPy-STM начинает опережать PyPy, при увеличении числа вовлечённых в выполнение ядер CPU разрыв увеличивается. Например, тест mandelbrot выполняется в PyPy за 22.9 сек, в PyPy-STM на одном CPU за 27.5 сек, на двух - за 14.4 сек, на трёх за 10.3 сек, на четырёх за 8.71 сек. В тесте multithread-richards наблюдается отставание от PyPy независимо от числа ядер CPU, в тесте btree производительность держится примерно на одном уровне. Поддержка распараллеливания проверена для базового Python-кода, должный уровень производительности и распараллеливания не гарантируется при использовании сторонних многопоточных библиотек или при прямых манипуляциях памятью через array.array или массивы numpy.


От проблем с глобальной блокировкой до настоящего времени был избавлен только проект Jython, который использовал для обеспечения параллельного выполнения особенности виртуальной машины JVM вкупе с привязкой локов к изменяемым встроенным типам. В PyPy, CPython и IronPython, глобальная блокировка присутствует, что существенно ограничивает производительность данных реализаций языка Python.


PyPy-STM пока поддерживает работу только на 64-разрядных платформах под управлением Linux, для сборки требуется модифицированная (https://bitbucket.org/pypy/stmgc/src/default/c7/llvmfix/) версия clang/llvm. Готовые для установки пакеты сформированы для выпусков Ubuntu  с 12.04 по 14.04.  В настоящее время стартовал сбор средств (http://pypy.org/tmdonate2.html) для второй фазы развития PyPy-STM, в рамках которой планируется решить остающиеся проблемы, провести оптимизации для различных внешних библиотек, обеспечить возможность распараллеливания различных фаз выполнения однопоточных программ, создать фреймворк для написания эффективных многопоточных приложений.

URL: http://morepypy.blogspot.ru/2014/07/pypy-stm-first-interesti...
Новость: https://www.opennet.ru/opennews/art.shtml?num=40150

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру