The OpenNET Project / Index page

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

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

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

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

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

  1. Главная ссылка к новости (http://morepypy.blogspot.com/2...)
  2. OpenNews: Релиз PyPy 1.8, реализации Python, написанной на языке Python
  3. OpenNews: Проект PyPy представил визуализатор процесса JIT-компиляции и обрисовал ситуацию, когда PyPy быстрее языка Си
  4. OpenNews: Релиз Python-компилятора Shed Skin 0.8
  5. OpenNews: Релиз языка программирования Python 3.2
  6. OpenNews: Релиз Cython 0.15, варианта языка Python, поддерживающего плотную интеграцию с Си
Лицензия: CC-BY
Тип: К сведению
Ключевые слова: pypy, python, multicore, multithread, parallel
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение Линейный вид | Ajax | Показать все | RSS
 
  • 1.5, ZeroOne, 12:48, 11/05/2012 [ответить] [смотреть все]
  • +/
    Интересная идея. Что ж, удачи им.
    А реализацию многопоточности через С/С++ расширения либо через грядущую версию С с поддержкой этой самой многопоточности ещё не пробовали делать или же что-то пробовали, да получилось не очень? Кто-то знает? Если есть ссылки, буду рад.
     
     
  • 2.10, жопка3, 13:06, 11/05/2012 [^] [ответить] [смотреть все] [показать ветку]
  • +2 +/
    А расскажите, пожалуйста, подробней про грядущую версию С с поддержкой многопото... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.15, Аноним, 13:48, 11/05/2012 [^] [ответить] [смотреть все]  
  • –8 +/
    Внезапно, многопоточность в Си поддерживается уже как минимум с 1995 года, если ... весь текст скрыт [показать]
     
     
  • 4.16, Аноним, 14:23, 11/05/2012 [^] [ответить] [смотреть все]  
  • +/
    Бывает что ирония и сарказм не улавливается, но не настолько ... весь текст скрыт [показать]
     
  • 4.20, Аноним, 15:07, 11/05/2012 [^] [ответить] [смотреть все]  
  • +1 +/
    pthread не являются частью стандарта С ... весь текст скрыт [показать]
     
     
  • 5.25, Аноним, 16:13, 11/05/2012 [^] [ответить] [смотреть все]  
  • +/
    Ага, и еще 100500 либ не являются Это не мешает ими пользоваться ... весь текст скрыт [показать]
     
     
  • 6.36, Аноним239, 22:32, 11/05/2012 [^] [ответить] [смотреть все]  
  • +/
    Еще как мешает Что делать на платформах под которые есть компилятор С но нет p... весь текст скрыт [показать]
     
     
  • 7.42, Аноним, 09:14, 12/05/2012 [^] [ответить] [смотреть все]  
  • –1 +/
    С таким же успехом, питона может и не быть на некоей платформе Например на всяк... весь текст скрыт [показать]
     
     
  • 8.49, Аноним, 14:40, 12/05/2012 [^] [ответить] [смотреть все]  
  • +/
    И читать стоит то на что вы отвечаете.
    Иначе так и будете попадать впросак.
     
  • 4.58, Vasily Pupkin, 09:40, 13/05/2012 [^] [ответить] [смотреть все]  
  • +/
    О как. А шо там как там с posix threads в MSVC собирать?
     
  • 3.21, Аноним, 15:09, 11/05/2012 [^] [ответить] [смотреть все]  
  • +/
    google c11 threads h ... весь текст скрыт [показать]
     
  • 3.30, ZeroOne, 17:05, 11/05/2012 [^] [ответить] [смотреть все]  
  • +1 +/
    Сам ещё об этом ничего не знаю Знаю, что с выходом C11 активировалось обсуждени... весь текст скрыт [показать]
     
  • 1.6, Нанобот, 12:48, 11/05/2012 [ответить] [смотреть все]  
  • –1 +/
    что, не хватает питону одного ядра процессора, да?
     
     
  • 2.8, Аноним, 13:02, 11/05/2012 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Теперь будет тормозить на всех ядрах одновременно!
     
  • 2.9, Аноним, 13:04, 11/05/2012 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Питон не умеет нативно эффективно использовать более чем одно ядро в рамках од... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.17, Аноним, 14:33, 11/05/2012 [^] [ответить] [смотреть все]  
  • +/
    Позволяет использовать сколько угодно ядер http docs python org library multi... весь текст скрыт [показать]
     
     
  • 4.19, Аноним, 14:58, 11/05/2012 [^] [ответить] [смотреть все]  
  • +/
    аноним не читатель, аноним писатель 1 multiprocessing запускает отдельный _про... весь текст скрыт [показать]
     
     
  • 5.27, Аноним, 16:16, 11/05/2012 [^] [ответить] [смотреть все]  
  • +/
    А чо, треды оно не того Бла, даже жабаскрипт уже умеет фоновые воркеры ... весь текст скрыт [показать]
     
     
  • 6.31, Аноним, 18:49, 11/05/2012 [^] [ответить] [смотреть все]  
  • +1 +/
    Да умеет питон треды Только по факту в конкретный промежуток времени работать м... весь текст скрыт [показать]
     
     
  • 7.33, Аноним, 19:41, 11/05/2012 [^] [ответить] [смотреть все]  
  • +/
    Немаловажное замечание в рамках одного процесса, а процессов может быть много ... весь текст скрыт [показать]
     
     
  • 8.34, Аноним, 20:14, 11/05/2012 [^] [ответить] [смотреть все]  
  • +/
    Конечно, может Но в питоне синхронизация тредов и процессов вещи очень сильно р... весь текст скрыт [показать]
     
     
  • 9.47, Аноним, 11:27, 12/05/2012 [^] [ответить] [смотреть все]  
  • +/
    Треды синхронизируют механизм GIL, а процессы руками ... весь текст скрыт [показать]
     
  • 7.43, Аноним, 10:39, 12/05/2012 [^] [ответить] [смотреть все]  
  • –2 +/
    Прямо времена Windows 3 0 вспоминаются там тоже такая многозадачность была ... весь текст скрыт [показать]
     
     
  • 8.45, Аноним, 11:17, 12/05/2012 [^] [ответить] [смотреть все]  
  • +/
    Вы сейчас продемонстрировали, что не понимаете разницу между задачей, процессо... весь текст скрыт [показать]
     
  • 2.12, spanasik, 13:13, 11/05/2012 [^] [ответить] [смотреть все] [показать ветку]  
  • +1 +/
    ты серьёзно считаешь, что питоном нельзя задействовать все ядра ?
     
     
  • 3.18, Нанобот, 14:36, 11/05/2012 [^] [ответить] [смотреть все]  
  • +1 +/
    та я вообще такого не говорил но, раз уж ты затронул эту тему, то сейчас задей... весь текст скрыт [показать]
     
     
  • 4.32, anonymous, 18:58, 11/05/2012 [^] [ответить] [смотреть все]  
  • –1 +/
    http docs python org library multiprocessing html не надо явно никакой форк вы... весь текст скрыт [показать]
     
  • 3.22, Аноним, 15:12, 11/05/2012 [^] [ответить] [смотреть все]  
  • +3 +/
    Смотря какой длины питоном Достаточно длинным питоном, да с размаху можно так ... весь текст скрыт [показать]
     
  • 1.39, Мяут, 01:06, 12/05/2012 [ответить] [смотреть все]  
  • +/
    А есть шанс, что PyPy станет мейнстримовым, как когда-то hotspot стал основной Java VM?
     
  • 1.40, szh, 01:07, 12/05/2012 [ответить] [смотреть все]  
  • –1 +/
    Они бы лучше python ускорили сам по себе, без распараллеливания. Он в 2 раза медленнее перл по моим замерам, хоть и меньше RAM ест.

    Многие задачи все равно не распаралелить толком по ядрам, или это слишком геморно-дорого.

     
     
  • 2.46, Аноним, 11:24, 12/05/2012 [^] [ответить] [смотреть все] [показать ветку]  
  • +1 +/
    Я таки думаю, что в ваших замерах были либо многочисленные операции ввода вывода... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.48, szh, 12:31, 12/05/2012 [^] [ответить] [смотреть все]  
  • +/
    python 2 6 5, perl 5 10 1, ubuntu 10 04 1 обсчет по большому графу - массивы с... весь текст скрыт [показать]
     
     
  • 4.50, Аноним, 14:48, 12/05/2012 [^] [ответить] [смотреть все]  
  • +/
    О боже - Вась, а топор оказывается быстрее лома - А как ты проверял - Красил ... весь текст скрыт [показать]
     
     
  • 5.51, szh, 17:30, 12/05/2012 [^] [ответить] [смотреть все]  
  • +/
    perl и python это два топора у которых одно и то же предназначение, рубить одни ... весь текст скрыт [показать]
     
  • 4.52, Аноним, 23:25, 12/05/2012 [^] [ответить] [смотреть все]  
  • +/
    Это как Что за алгоритм Плохо что Рекурсии чего Вы путаетесь в показаниях,... весь текст скрыт [показать]
     
     
  • 5.54, szh, 01:48, 13/05/2012 [^] [ответить] [смотреть все]  
  • +/
    создающий массивы и добавляющий в них данные Совсем медленно Хуже чем в 2 раза ... весь текст скрыт [показать]
     
     
  • 6.60, Аноним, 08:22, 14/05/2012 [^] [ответить] [смотреть все]  
  • +/
    Как это относится к графам Я понимаю например нахождение оптимального пути в гр... весь текст скрыт [показать]
     
     ....нить скрыта, показать (7)

  • 1.41, evgeny_t, 02:06, 12/05/2012 [ответить] [смотреть все]  
  • +/
    мда транзакции вместо локов ) что то новое, чторошо что они не пишут ядро linux )
     
     
  • 2.44, Аноним, 10:42, 12/05/2012 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    А вы уверены, что транзакции это хуже локов с архитектурной точки зрения и точки... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.53, Аноним, 23:27, 12/05/2012 [^] [ответить] [смотреть все]  
  • +/
    Транзакции памяти кушать будут больше, быстродействие возможно будет больше ... весь текст скрыт [показать]
     
     
  • 4.59, etw, 11:43, 13/05/2012 [^] [ответить] [смотреть все]  
  • +/
    STM зачастую медленнее хорошо написанных явных блокировок, особенно, при небольш... весь текст скрыт [показать]
     
  • 3.55, evgeny_t, 07:54, 13/05/2012 [^] [ответить] [смотреть все]  
  • +/
    транзакции не панацея, и имеют свои проблемы дедлоки, конфликты при оптимистичес... весь текст скрыт [показать]
     
     
  • 4.56, evgeny_t, 07:56, 13/05/2012 [^] [ответить] [смотреть все]  
  • +/
    включая бесконечное зацикливание которе ещё никто не разрешил )
     
     
  • 5.57, evgeny_t, 08:04, 13/05/2012 [^] [ответить] [смотреть все]  
  • +/
    да же с есть локи то есть нормально когда у тебя есть локи, а потом можно и... весь текст скрыт [показать]
     
  • 1.61, Аноним, 09:10, 14/05/2012 [ответить] [смотреть все]  
  • +/
    А чем "это" лучше Clojure?
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:


      Закладки на сайте
      Проследить за страницей
    Created 1996-2017 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    Hosting by Ihor