В параллельном программировании сейчас проблем - хоть отбавляй! И одна из причин - нерешенные базовые проблемы параллельных вычислений. Эта тема обсуждалась и ранее, а сейчас приобрела особую актуальность, т.к. параллельные вычисления в связи с появлением многоядерных систем «пошли в массы». И если раньше они интересовали и беспокоили лишь достаточно узкий круг профессионалов, то теперь, как ни крути, они вынесены и их нужно решать на, так сказать, «бытовом уровне». А это требует кардинального пересмотра и даже переосмысливания существующих подходов в параллельных вычислениях…
Но ситуация такова, что сейчас идет простой перенос существующих «профессиональных решений» на современную основу. Это не годится, т.к. вне зависимости от желания «профессионалов» «массы» отвернут достаточно спорные, весьма ненадежные и сложные в использовании уже длительное время обкатываемые параллельные подходы. То, с чем мирился и мирится современный параллельный программист, не годится в приложении к универсальному применению. И собственно это и служит темой потока последних публикаций – какими быть параллельным вычислениям сейчас и в будущем.
Я упомяну лишь две публикации на эту тему – прошлогодний доклад В.В.Воеводина «Математические проблемы параллельных вычислений» (
http://parallel.ru/info/voevodin.doc ) и достаточно свежий обзор С.Кузнецова в «Открытых системах», в котором представлена статья Эдварда Ли «Проблемы использования потоков управления».
В двух словах… Если отбросить всю ту «рекламную шелуху», которая сопровождает внедрение систем многоядерного типа, то все сводится к следующей фразе – нужна новая модель вычислений, которая будет принципиально отличаться от морально устаревшей модели многопоточных вычислений. А два-четыре-восемь и т.п. число ядер – это мало имеет значения. В любом случае – мало!
Современное параллельное программирование – это, образно говоря, уровень математики, когда уже есть понятие числа, но еще не определены операции над ними. Понятное дело, что такая ситуация не может длиться бесконечно (а она затянулась уже, пожалуй лет на пятьдесят-шестьдесят (см.
http://www.citforum.ru/programming/digest/dejavu/ )!). Особенно когда подобную «математику» пытаются внедрить в массы. «Первобытный параллелизм» многопоточного типа (о его тестировании см.
http://www.citforum.ru/programming/dige ... threading/ ) должен быть не просто усовершенствован, а кардинально изменен на иной вид/модель параллельных вычислений. Т.е. по существу еще только анонсируемые многоядерные системы являются, как ни печально, уже морально устаревшим продуктом…
Но ближе к теме…
В конце сентября в Абрау-Дюрсо состоится очередная конференция «Научный сервис в сети Интернет: технологии параллельного программирования». Одно из направлений конференций – «Технологии параллельного программирования». Я бы сказал – это основное направление, т.к. как о каком сервисе (Научный сервис в сети Интернет – второе ее направление) может идти речь, если не решены научные основы этого самого «сервиса»? А основное в «теории» - это собственно теория: модели, языки и технологии параллельного программирования (см. п.1.3.
http://agora.guru.ru/display.php?conf=a ... 3eec82b15c ).
Если просмотреть тематику выступлений, то основной упор делается на практику, т.е. представление решений на существующей базе. И складывается впечатление, что проблем в теории как будто и нет…
С одной стороны, знакомиться с существующими решениями важно, но, с другой стороны, какой смысл в том, чтобы в очередной раз выслушать, как кто-то где-то преодолевал проблемы существующего параллелизма, о которых уже было сказано уже бессчетное число раз (в том числе на этой же конференции в предыдущие годы)?
Код:
Замечание.
Если на секунду отвлечься от предстоящей конференции, то обсуждение проблем теории не столь активно происходит и здесь – на сайте PARALLEL.RU. Так затеянное мною по итогам прошлой конференции Абрау-2005 обсуждение проблем теории параллельных вычислений благополучно угасло… А, например, так и не решенная задача, предложенная мною же для автоматического распараллеливания, никого уже и беспокоит…? А ведь она – простейший пример, который при мало-мальски развитой теории должен решаться «в лет». Но проблема есть, а решения ее нет! Может мы бессильны ее решить? (Роман, где Вы с обещанным решением?)
Но в данном случае беспокоит даже не сама тематика предстоящих докладов. Все же решаем и представляем вниманию то, что можем решить и как умеем решать. Большинство, думаю, даже не задумывается над тем, что можно решать как-то иначе. И вот это и тревожит больше всего, т.к. знакомство с иными подходами затруднено даже на мероприятиях, как данная конференция, где рассмотрению этих вопросов должен быть дан казалось бы самый «зеленый свет»…
И вот тут я наконец-то подхожу к тому, что это делается не совсем так, как того требует сложившаяся ситуация. Сейчас намного важнее решить проблемы теории, чтобы в будущем было много меньше проблем с «сервисом». Этот вывод мною сделан на основании факта отношения организаторов к докладу, который был направлен мною на конференцию. Или, может, не организаторов, а тех рецензентов, которые были привлечены к анализу поступающих материалов. Но, с другой стороны, и мои попытки получить ответ на вопрос, почему же мой доклад не попал в секционные и даже не в стендовые, а только лишь в публикуемые (спасибо, хотя бы за это!) ,ни к чему не привели. Т.е. я попросту не получил ответ на заданный вопрос. А уж ответ на него в прямой компетенции организаторов: дать ответ о причинах помещения материала «на задворки» конференции (это без умаления значимости других материалов, которые аналогично моему будут размещены только в сборники).
Тем не менее, каких-то обид на организаторов конференции у меня нет. Есть лишь повод посмотреть на свой материал критически. Что я и сделал

Хотя ответ, думаю, хотя бы по правилам вежливости все же должен быть дан…
Ну, а поскольку мне, видимо, не будет предоставлена возможность донесения своего материала до участников конференции в форме выступления, то в силу актуальности и важности материала я для знакомства с ним решил изыскать другие пути. Благо они есть… Во-первых, с этим материалом можно будет ознакомиться по ссылкам, которые я укажу. И это будет более детальное знакомство, чем тезисы, которые будут включены в сборник. Пока это ссылка на приложение к докладу, в котором я привожу свое решение алгоритма сдваивания (параллельного суммирования массива чисел), упомянутого в докладе В.В.Воеводина (см. ссылку на него выше). Ссылку на сам доклад я дам, но, наверное, чуть позже. Во-вторых, если будут желающие, то на конференции ничто не мешает организовать его «кулуарное обсуждение». Я готов провести своеобразный мастер-класс с демонстрацией на конкретных примерах той новой технологии параллельного программирования, которую я предлагаю, на смену «первобытному параллелизму» потоков/нитей.
Ну а пока … «для затравки»
Вот вполне серьезная несерьезная задачка «о птичках», которая не имеет естественного решения в рамках концепции многопоточного программирования
Есть несколько птичек, которые клюют в единицу времени то или иное число зерен (закон задан в условии и может быть любым). Дать ответ: сколько зерен они склюют через определенное число единиц времени? Смоделировать поведение пташек, отображая в динамике число зерен, которые были склеваны на текущий момент времени.
Эта задача проще алгоритма сдваивания, но проблемы при ее решении, может, даже более очевидны, чем при реализации параллельного суммирования массива чисел. Но главное, может быть, в том, что ее будут по разному решать «первоклашка» и современный параллельный программист

А надо бы, чтобы решали одинаково. Вся проблема в том, что «…эта способность не распространяется на параллельные программы, поскольку абстракции, на которых основывается параллельное программирование, даже отдаленно не напоминают параллельность физического мира. Мы завязли в этих вычислительных абстракциях и забыли, что они не являются непреложными».
Выше цитата из статьи Эдварда Ли. Проблемы использования потоков управления (см. ссылку выше). И случайно или, как отражение отмеченной закономерности, но собственно «физическому миру параллелизма» и посвящен мой «зарубленный» (частично, правда) доклад…
