Михаил Ильин ([info]yorool_gui) wrote,
@ 2008-07-03 17:32:00
Previous Entry  Add to memories!  Tell a Friend!  Next Entry
Intel советует приготовиться к появлению процессоров с тысячами ядер
http://hard.compulenta.ru/361936/
via [info]perikov

Вот тогда-то Haskell и выстрелит по настоящему.


(Post a new comment)


[info]unreal_undead
2008-07-03 02:21 pm UTC (link)
Что-то на суперкомпьютерном фронте (где тысячи процессоров - дело уже давно обычное) стрельбы не видно...

(Reply to this)(Thread)


[info]growler
2008-07-03 02:31 pm UTC (link)
Стоимость (разработка) софта должна быть сопоставима со стоимостью железа.

(Reply to this)(Parent)(Thread)


[info]unreal_undead
2008-07-03 02:48 pm UTC (link)
Согласен, но не уверен, что хаскель даст подходящий price/performance. Собственно, идея о том, что функциональщина для параллельного программирования - это чуть ли не silver bullet, весьма стара, но пока оно как-то далеко от народа. Симпатичные идеи (типа lenient evaluation в MITовском параллельном хаскеле) есть, а вот практических результатов не видно.

(Reply to this)(Parent)(Thread)


[info]growler
2008-07-03 02:54 pm UTC (link)
Практические результаты.

(то, что там не хаскел, роли не играет. в нынешнем мейнстриме тоже больше одного языка)

(Reply to this)(Parent)(Thread)


[info]unreal_undead
2008-07-03 03:12 pm UTC (link)
Erlang - это несколько другая тема. Там явный message passing параллелизм, использовать который удобно, когда задача исходно параллельна (какой-нибудь сервер с множеством клиентов - собственно, туда его изначально и нацеливали). Согласен, что это хороший шаг вперёд по сравнению, скажем, с MPI в каком-нибудь C/Фортране - код пишется быстрее и получается надёжнее. Правда, вопрос производительности остаётся (что-то не вижу в приведённой статье чисел на эту тему).
В обычных десктопных приложениях, однако, такого множества независимых задач обычно не набирается. Так что хочется подсунуть машине алгоритм и получить параллельный код с минимумом усилий. И тут начинаются размышления по поводу того, что в чисто функциональном языке компьютер сам видит, какие вычисления независимы, что от lazy evaluation в хаскеле недалеко до lenient и т.д. Хотя сейчас всё вроде поскромнее - когда последний раз смотрел на параллельные разработки в GHC, оно таки хотело явного указания параллельных регионов; опять же, тестов производительности не видел.

(Reply to this)(Parent)(Thread)


[info]growler
2008-07-03 03:28 pm UTC (link)
Вы либо из науки, либо из параллельного мира.

C++ может быть 50 раз быстрее Эрланга, и в 20 раз быстрее Хаскеля.

Но на Эрланге можно писать высокопараллельные программы в три (ну, чтобы число было правдоподобное) раза быстрее, чем на C++, и поэтому для бытовых машин с тысячью ядер будут писать на Эрланге, Скале, Хаскеле, F# и даже на ECMAScript 4 -- на всем, что органично реализует share-nothing модель и message passing прямо в языке.

И это хорошо.

(Reply to this)(Parent)(Thread)


[info]lionet
2008-07-03 03:50 pm UTC (link)
Эрланг может быть даже быстрее C++. Всё от задачи зависит.

(Reply to this)(Parent)


[info]unreal_undead
2008-07-04 06:46 am UTC (link)
Как раз таки shootout - ни разу не real-life тест, интересно было бы посмотреть на что-нибудь реальное типа видео кодека. Опять же, есть ли в этом shooutout параллельные тесты? А то не факт, что написанная (хоть и в три раза быстрее), параллельная программа будет быстрее последовательной.

(Reply to this)(Parent)


[info]blacklion
2008-07-03 03:44 pm UTC (link)
Далеко не все задачи ложатся на модель erlang — без shared manager.

(Reply to this)(Parent)


[info]growler
2008-07-03 03:05 pm UTC (link)
Любимая цитата:

"It seemed at the time that people disliked the idea that the effect could be due to having a better programming language, preferring to believe that it was due to some “smart programmer effect.” Eventually we downgraded the factor to a mere 3 because is sounded more credible than 8. The factor 3 was totally arbitrary, chosen to be sufficiently high to be impressive and sufficiently low to be believable. In any case, it was significantly greater than one, no matter how you measured and no matter how you explained the facts away."

(Reply to this)(Parent)


[info]yorool_gui
2008-07-03 02:41 pm UTC (link)
Суперкомпьютеры == числодробилки. Там и фортран себя неплохо чувствует, и C со всякими там распараллеливающими расширениями. Но это все не для прикладных программ.

Haskell же уже сейчас готов для использования в любой практически прикладной области. Мешает только сложность освоения. Но если эта сложность будет реально окупаться повышением быстродействия, возможно дело пойдет.

(Reply to this)(Parent)(Thread)


[info]unreal_undead
2008-07-03 02:50 pm UTC (link)
Вот насчёт повышения быстродействия на реальных задачах и есть сомнения.

(Reply to this)(Parent)


[info]1ceheart
2008-07-04 08:23 am UTC (link)
Ну, вообще-то на ФП свет клином не сошелся. Есть же FPGA, которые можно рассматривать в пределе как процессор с бесконечным (ну, ограниченным емкостью) количеством ядер, и люди очень давно и успешно под них пишут без всякого ФП - на VHDL и подобном. По уровню абстракции, конечно, это не очень далеко ушло от асма, но, тем не менее, это показывает возможность создания чисто императивного языка с эффективным автоматическим распараллеливанием, причем гораздо более простого, чем хаскель etc.

(Reply to this)(Parent)


[info]asd
2008-07-03 03:28 pm UTC (link)
Всё хорошо в хаскеле, но синтаксис... — отрыв башки просто.

(Reply to this)(Thread)


[info]alpha_cygnus
2008-07-04 08:17 am UTC (link)
Хм... Вот как раз что мне чуть ли не больше всего в Хаскеле нравится - это синтаксис...

(Reply to this)(Parent)


[info]lionet
2008-07-03 04:19 pm UTC (link)
посмотри презентацию Bryan O’Sullivan’s на http://www.bayfp.org/blog/

он там говорит что пока можно забить на автораспараллеливание в хаскеле.

(Reply to this)(Thread)


[info]yorool_gui
2008-07-04 08:03 am UTC (link)
Я его английский с большим трудом понимаю, но из того, что я понял, ключевое слово здесь "пока".
Т.е. просто чистый хаскельный код хрен распараллелишь нормально, как туда 'par' не втыкай. Зато за счет чистоты этот код можно всячески преобразовывать и получить в итоге то, что уже параллелится хорошо. И вроде что-то у них уже получается.
Так что если реально в мейтстрим будут выходить очень многоядерные камни, эти работы тоже активизируются.

(Reply to this)(Parent)(Thread)


[info]lionet
2008-07-04 02:27 pm UTC (link)
вкратце: там обнаружились теоретические грабли, из-за которых можно забить на автораспараллеливание, кроме как на ограниченном классе задач.

(Reply to this)(Parent)


Create an Account
Forgot your login?
Login w/ OpenID
English • Español • Deutsch • Русский…