Ada_Ru форум

Обсуждение языка Ада

Fwd: Поддержка многопоточности в Ада

Оставить новое сообщение

Сообщения

Иван Левашев
Fwd: Поддержка многопоточности в Ада
2008-05-11 08:35:15

From: *SergH* </Users/4847.aspx> rsdn DFA0BD11-EE3D-4DB4-98D5-FC2BDA095E3C

 

 

 

http://sergh.pisem.net search </search/?group=27> fav </Users/Private/addFav.aspx?mid=2945706> new <NewMsg.aspx?gid=27> replay <NewMsg.aspx?mid=2945706> thread <message/2945706.aspx>flat <message/2945706.flat.aspx#2945706> edit <NewMsg.aspx?mid=2945706&edit=1> del <Private/Self.aspx?mid=2945706>

 

Поддер!

 

жкамн огопоточнос Evolving a language in and for the real world: C++ 1991-2006 <http://www.research.att.com/%7Ebs/hopl-almost-final.pdf>, тивАда  П ри ветЧи (таюСтрау 28):

 

Some of us, notably Dag Bru"ck relying on data from Ericssson,

looked at the issue and presented the case for not dealing with

concurrency in the committee:

...

* The experience with Adaсs direct language support for concurrency

was discouraging.

 

 

тру панаткн у лся н атако-естра н ица’П. р ора нде ву вАдеяболе емен?

еевку рсе Авотчт, о запе чал ьныйо

пытДелайч тодолжноибудьчт о буд <message/2945706.aspx> етПодде <RateList.aspx?mid=2945706> +1 <Private/Rate.aspx?mid=2945706&rate=-3>1 <Private/Rate.aspx?mid=2945706&rate=1>2 <Private/Rate.aspx?mid=2945706&rate=2>3 <Private/Rate.aspx?mid=2945706&rate=3>X <Private/Rate.aspx?mid=2945706&rate=-1> :) <Private/Rate.aspx?mid=2945706&rate=-2> + <Private/Rate.aspx?mid=2945706&rate=-4>- <Private/Rate.aspx?mid=2945706&rate=0> DFA0BD11-EE3D-4DB4-98D5-FC2BDA095E3C

On Sun, 11 May 2008 15:35:15 +0700, you wrote:

 

Читаю Страуструпа Evolving a language in and for the real world: C++ 1991-2006 <http://www.research.att.com/%7Ebs/hopl-almost-final.pdf>, наткнулся на такое (страница 28):

 

Some of us, notably Dag Bru"ck relying on data from Ericssson,

looked at the issue and presented the case for not dealing with

concurrency in the committee:

...

* The experience with Ada’s direct language support for concurrency was discouraging.

 

Про рандеву в Аде я более-менее в курсе. А вот что за печальный опыт?

 

Удивительно, что он вообще упоминает Аду. В тех его книгах, которые я читал ранее, такого языка не существовало. Возможно имелась в виду Ада 83, а может Ада в-целом. Зачем-бы иначе С латать?

 

Состояние дел с параллельным программированием в Аде можно, конечно, считать неудовлетворительным, по многим отдельным причинам. Но ничего лучше пока не наблюдается. Я не думаю, что они всерьез рассматривали этот вопрос. Иначе, осчастливили бы нас еще одним STL-ем. Его влияние на Аду он упоминает. Увы, - прав. Не хватало того еще в и параллельном

программировании.

 

Вообще, время и новые архитектуры поджимают. Рано или поздно, они за это возьмутся...

 

--

Regards,

Dmitry A. Kazakov

http://www.dmitry-kazakov.de

On Sun, 11 May 2008 15:35:15 +0700, you wrote:

 

Про рандеву в Аде я более-менее в курсе.

 

Да, ежели тема кому интересна, то здесь последняя версия Simple Components:

http://www.dmitry-kazakov.de/ada/components.htm

 

Глава 9 содержит реализацию lock-free разделяемых структур: очереди, доски объявлений.

 

Глава 10 содержит реализацию примитивов синхронизации: события, группы событий, пульсирующие события, мьютексы и группы мьютексов. Описывается использование защищенных объектов. Приводятся решения задач о точке синхронизации и обедающих философов.

 

--

Regards,

Dmitry A. Kazakov

http://www.dmitry-kazakov.de

Dmitry A. Kazakov wrote:

On Sun, 11 May 2008 15:35:15 +0700, you wrote:

 

Про рандеву в Аде я более-менее в курсе.

 

Да, ежели тема кому интересна, то здесь последняя версия Simple Components:

 

http://www.dmitry-kazakov.de/ada/components.htm

 

Глава 9 содержит реализацию lock-free разделяемых структур: очереди, доски

объявлений.

 

Глава 10 содержит реализацию примитивов синхронизации: события, группы

событий, пульсирующие события, мьютексы и группы мьютексов. Описывается

использование защищенных объектов. Приводятся решения задач о точке

синхронизации и обедающих философов.

 

круто

жаль только я с Адой пока слабо знаком, что б все ето попробовать

 

посему вопрос начинающего: где можно почитать о проблемах многопоточности в Аде? И вообще о проблемах (и их решениях) при программировании на Аде.

Где почитать, например, чем плохи рандеву? (Если так плохи, зачем тогда их так долго и тщательно придумьівали?) Стоит ли использовать многозадачньіе механизмьі Адьі или лучьше напрямую исп.возможности целевой ОС?

 

 

И вообще, у меня такое складьіваеться мнение (не пинать, пжлст), что в Аде много крутейших идей заложено, но многие из них на практике не применимьі из за то одной, то другой проблемьі (реализации(???)). Или ето проблема компиляторов, или программистов или же самих идей. Из за чего Ада похожа на такой себе музей крутьіх но невостребованньіх технологий.

 

 

П.С. Хотел бьі исп.Аду на все 100%. т.е. опираться на все возможности язьіка, но то там, то сям проскакьівают сообщения о проблемах в исп. определенньіх возможностей Адьі. (н.п. не исп. DSA для серьезного проекта там чего-то не хватает. Лучше AWS ли PolyORB; Не исп. рандеву. Там что то не так. Лучше ...; Где то нарьіл сравнение скомпилированного кода Адьі и Фортрана (какой-то цикл). Цикла на Аде исп. в 3 раза больше ассемблерньіх инструкций. и т.д. и т.п.). Ощущение чисто субьективное. проблемньіе ссьілки не собирал. просто где то проскакьівало... Может по етим моментам какое-то ЧАВО существует?

 

Влад

On Tue, 13 May 2008 13:00:00 +0300, you wrote:

 

посему вопрос начинающего: где можно почитать о проблемах многопоточности в Аде?

И вообще о проблемах (и их решениях) при программировании на Аде.

 

Alan Burns, Andy Wellings, - Concurrent and Real-Time Programming in Ada. По-моему, она в России издавалась.

 

Где почитать, например, чем плохи рандеву? (Если так плохи, зачем тогда их так

долго и тщательно придумьівали?)

 

А кто сказал, что они плохи? Во многих случаях они лучше, чем protected objects. Более того, с приходом многоядерных архитектур, таких случаев станет много-много больше.

 

(И, вообще, существует дуализм между объектной и процедурной

декомпозициями, ни одно, другого не лучше.)

 

Стоит ли использовать многозадачньіе механизмьі

Адьі или лучьше напрямую исп.возможности целевой ОС?

 

Разумеется, механизмы Ады.

 

И вообще, у меня такое складьіваеться мнение (не пинать, пжлст), что в Аде много

крутейших идей заложено, но многие из них на практике не применимьі из за то одной, то другой проблемьі (реализации(???)). Или ето проблема компиляторов, или

программистов или же самих идей. Из за чего Ада похожа на такой себе музей крутьіх но невостребованньіх технологий.

 

Ряд идей пришли слишком рано. Многое не доработано, по разным причинам. Про некоторые вещи, просто, и по сию пору, не известно как сделать "правильно".

П.С. Хотел бьі исп.Аду на все 100%. т.е. опираться на все возможности язьіка, но

то там, то сям проскакьівают сообщения о проблемах в исп. определенньіх возможностей Адьі.

 

Не встречал. Есть разные алгоритмы решения проблем. Возможности Ады тут, по-моему, не причем. По крайней мере, в первом приближении.

 

Где то нарьіл сравнение скомпилированного кода Адьі и Фортрана (какой-то цикл).

Цикла на Аде исп. в 3 раза больше ассемблерньіх инструкций. и т.д. и т.п.).

 

Потенциально, Ада должна бы давать лучший код чем Фортран. Реально, есть GNAT, который не очень-то хорошо оптимизирует. Проблема курицы и яйца. Вы не будете покупать GNAT за 10K, а те не будут снижать цены, инвестировать в новые платформы и оптимизацию.

 

--

Regards,

Dmitry A. Kazakov

http://www.dmitry-kazakov.de

Dmitry A. Kazakov пишет:

Потенциально, Ада должна бы давать лучший код чем Фортран. Реально, есть

GNAT, который не очень-то хорошо оптимизирует. Проблема курицы и яйца. Вы

не будете покупать GNAT за 10K, а те не будут снижать цены, инвестировать в

новые платформы и оптимизацию.

 

По слухам, Ada 2005 реализуют, по меньшей мере, три участника. Кроме AdaCore, должны объявиться ещё два.

 

-- If you want to get to the top, you have to start at the bottom

Иван Левашев wrote:

Dmitry A. Kazakov пишет:

Потенциально, Ада должна бы давать лучший код чем Фортран. Реально, есть

GNAT, который не очень-то хорошо оптимизирует. Проблема курицы и яйца. Вы

не будете покупать GNAT за 10K, а те не будут снижать цены, инвестировать в

новые платформы и оптимизацию.

 

По слухам, Ada 2005 реализуют, по меньшей мере, три участника. Кроме AdaCore, должны объявиться ещё два.

 

 

Я бы не стал уж очень полагаться на эти слухи.

 

Такая вот инсайдерская информация :)

Dmitry A. Kazakov wrote:

On Tue, 13 May 2008 13:00:00 +0300, you wrote:

 

посему вопрос начинающего: где можно почитать о проблемах многопоточности в Аде? И вообще о проблемах (и их решениях) при программировании на Аде.

 

Alan Burns, Andy Wellings, - Concurrent and Real-Time Programming in Ada.

По-моему, она в России издавалась.

спасибо, гляну

 

Где почитать, например, чем плохи рандеву? (Если так плохи, зачем тогда их так долго и тщательно придумьівали?)

 

А кто сказал, что они плохи? Во многих случаях они лучше, чем protected

objects. Более того, с приходом многоядерных архитектур, таких случаев

станет много-много больше.

 

означает ли ето, что механизмьі поддержки многозадачности Адьі может оказаться

ДЕЙСТВИТЕЛЬНО еффективньіми в грядущих массово-параллельньіх системах?

 

Потенциально, Ада должна бы давать лучший код чем Фортран.

А вот ето действительно хотелось бьі!

 

Реально, есть

GNAT, который не очень-то хорошо оптимизирует. Проблема курицы и яйца. Вы

не будете покупать GNAT за 10K, а те не будут снижать цены, инвестировать в

новые платформы и оптимизацию.

 

нелогично. Получается, что сейчас AdaCore не работает в етом направлении, потому что есть огромньій спрос на дорогой неоптимизированньій GNAT с поддержкой ограниченного числа платформ?

On Tue, 13 May 2008 15:01:23 +0300, you wrote:

 

Dmitry A. Kazakov wrote:

On Tue, 13 May 2008 13:00:00 +0300, you wrote:

 

Где почитать, например, чем плохи рандеву? (Если так плохи, зачем тогда их так

долго и тщательно придумьівали?)

 

А кто сказал, что они плохи? Во многих случаях они лучше, чем protected objects. Более того, с приходом многоядерных архитектур, таких случаев станет много-много больше.

 

означает ли ето, что механизмьі поддержки многозадачности Адьі может оказаться ДЕЙСТВИТЕЛЬНО еффективньіми в грядущих массово-параллельньіх системах?

 

Рандеву - безусловно. При сотнях и тысячах ядер разделяемая память будет исключительно дорога, и программно, и по-железу. Скорее всего, вернутся транспьютеры - процессоры с локальной памятью, коммутированые "сирийскими линками". Для рандеву это самое, что ни на есть то.

 

Но, необходимы соответствующие методы разработки программ. Прежде всего, использование компонент. До тех пор, пока задачные типы будут оставаться не наследуемыми, этот путь закрыт. (Заплатка synchronized interface - не в счет) Так что проблема не с самими рандеву, а вокруг них.

 

Реально, есть

GNAT, который не очень-то хорошо оптимизирует. Проблема курицы и яйца. Вы не будете покупать GNAT за 10K, а те не будут снижать цены, инвестировать в новые платформы и оптимизацию.

 

нелогично. Получается, что сейчас AdaCore не работает в етом направлении, потому

что есть огромньій спрос на дорогой неоптимизированньій GNAT с поддержкой ограниченного числа платформ?

 

Проблема в том, что рынок мал. Ада - эндемик. Нет рынка, нет и спроса. Будет спрос, появится желание его удовлетворить.

 

--

Regards,

Dmitry A. Kazakov

http://www.dmitry-kazakov.de

Реально, есть GNAT, который не очень-то хорошо оптимизирует.

 

А нельзя ли раскрыть здесь подробнее? Что именно GNAT "не очень-то хорошо оптимизирует"? Кто именно идентичный по функциональности код оптимизирует лучше?

 

Проблема курицы и яйца. Вы не будете покупать GNAT за 10K, а те не будут снижать цены, инвестировать в новые платформы и оптимизацию.

 

Нет такой проблемы. Качество кода, генерируемого GNAT Pro, не уступает качеству кода других известных нам реализаций Ада 95. Такова наша политика, и жалоба клиента типа "перешли на GNAT Pro и стало медленнее чем раньше" всегда получает самое пристальное внимание.

sve

 

Рандеву - безусловно. При сотнях и тысячах ядер разделяемая память будет

исключительно дорога, и программно, и по-железу. Скорее всего, вернутся

транспьютеры - процессоры с локальной памятью, коммутированые "сирийскими

линками". Для рандеву это самое, что ни на есть то.

 

Возможно это так для задачь типа producer-consumer, да и то только для тех, гдк нужно синхронное взаимодейтвие потоков. Однако есть другие задачи где этот подход не работает - например некий цикл, (или просто участок кода, куски которого можно выполнять паралельно) который нужно распарлелить на N потоков - тогда что нибудь декларативное - типа OpenMP или Intel TBB.

 

 

Проблема в том, что рынок мал. Ада - эндемик. Нет рынка, нет и спроса.

Будет спрос, появится желание его удовлетворить.

 

И обратно - нет доступных (лучше безплатных) и качественных средств разработки - нет спроса. Пример - Smalltalk vs Java и .Net

Sergey I. Rybin пишет:

Иван Левашев wrote:

По слухам, Ada 2005 реализуют, по меньшей мере, три участника. Кроме AdaCore, должны объявиться ещё два.

 

 

Я бы не стал уж очень полагаться на эти слухи.

 

Такая вот инсайдерская информация :)

 

А вот и источник слухов:

 

http://groups.google.com/group/comp.lang.ada/msg/fee163a7d434cc98

 

I agree. I do know that there are multiple vendors (at least three) working on the Amendment features, because they have given me feedback on the ACATS tests that are in development. All of three of

the vendors have pointed out enough test errors that I think it is

unlikely that they did so by hand (my own experience with

creating/editing the tests without a viable compiler was that finding

errors was extremely difficult -- only a few errors were detected

that way).

 

The ACAA has confidentiality rules, so I can't say more.

 

-- If you want to get to the top, you have to start at the bottom

sve

это все круто, но стоит заметить, что большинство lock-free и wait-free алгоритмов запатентованы.

 

----- Original Message ----- From: "Иван Левашев" <octagram@...>

To: <ada_ru@yahoogroups.com>

Sent: Tuesday, May 13, 2008 5:35 PM

Subject: [ada_ru] Re: lock-free (was 'Fwd: Поддержка многопоточности в Ада')

Dmitry A. Kazakov пишет:

Глава 9 содержит реализацию lock-free разделяемых структур: очереди, доски

объявлений.

находил ещё в Сети http://www.gidenstam.org/Ada/Non-Blocking/index.html

 

-- If you want to get to the top, you have to start at the bottom

Vasiliy Fofanov wrote:

Реально, есть GNAT, который не очень-то хорошо оптимизирует.

 

А нельзя ли раскрыть здесь подробнее? Что именно GNAT "не очень-то

хорошо оптимизирует"? Кто именно идентичный по функциональности код

оптимизирует лучше?

 

вот, нашел такое:

 

http://gnuada.sourceforge.net/pmwiki.php/Main/Oct2006CLAGFORTRANComparison

 

Возможно в новой версии GNAT уже все пофиксено, но в GCC данньій баг

висит до сих пор:

 

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29543

 

 

Проблема курицы и яйца. Вы не будете покупать GNAT за 10K, а те не

будут снижать цены, инвестировать в новые платформы и оптимизацию.

 

Нет такой проблемы. Качество кода, генерируемого GNAT Pro, не уступает

качеству кода других известных нам реализаций Ада 95. Такова наша

политика, и жалоба клиента типа "перешли на GNAT Pro и стало медленнее

чем раньше" всегда получает самое пристальное внимание.

 

Полагаю GNAT GPL не сильно отличается от GNAT Pro ? Или у GNAT Pro особенная реализация?

On Tue, 13 May 2008 17:20:07 +0400, you wrote:

 

>Рандеву - безусловно. При сотнях и тысячах ядер разделяемая память будет >исключительно дорога, и программно, и по-железу. Скорее всего, вернутся >транспьютеры - процессоры с локальной памятью, коммутированые "сирийскими >линками". Для рандеву это самое, что ни на есть то.

 

Возможно это так для задачь типа producer-consumer, да и то только для тех, гдк нужно синхронное взаимодейтвие потоков. Однако есть другие задачи где этот подход не работает - например некий цикл, (или просто участок кода, куски которого можно выполнять паралельно) который нужно распарлелить на N потоков - тогда что нибудь декларативное - типа OpenMP или Intel TBB.

 

Зависит от величины N и связности кусков. Сильная связность при большом N не работает нигде, никак и никогда. Разделяемая память имеет преимущество только тогда, когда тактовую частоту можно безнаказанно увеличивать. Рано или поздно, это все равно кончится.

 

Насчет низкоуровневых конструкций типа Occam-а, помнится были предложения добавить их в Аду. В-принципе, это те-же рандеву, только тела задач пишутся прямо в одном куске кода. Рандеву случается в конце, когда нитки сходятся.

>Проблема в том, что рынок мал. Ада - эндемик. Нет рынка, нет и спроса. >Будет спрос, появится желание его удовлетворить.

 

И обратно - нет доступных (лучше безплатных) и качественных средств разработки - нет спроса.

 

Ага.

 

Пример - Smalltalk vs Java и .Net

 

Это другой случай: при наличии денег, продать можно что угодно, кому угодно, независимо от желания и нужд последнего.

 

--

Regards,

Dmitry A. Kazakov

http://www.dmitry-kazakov.de

Возможно в новой версии GNAT уже все пофиксено, но в GCC данньій баг висит до сих пор:

 

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29543

 

А есть ли мальчик, в смысле баг? Один из наших разработчиков, Eric Botcazou, как видите принял активное участие в дискуссии, и не

согласился с тем, что приведенные программы эквивалентны.

 

Полагаю GNAT GPL не сильно отличается от GNAT Pro ? Или у GNAT Pro особенная реализация?

 

Да нет, просто GNAT GPL во-первых старее, а во-вторых в отношении него мы никаких обязательств не берем. Но в данном конкретном случае как я уже сказал это не играет роли, поскольку анализ нашего разработчика - что сопоставляемые программы не эквивалентны. Оснований оспаривать его точку зрения у меня нет.

 

ВФ

Vladyslav Kozlovskyy пишет:

GNAT с поддержкой ограниченного числа платформ?

 

Ну, не такое уж и ограниченное. У них постепенно добавляются новые конфигурации. Ощущение, что работа над .NET и Java портами отняла немало сил, но они–таки имеют их. Надеюсь, они появятся в GPL версии.

 

И, помимо байткодовых платформ, ElinOS у них раньше не было. Лучше бы, конечно, там также невзначай появились WinCE и Symbian, но это не нам решать.

 

А ещё не за горами Vienna, которая только x64. И ABI у Win64 отличается от ABI остальных x64 систем. А там уже и весь MinGW надо портировать, а не только GNAT, сейчас я не вижу рабочих MinGW64 портов. Но тут помощники найдутся, я думаю.

 

Понять AdaCore можно.

 

-- If you want to get to the top, you have to start at the bottom

sve

 

From: "Dmitry A. Kazakov" <alt@...>

To: <ada_ru@yahoogroups.com>

Sent: Tuesday, May 13, 2008 6:06 PM

Subject: Re: [ada_ru] Fwd: Поддержка многопоточности в Ада

 

 

 

Зависит от величины N и связности кусков. Сильная связность при большом N

не работает нигде, никак и никогда.

 

это так, однако случай "слабой связности" "кусков" - довольно распространенное явление например в DSP (и как следствие в AI) - возьмите например операции типа свертки или похожие (в плане реализации) вещи типа dft, dwt и т.п. - все это очень хорошо вписывается в эту категорию задачь.

 

Разделяемая память имеет преимущество

только тогда, когда тактовую частоту можно безнаказанно увеличивать. Рано

или поздно, это все равно кончится.

 

ну незнаю, по моему все идет по компромисному сценарию, а именно - в сторону архитектур типа NUMA.

 

 

Насчет низкоуровневых конструкций типа Occam-а, помнится были предложения

добавить их в Аду. В-принципе, это те-же рандеву, только тела задач пишутся

прямо в одном куске кода. Рандеву случается в конце, когда нитки сходятся.

 

да, это было бы полезно.

sve

кто нибудь может просветить на эту тему в плане следования последнему (Ada 2005) стандарту и багов?

sve wrote:

кто нибудь может просветить на эту тему в плане следования последнему (Ada 2005) стандарту и багов?

GCC 4.3.0 лучше следует стандарту, но баги другие.

 

Использовать можно вполне, особенно версию из Debian, где часть ошибок поправили.

 

А можно подождать и до выхода GNAT GPL 2008, там может ещё чего поправят.

Новое сообщение:
Страницы: 1 2

Чтобы оставить новое сообщение необходимо Зарегистрироваться и Войти