После двух лет разработки опубликован набор спецификаций OpenMP 5.1 (Open Multi-Processing), определяющих API и способы применения методов параллельного программирования для языков Си, Си++ и Фортран на многоядерных и гибридных (CPU+GPU/DSP) системах с общей памятью и блоками векторизации (SIMD). Отдельные элементы OpenMP 5.1 будут включены в следующий выпуск LLVM/Clang 12.0, а также, возможно, успеют попасть в ветку GCC 11...Подробнее: https://www.opennet.ru/opennews/art.shtml?num=54082
До чего же отрадно видеть упоминание фортрана. Наставник в универе вёл вычмат и от ПК ему требовались только FAR и Fortran - эх, были времена... Работало у него всё чётко и ладно.
Fortran и сейчас активно используется для вычислений и в научной среде.
> Fortran *2018*ЗдОрово, ничего не скажешь (:
Это точно. Например, GAMESS на фортран.
+ из свободного -- CP2K, например.
Да почти вся квантовая химия на фортране. Исключения единичны, но есть. Вот LAMMPS почти полностью переписали с Fortran на C++.
К сожалению, сейчас питона больше чем фортрана.
У них области применения разные.В анализе данных больше питона. Но там, где надо тупо перемалывать числа с большой производительностью -- у питона шансов нет. Там используют фортран, си и кресты.
Вы заблуждаетесь.
Никакой серьёзный анализ на Питоне не напишеш.А числа дробить чем угодно можно.
Поддерживаю, скан гигабайтовых тесктовых файлов джва часа
grep, awk около минуты.
А на питоне ещё и либ для биоинформатики много всяких, не понимаю как им пользуются вообще.
Пользуются зажав нос.
> Никакой серьёзный анализ на Питоне не напишеш.Определите "серьёзный анализ".
> А числа дробить чем угодно можно.
С разной скоростью.
Лучше наверное сказать сложный.Это когда вам нужно что-то считать выходя за рамки подключенного фреймфорка, ну там матричного или еще какого.
И вот тогда вы остаетесь один на один со всеми прелестями питона.Впрочем, иногда и загрузить подготовить данные есть большая проблема.
Популярность питона для меня большая загадка, очевидно спустили эту каку с верху.
Ну или такое определение, серьезный это такой который сложно проводить с помощью питона.
> Это когда вам нужно что-то считать выходя за рамки подключенного фреймфорка, ну
> там матричного или еще какого.Пример привести сможете?
> И вот тогда вы остаетесь один на один со всеми прелестями питона.
Какими, например?
Ну, кроме GIL разве что.> Впрочем, иногда и загрузить подготовить данные есть большая проблема.
?
> Популярность питона для меня большая загадка, очевидно спустили эту каку с верху.
Вы сами-то на нем писали?
Но ведь пишут.
Я сам не понимаю почему, но видимо процессорное время стало настолько дешевым, что пишут.Для примера - первое в мире изображение черной дыры (де-факто расчет каким оно должно быть, чтобы видидый результат был именно такой, как мы видим - и это большая числодробилка) написано на питоне. Код даже на гитхаб выложен.
> как мы видим - и это большая числодробилка) написано на питоне. Код даже
> на гитхаб выложен.И numpy/scipy/scikit в зависимостях, ага.
1. Python изначально применялся как язык прототипирования. На нем быстро ученые, но не особо углубленные в IT, могли что-то налабать для проверки идей. Смотрели на небольших данных - если было нормально, то для серьезных нагрузок переписывали на Fortran или С/C++.
2. С другой стороны Python - это "клей" для склейки разных программ и либ, в том числе написанных на Fortran или С/C++. Задача Python здесь - обеспечить быстрый GUI, подготовить, очистить данные и передать им нативным либам. Поэтому правильно говорить, что на чистом Python ничего особо дельного не напишешь, но на Python с его окружением из нативных либ, типа NumPy, ScyPy, Pandas e.t.c вполне можно наваять проект средней руки.
Именно.
Питоном, в основном, обмазывают фортрановские либы...
Старые деды ничего поновее не осилили ?)))
> FARвантузоид что ли? все понятно
То ли дело аноним с Опеннета! Уж он-то огого! Не то, что какой-то там профессоришка.
Ты вначале хотя бы чисто для прикола поступи в вуз, чтобы сформировать свое мнение об этих самых "наставниках в универе", прежде чем петь им дифирамбы и называть "профессорами".
Странно, мне попались отличные преподаватели. Может, дело в том, что и сам не отлынивал?
Отличные преподователи по богословию?
> Странно, мне попались отличные преподаватели.Вы же, вроде, младоземельный креационист? Семь тыщ лет, Ноев потоп, вот это вот все.
Результат - говорит против того, что они отличные преподаватели.
вот уж действительно очевидно, да так, что и не открестится.
Мне тоже.
Мой препод по кристаллам меня научил лиспу и символьным вычислениям на редьюсе. Это уже потом я узнал про мейпл и иже с ним.
> Ты вначале хотя бы чисто для прикола поступи в вуз, чтобы сформировать
> свое мнение об этих самых "наставниках в универе", прежде чем петь им дифирамбы и называть "профессорами".Оу.
В смысле, у анонима есть значительный вклад в теоретическую и практическую часть pypy-JIT?
А может, тулзы или подходы созданные с его участием, применяли в Siemens, Systerel и AeS Group для спецификации моделей железнодорожных сигнальных систем и управления поездами? Или в исследовательских группах Fujitsu, Hitachi и Toshiba (наравне с SPIN и VDM+)?
Круто!
Или ... как обычно, у анонима есть только Ценнейшее Мнение?
> Наставник в универе
> ему требовались только FAR и Fortran
> есть значительный вклад в теоретическую и практическую часть pypy-JIT
> ему требовались только FAR и Fortran
> применяли в Siemens, Systerel и AeS Group
> ему требовались только FAR и FortranНичего себе, какой необыкновенный "наставник в универе"! И танцует, и поет, все на свете он умеет. И все это с одним лишь FAR.exe!
А ты думал.
>>> поступи в вуз, чтобы сформировать свое мнение об этих самых "наставниках в универе", прежде чем петь им дифирамбы и называть "профессорами".
>> Наставник в универе
>> ему требовались только FAR и Fortran
>> есть значительный вклад в теоретическую и практическую часть pypy-JIT
>> ему требовались только FAR и Fortran
>> применяли в Siemens, Systerel и AeS Group
>> ему требовались только FAR и Fortran
> Ничего себе, какой необыкновенный "наставник в универе"! И танцует, и поет, все на свете он умеет. И все это с одним лишь FAR.exe!Как ты ловко передернул и съехал с темы, "сыпанув" минусиками в качестве "убойнейшего" аргумента!
Ничего себе! Настоящий аноним!А ведь это даже не из "илитного" ВУЗа было - посмотрел, где-то 400ое место в "мировом рейтинге" на тот момент. И все - презренные маководы и вантузоиды, не то что элитные анонимы опеннета!
Зачем порвался?> Как ты ловко передернул и съехал с темы
Как я ловко съехал с темы "pypy-JIT/AeS Group", обсуждая вантузоида "наставника в универе". Вот ведь я, а?! Как мне не стыдно! Ведь "pypy-JIT/Siemens" имеет прямое (прямейшее!!111) отношение к вантузоиду-"наставнику"!
> Зачем порвался?Ох, какой аргументативный аргумент! Или это был внутренний монолог?
Так или иначе, я (почти) впечатлен!>>> Ты вначале хотя бы чисто для прикола поступи в вуз, чтобы сформировать свое мнение об этих самых "наставниках в универе", прежде чем петь им дифирамбы и называть "профессорами".
> Как я ловко съехал с темы "pypy-JIT/AeS Group", обсуждая вантузоида "наставника в универе". Вот ведь я, а?! Как мне не стыдно! Ведь "pypy-JIT/Siemens" имеет прямое (прямейшее!!111) отношение к вантузоиду-"наставнику"!Конечно имеет - правда для этого нужно было все же немного интересоваться, чем еще там занимаются "наставники в универе", а не разворачиваться и уходить, едва увидев логотип яблока или окошка (ну и не путать ПТУ с ВУЗом).
Рад, что ты это наконец признал, хоть и как-то слишком уж экспрессивно.
Но ничего, я все понимаю, иногда бывает так трудно признавать ошибки.
Ты молодец! Обращайся еще, если что.
Так и в чем проблема конкретно с фар.икс, равно как и с видной ?
Да нет проблемы, просто газы у человека.
Ого, сколько минусов накидал :)) Сразу видно - знатно бомбануло.
Вы анонима фундаментальным вкладом в питончик пугаете?Я так смотрю скоро бейсик некоторые начнут открывать и джиты к нему пилить.
Впрочем неуспеют. Конец света раньше случится.
> Вы анонима фундаментальным вкладом в питончик пугаете?
> Я так смотрю скоро бейсик некоторые начнут открывать и джиты к нему пилить.
> Впрочем неуспеют. Конец света раньше случится.Однако, какая изящная формулировка "... и как обычно, у (очередного) анонима есть только Ценнейшее Мнение"!
Или очередной, храбрый аноним сможет продемонстрировать, помимо пустословия, что-то свое, что не смог "побить" ни Dropbox, ни Google ни (кто там пилил Numba с нуиткой)?ЗЫ:
Ясно. Все "как обычно".
У вас желчь русский язык сломала.
Остыньте.
> Ты вначале хотя бы чисто для прикола поступи в вуз, чтобы сформировать
> свое мнение об этих самых "наставниках в универе", прежде чем петь
> им дифирамбы и называть "профессорами".Что, двойками обижали, да? Ну, бывает...
Вы зря так вольно вакансии в университете раздаёте.
Я не жадный :D
кстати пилится форк far2l
Так то фар и под линукс есть
есть. но он - го****** :-(
А вот https://habr.com/ru/post/524370/ и нет.
* Заявленное — работает (и собирается для моих десктопов /openSUSE/).
"Уронить" пока ни разу не удалось, несмотря на то что alpha.
Уф, я уж подумал OpenMW в релиз вышел.
> стандартов C11, C18, C++11, C++14, C++17 и C++20Вот же зоопарк нагородили...
Смузихлебы дорвались до комитета - сначала делают, потом думают.
Да сейчас вообще какая-то тенденция наплодить как можно больше несовместимого.
С++ никогда небыл хорош.
То ли дело rust
Какой, нафиг, зоопарк? Эти стандарты последовательны, а не параллельны.
И этот последовательный зоопарк приходится поддерживать параллельно...
Теперь это не так
какой стандарт лучше взять за основу для изучения если на плюсах не писал больше 10 лет?
С++22
Лучше и не начинать вовсе...
14й - поправлены основные проблемы 11 (который мастхев), в 17 ничего принципиального не добавилось - при нужде на ходу подтянете. 20 прекрасен, но реальное распространение ещё не получил
haskell 2010 - завидуйте молча :)
> для языков Си, Си++ и ФортранРаст на подобное не способен?! Даже Фортран и то лучше оказался.
В раст поддержка параллельных вычислений встроена в сам язык, а в дырявых сишечках и фортранчиках приходится всякие костыли городить.
> В раст поддержка параллельных вычислений встроена в сам языкИ чё, прям с матрицами научили лучше фортрана работать? :)
> а в дырявых сишечках и фортранчиках приходится всякие костыли городить.
Вам что-то говорит слово "банк" применительно к этой теме?
А то вдруг нет.
Эм. Вам слово coarrays о чем-нибудь говорит?
Фортран отличный яп.
Что вы там фантазируете себе.
Фортран очень хорош для реализации численых методов где требуется очень высокая точность.Зачем физиков, химиков, биология учат в универе Паскаль?
Придя в научные институты они со своим игрушечьным Паскалем не могут решить задач с произвольной (очень большой) точностью, а если решают то медленно костыльно. И все все равно потом с Паскаля перучиваются на Фортран или С.
Они и не решают :)
А если решают, то на листе и с калькулятором или с применением какого-либо специального ПО.В случае с физиками( скорее просто технарями ) итп нередко применяется матлаб и его подобия, всякое разное спец ПО для инженерных и проч расчетов, но фортран..
Но кстати, так до сих пор загадкой и остаётся: почему вместо паскаля хотя бы Сям не учить, зачем обучать заведомо и безвозвратно устаревшему мусору..
Предлагать C в качестве первого языка - весьма изощрённое издевательство над первокурами)
В моей школе был Паскаль, а в соседней учили C.
Значит в соседней школе одни дураки.
В качестве первого языка отлично подходит JavaScript или питон. Во-первых, интерпретируемый. Это значит можно играться в repl. Во-вторых, нет пляски вприсядку со сборочной системой. В третьих, используется в ИНДУСтрии - есть вакансии. JavaScript подходит лучше - он уже с jit, установлен на каждом компе из коробки, имеет стандартизированную стандартную библиотеку для рендеринга GUI, доступа к камере, микрофону, акселерометрам и GPU, ограниченную стандартизированными же разрешениями, а питон надо пользователя убеждать ставить, да потом уже убеждать запустить вашу программу, а для этого убеждать, что она невредоносна.
Не подходят.
Они учат как ненужно программировать.
Разве не лучший ящык в еачестве первого?!
(гребаная телефонная клавиатура)
Паскаль внезаптно современный язык, и ступенька к Аде.Обучают потому что учит хорошему стилю структурного программирования.
А о сях помоему хватит уже шутить, у мертвого коня есть свои лимиты.
> А о сях помоему хватит уже шутить, у мертвого коня есть свои
> лимиты.На сях и плюсАх нынче пишут чуть менее, чем все прошивки для микроконтроллеров( за исключением асма и совсем упоротых ), на сях обучаются основам проги и его без проблем можно скомпилить практически под любую платформу.
В качестве «эталона» производительности обычно применяется сишный код и компиляторНу а с паскалем что ?
Зачем фактического и никому ненужного трупа лишний раз тревожить ?
У сабжа был шанс во времена эмбаркадеро, но, похоже, у паскаля судьба такая - любой кто с ним свяжется, подчистУю провалится с ним по прошествии нескольких лет.
Прошивки пишут на сиподобных языках, а не сях.
Нет, сихи не кросплатформенные. Переносить код даже внутри одного семейства ЦП бывает проблемой.
При кричащей простоте языка компиляторы переусложненные в попытке решить ключевые и нерешаемые недостатки.
Синтаксис - просто бредовый.Как инструмент си как бы живы.
Как язык - от коня остался один скелет.
>любой кто с ним свяжется, подчистУю провалится с ним по прошествии нескольких лет.Тотал Коммандер живее всех живых, как и многие другие успешные проекты.
А Delphi все еще продается за деньги.
>Паскаль внезаптно современный язык, и ступенька к Аде.Да ладно, и без Ады все неплохо
Краткое введение в современный Object Pascal для программистов
https://castle-engine.io/modern_pascal_introduction_russian....а вот один из вариантов параллельности
https://wiki.freepascal.org/Parallel_procedures/ru
program Test;
{$mode objfpc}{$H+}
uses {$IFDEF UNIX} cthreads, cmem, {$ENDIF} MTProcs;
// простая параллельная процедура
procedure DoSomethingParallel(Index: PtrInt; Data: Pointer; Item: TMultiThreadProcItem);
var
i: Integer;
begin
writeln(Index);
for i:=1 to Index*1000000 do ; // делаем некую работу
end;begin
ProcThreadPool.DoParallel(@DoSomethingParallel,1,5,nil); // адрес, стартовый индекс, конечный индекс, дополнительные данные
end.
Смотря что, где и кто. Пишут на фольтранах свой спец софт с нуля.
> Смотря что, где и кто. Пишут на фольтранах свой спец софт с
> нуля.Примеры бы в студию и, желательно, более одного
> Зачем физиков, химиков, биология учат в универе Паскаль?Не знаю, как сейчас, а в самом начале 90-х паскалем мучили в средней школе на информатике. Может, это была инициатива повернутого на паскале информатика-совместителя. Кому программировать было интересно, забили болтЪ на паскаль и сами выучили C и фортран, компиляторы были.
В институте на первом курсе было введение в программирование уже на PC. Показали C за пару занятий, потом упражняйтесь как хотите.
На вычматах/вычфизах про язык даже не упоминали. Народ писал в основном на C.
>задач с произвольной (очень большой) точностью,Это конечно нужно очень редко, но проблемы тут нет (кроме неумения пользоваться гуглом конечно)
FreePascal и длинные числа. Часть 1. Библиотека GNU Multiple Precision Arithmetic (GMP)
http://www.freepascal.ru/article/freepascal/20190411080000/The MPArith package contains Pascal/Delphi source for multi precision integer, rational, real and complex floating point arithmetic and functions
https://github.com/moe123/www.wolfgang-ehrhardt.de/blob/mast...
Не вижу твоего комментария на английском. Чё, английский на подобное не способен? Логика же.
> Си, Си++ и Фортран на многоядерных и гибридных системах"...и грибовидных системах"
На грибовидных им самое место. Передай им кто-нибудь, чтобы оставили многоядерные в покое.
Шо с тобой?
Он курнул.
> директива "unroll" для частичного разматывания циклаВ документации МЦСТ эта операция зовётся "раскрутка цикла": http://ftp.altlinux.org/pub/people/mike/elbrus/docs/elbrus_p...
Благозвучней и, возможно, так называется действительно давно (могу уточнить в офисе™).
Ну и до кучи: http://altlinux.org/эльбрус/словарик :)
Шигорин. У меня к вам лично совет - поставьте себе HTTPS Everywhere в браузер. И включите EASE.
Разворачивание ?
А как быть с раскруткой стека (вызовов, при исключении)? Вот где действительно может быть понакручено.
А когда С++ станент единственным языком?
Когда прекратят стругать стандарты каждый год.
Растоманы по нескольку раз в год настругивают и ничего, растопипл хавает.
Лет 20 назад ему было лет 5 до этого
Лет 15 назад ему было лет 10 до этого
Лет 10 назад ему стало лет 15 до этогоЛет 5 назад ему стало бесконечно далеко до этого, поскольку своё окно возможностей он прошляпил и всё больше усложняется. Сейчас, глядя на новомодные стандарты, уже вообще ничего конкретного о нем сказать нельзя - просто неведомая мешанина взглядов и подходов к разработке и организации кода. И это на фон появления множества более простых и выразительных ЯП
Простые и выразительные ЯП просто и выразительно решают задачи написания хелловорлдов. Когда дело заходит дальше хелловорлдов, эти ЯП становятся сложными и невыразительными. Язык упрощается, а не усложняется -- то, что раньше решалось через SFINAE и сложную логику на шаблонах, теперь легко и просто пишется на концептах и constexpr.
Если хеллоуворды - это максимум, сверх которого требуется более «мощный» ЯП, то такому человеку в принципе не место среди программистов.
Я как-то видел сайт с серверной частью на плюсах( притом он генерировал html, отдаваемый клиенту ).. такого мусорного и глючного говнокогда я больше не видел нигде и ни на чем( а ведь приходилось сталкиваться с кодом, написанным и китайцами и индийцами ).Говорят, в гумманитарке таких берут - у них как раз безмерная мешанина, которую «просто надо знать».
ПлюсЫ уже давно наравне с джавой - нифига не простые, нифига не выразительные, нифига не «переносимые» и кроссплатформенные
Кстати, похожий опыт имел недавно с одним опенсорс проектом на гитхабе.
Написано не просто ужасно, а проигнорированы самые базовые правила приличия.
> Если хеллоуворды - это максимум, сверх которого требуется более «мощный» ЯП, то такому человеку в принципе не место среди программистов.Зачем нужны "простые и выразительные" языки, на которых простые и выразительные только хелловорлды?
> Я как-то видел сайт с серверной частью на плюсах( притом он генерировал
> html, отдаваемый клиенту ).. такого мусорного и глючного говнокогда я больше
> не видел нигде и ни на чем( а ведь приходилось сталкиваться
> с кодом, написанным и китайцами и индийцами ).Вы по одному криво написанному проекту судите об языке? Удачи вам.
> ПлюсЫ уже давно наравне с джавой - нифига не простые, нифига не
> выразительные, нифига не «переносимые» и кроссплатформенныеПлюсы нельзя ставить в один ряд с джавой, они кардинально отличаются по выразительным способностям и назначению.
>нифига не выразительные
Концепты, которые можно выразить в плюсах, нельзя выразить больше нигде. Только Idris подбирается близко, но и он тащит метаинформацию в рантайм.
>нифига не «переносимые» и кроссплатформенные
Это бред. Компиляторы С/С++ охватывают больше платформ, чем компиляторы любого другого языка.
> Зачем нужны "простые и выразительные" языки, на которых простые и выразительные только
> хелловорлды?Так в том и дело, что у криворуких и кривоголовых на любом ЯП дальше хеллоуворда не пойдет
Тут не в языке, а в "программисте" дело> Вы по одному криво написанному проекту судите об языке? Удачи вам.
Спасибо, но оставьте ее себе. Судя по комментам, она вам еще очень понадобится
> Плюсы нельзя ставить в один ряд с джавой, они кардинально отличаются по
> выразительным способностям и назначению.Отчасти нельзя, отчасти - можно.
По большому счету, это два древних и эпически громоздких полудинозавра-полумутанта с общей тенденцией на дальнейшее усложнение посредством заваливания фичами и усложнения семантики.> Концепты, которые можно выразить в плюсах, нельзя выразить больше нигде. Только Idris
> подбирается близко, но и он тащит метаинформацию в рантайм.Зачем их "выражать", когда можно обойтись без них ? Проще надо быть и не порождать тонн г.на на ровном месте.
По большому счету, именно плюсЫ реально требуются максимум для каждого сотого проекта, где они применяются.
И это максимум.> Это бред. Компиляторы С/С++ охватывают больше платформ, чем компиляторы любого другого
> языка.Ну-ну. Только далеко не все сишные проекты компилятся всеми сишными компиляторами ввиду каких-то специфичных вещей :)))
А так - доооооооо, охваатывают :)
С вашего позволения процитирую вам ваши аргументы.>С++ плохой язык потому, что я видел плохо написанный проект на С++
>С++ плохой язык потому, что много проектов на С++ можно написать не на С++
>С++ не кроссплатформенный, потому что на нем можно написать некроссплатформенную программу
>Программы на С++ не кроссплатформенные, потому что не все программы на С++ можно скомпилировать на любом компиляторе С++
>Зачем давать компилятору дополнительную метаинформацию о программе, когда можно не давать, а держать ее в головеПожалуйста, наносите грим и не забывайте надевать красный нос в следующий раз, люди не сразу понимают, что вы клоун.
Си и плюсы плохи, потому что там можно и легко можно сделать плохо. Их стандарты чрезвычайно обширны и при этом рыхлые -- не имеют явного строго концепта. Да, при этом Си чрезвычайно выразительный язык и, в общем-то, стройный логичный язык.
> Концепты, которые можно выразить в плюсах, нельзя выразить больше нигде.Угу. При этом, по какой-то случайности "концепты" очень смахивают (хоть и не дотягивают) на то, что в остальном мире лет 30 известно как "refinement type". И для проверки которых не помешает не самый плохой SMT вычислитель, тот же z3 для F* или alt-ergo для Frama-C запросто тянут на пару сотен мб.
> Только Idris подбирается близко, но и он тащит метаинформацию в рантайм.
Вообще-то, в Idris, емнип, зависимые типы (dependent type). Они способны отобразить в _типе_ такие вещи как:
Vect n -> Vect m -> Vect (n + m)
"длина результата объединения двух векторов равна сумме длин объединяемых" -- и правда, куда там до концептов 🙄 ...
>[оверквотинг удален]
> дотягивают) на то, что в остальном мире лет 30 известно как
> "refinement type". И для проверки которых не помешает не самый плохой
> SMT вычислитель, тот же z3 для F* или alt-ergo для Frama-C
> запросто тянут на пару сотен мб.Концепты это не refinement types, хотя и позволяют реализовать их. Концепты являются более мощным инструментом, так как, в отличие от refinement types, которые (в Idris и Liquid Haskell, во всяком случае) способны оперировать лишь валидными с точки зрения языка конструкциями, концепты еще и отвечают на вопрос "скомпилируется ли это выражение".
>> Только Idris подбирается близко, но и он тащит метаинформацию в рантайм.
> Вообще-то, в Idris, емнип, зависимые типы (dependent type). Они способны отобразить в
> _типе_ такие вещи как:
> Vect n -> Vect m -> Vect (n + m)
> "длина результата объединения двух векторов равна сумме длин объединяемых" -- и правда,
> куда там до концептов 🙄 ...Молодой человек, dependent types в плюсах существуют с появления темплейтов. Ваш пример выражается не так красиво, но с сохранением всех свойств:
```
template <size_t N>
struct Vect {
template <size_t M>
Vect<N + M> operator+ (Vect<M>) { ... }
}
```
Никогда. И не должен, как и любой другой язык
Честно говоря, сама концепция OpenMP - так сказать, местечковый параллелизм - слишком ограничена и потому малоприменима на практике. Ну разве что вся работа программы сводится к одному циклу. Наверно, для чистых числодробилок подойдет, хотя и то не факт, что чистые потоки или job-based архитектура не будут более эффективны даже в этом кейсе. Просто удивляюсь, зачем до сих пор тащат этот подход вместо стандартизации job server'а, например.
OpenMP обычный tasklevel параллелизм. И он точно такой же много где. https://en.wikipedia.org/wiki/Task_parallelism Ничего другого не придумали. А про ваш "job server" параллелизм литература ничего не знает. Подтягивайте ваши знания, чтобы выражаться стандартными определениями.
Нет, OpenMP используется для распараллеливания определенного блока кода, например, цикла. Т.е. условно говоря, при входе в цикл потоки создались, при выходе - завершились (joined). Это можно сделать на базе job-сервера (или task-level параллелизма, как вам угодно), но во-первых, это не меняет сути (весь параллелизм должен закончиться при выходе из блока), а во-вторых, не все компиляторы реализуют job-сервер и по факту именно что стартуют и тормозят потоки (например, gcc).Суть в том, что просто распараллелить блок кода - не такая уж распространенная задача на практике. Чаще нужно что-то запустить на исполнение и дальше заниматься своими делами. Эта задача не решается OpenMP.
> Нет, OpenMP используется для распараллеливания определенного блока кода, например, цикла.
> Т.е. условно говоря, при входе в цикл потоки создались, при выходе
> - завершились (joined). Это можно сделать на базе job-сервера (или task-level
> параллелизма, как вам угодно), но во-первых, это не меняет сути (весь
> параллелизм должен закончиться при выходе из блока), а во-вторых, не все
> компиляторы реализуют job-сервер и по факту именно что стартуют и тормозят
> потоки (например, gcc).
> Суть в том, что просто распараллелить блок кода - не такая уж
> распространенная задача на практике. Чаще нужно что-то запустить на исполнение и
> дальше заниматься своими делами. Эта задача не решается OpenMP.Нет конечно, всё не так. OpenMP создаёт потоки один раз, и потом просто даёт им задачи. Запустить что-то на исполнение и дальше заниматься своими делами тоже решается на OpenMP. Я же говорю, ты просто не читал ничего про OpenMP.
> Нет конечно, всё не так. OpenMP создаёт потоки один раз, и потом просто даёт им задачи. Запустить что-то на исполнение и дальше заниматься своими делами тоже решается на OpenMP. Я же говорю, ты просто не читал ничего про OpenMP.И читал, и использовал. Поэтому и говорю.
Учитывая, что у абсолютного большинства пользователей вполне себе OpenMP-ready многоядерный процессор, а распараллеливание с помощью OpenMP технически _очень_ простое для автора программы -- почему бы и нет?
Правильно OpenMP для пользователей и пользовательского прикладного ПО.Для науки и крутых вычислений есть MPI.
> Правильно OpenMP для пользователей и пользовательского прикладного ПО.Научное и вычислительное ПО -- такое же пользовательское и прикладное.
> Для науки и крутых вычислений есть MPI.
Интересно, почему разработчики научного ПО считают иначе?
Если в программе уже есть явная многопоточность (job-сервер, IO, явное использование потоков), которая нужна для других задач, то использование OpenMP для местечкового распараллеливания не имеет смысла. Зачем плодить потоки и добавлять еще одну технологию, когда можно реиспользовать то, что уже есть и работает?Вот и получается, что OpenMP не нужен за исключением случая, когда вся программа - тупая числодробилка и ничем другим не занимается.
> Зачем плодить потоки и добавлять еще одну технологию,
> когда можно реиспользовать то, что уже есть и работает?Например затем, чтобы не организовывать обмен и разделение данными между такими же потоками, а использовать общую память.
> Вот и получается, что OpenMP не нужен за исключением случая, когда вся
> программа - тупая числодробилка и ничем другим не занимается.Определите "тупая числодробилка".
> Например затем, чтобы не организовывать обмен и разделение данными между такими же потоками, а использовать общую память.Во-первых, OpenMP не освобождает от необходимости синхронизации потоков при доступе к общим данным. Во-вторых, синхронизацию можно минимизировать, независимо от того, используете ли вы потоки, job-server или OpenMP. Собственно, последний в этом плане ничего принципиально нового не предлагает.
> Во-первых, OpenMP не освобождает от необходимости синхронизации потоков при доступе к общим
> данным.Да. А вот от необходимости реализовывать обмен данными между процессами освобождает.
> Во-вторых, синхронизацию можно минимизировать, независимо от того, используете
> ли вы потоки, job-server или OpenMP. Собственно, последний в этом плане
> ничего принципиально нового не предлагает.Удобство использования, и особенно удобство распараллеливания уже существующего кода.
Идеально, конечно, перейти на комассивы и вообще не думать, как там оно под капотом устроено. Но считать надо уже здесь и сейчас.
Чем оно лучше потоков thread из стандарта чистого Си - 2011 года?
Абсолютно ничем, кроме синтаксического сахара.
Умеет в DSP, GPU OpenCL.
Ээ-э погоди. DSP - это железяная архитектура. GPU OpenCL - это высокоуровневая библиотека.
Скорей всего речь идет о том, что конфигурацию "счетных" узлов в кластере вы делаете силами OpenMP один раз, а далее любые программы просто пользуются стандартизированным API. Не надо самому создавать под каждую неизвестно кем сконфигурированную систему код, отвечающий за параллельный расчет.
> После двух лет разработки опубликован набор спецификаций OpenMP 5.1И много они там на нём напрограммировали?
Как на расте в Мозиле - с гулькин хер
Если Онаним за день не кукарекнул про Rust, жизнь проходит зря.
Ну что, молодцы, хорошая штука.