Одновременно на слэшдоте и LtU выложили ссылку на довольно обширное интервью с Саймоном Пейтоном Джоунсом, в нём он, конечно, рассказывает о хаскеле и ещё упоминает про текущие свои работы посвещённые "nested data parallelism", который должен программу, которую просто написать, трансформировать в программу, которую просто выполнить (дословно: "transforms from a program that’s easy to write into a program that’s easy to run").
Здравствуйте, Курилка, Вы писали:
К>ещё упоминает про текущие свои работы посвещённые "nested data parallelism",
Есть видео с London HUG посвященное как раз этому самому nested parallelism.
Сам пока еще не смотрел, так что в случае чего ногами не бить
Здравствуйте, Mirrorer, Вы писали:
M>Здравствуйте, Курилка, Вы писали:
К>>ещё упоминает про текущие свои работы посвещённые "nested data parallelism", M>Есть видео с London HUG посвященное как раз этому самому nested parallelism. M>Сам пока еще не смотрел, так что в случае чего ногами не бить
Спасиб, заценим, хотя вроде ещё даж прототипа толкового нет...
Здравствуйте, Mirrorer, Вы писали:
M>Здравствуйте, Курилка, Вы писали:
К>>ещё упоминает про текущие свои работы посвещённые "nested data parallelism", M>Есть видео с London HUG посвященное как раз этому самому nested parallelism. M>Сам пока еще не смотрел, так что в случае чего ногами не бить
А фишка оказывается в идеях языка NESL
Правда у меня вопрос: насколько это востребовано?
Понятно, что симуляции ядерных взрывов, обсчёт рынка — это варианты, но для "обычных смертных"?
Здравствуйте, Курилка, Вы писали: К>Правда у меня вопрос: насколько это востребовано? К>Понятно, что симуляции ядерных взрывов, обсчёт рынка — это варианты, но для "обычных смертных"?
Есть такое подозрение что дай обычному смертному 32 ядра, он врядли сможет выжать из них 8-краное укорение на всяческих мьютексах. А ежели 128 ? А 1024 ?
Суть вообще какая. Как нам рассказывали в институте проблема в чем.
Допустим у нас есть необходимость сложить 16 чисел
ну типа
1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16
За сколько тактов минимум это можно сделать ?
Если у нас имеется 8 процессоров (время пересылки данных для простоты не учитываем)
1-й такт
1 + 2 = 3 на 1-м процессоре
3 + 4 = 7 на 2-м процессоре
5 + 6 = 11 на 3-м процессоре
7 + 8 = 15 на 4-м процессоре
9 + 10 = 19 на 5-м процессоре
11 + 12 = 23 на 6-м процессоре
13 + 14 = 27 на 7-м процессоре
15 + 16 = 31 на 8-м процессоре
2-й такт
3 + 7 = 10 на 1-м процессоре
11 + 15 = 26 на 3-м процессоре
19 + 23 = 42 на 5-м процессоре
27 + 31 = 56 на 7-м процессоре
3-й такт
10 + 26 = 36 на 1-м процессоре
42 + 56 = 98 на 5-м процессоре
4-й такт
36 + 98 = 134 на 1-м процессоре
Итого, посчитаем выгоду от распараллеливания.
Очевидно, что на 1 процессоре это заняло бы 15 тактов
А на 8 ? — 4
Посчитаем коэффициент ускорения.
15 / 4 = 3.75
Оказывается он нихрена не линейный даже для такой простой операции как сложение.
При этом.
1) Мы не учитывали время пересылки данных между процессорами
2) У нас была гомогенная система (процессоры однотипные, все связанные между собой)
Если учесть эти вещи то процесс распараллеливания становится несколько сложнее
Но это еще не все.
У нас может быть гетерогенная система
В ней могут быть SIMD процесоры(single-instruction multiple-data, привет, J!) которые могут за 1 такт сложить 8 чисел допустим
И их как-то надо кооперировать с процессорами которые SISD (single instruction single-data)
У нас может быть топология сложнее чем 1-1. допустим там гиперкуб или кольцо. Я не верю в полносвязную систему для 1024 процессоров.
А это значит что задержки при пересылки данных совсем не константа и их тоже кто-то должен учитывать. ОС или компилятор, неважно.
И теперь со всей этой хренью надо попытаться взлететь. На локах и мютексах
так что движение имхо правильное. Чем больше человека абстагируют от траханья с взаимными локами тем лучше
P.S. Если чего и наврал, то не по своей воле, а от злобного коньячного-спиртового воздействия. Просьба не бить ногами, а вести спокойную цивилизованную дискусиию.
P.P.S Я понимаю, что большинству программеров мягко говоря наплевать на подобные вещи. "Этим должен заниматься планировщик ОС" или "Этим должен заниматься компилятор" вполне себе точка зрения и я это прекрасно понимаю. Но тем не менее эти задачи не решены на текущий день в общем случае. Поэтому ни компилятор, ни ОС не обеспечат максимальной производительности на большом количестве ядер. Окромя может быть Erlang-а
Здравствуйте, Mirrorer, Вы писали:
M>Здравствуйте, Курилка, Вы писали: К>>Правда у меня вопрос: насколько это востребовано? К>>Понятно, что симуляции ядерных взрывов, обсчёт рынка — это варианты, но для "обычных смертных"?
M>Есть такое подозрение что дай обычному смертному 32 ядра, он врядли сможет выжать из них 8-краное укорение на всяческих мьютексах. А ежели 128 ? А 1024 ?
M>Суть вообще какая. Как нам рассказывали в институте проблема в чем. M>Допустим у нас есть необходимость сложить 16 чисел M>ну типа M>1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16
M>За сколько тактов минимум это можно сделать ?
[cut]
Как бы я совсем другое имел в виду, хотя в чем-то, наверное, твой пример подойдёт: у тебя гранулярность задачи слишком мизерная. В итоге получится, что накладные расходы могут в лёгкую "съесть" выигрыш от параллелизации. Т.е. для вменяемого бенефита нам надо иметь некие задачи с большим числом распараллеливаемых операций, вот и вопрос — а каков процент таких массовопараллельных задач у обычного юзера?
Здравствуйте, Курилка, Вы писали:
К> каков процент таких массовопараллельных задач у обычного юзера?
Сейчас небольшой — игры и видео в основном. Но по мере появления железяк, позволяющих делать много всего параллельно, соответствующие задачи будут появляться все больше и больше. То, что сейчас никто не рискует делать, станет возможным. Ведь многие сегодняшние обыденные вещи лет 10-15 назад никто и помыслить не мог, т.е. новые задачи возникают с ростом возможностей.
Здравствуйте, D. Mon, Вы писали:
DM>Здравствуйте, Курилка, Вы писали:
К>> каков процент таких массовопараллельных задач у обычного юзера?
DM>Сейчас небольшой — игры и видео в основном. Но по мере появления железяк, позволяющих делать много всего параллельно, соответствующие задачи будут появляться все больше и больше. То, что сейчас никто не рискует делать, станет возможным. Ведь многие сегодняшние обыденные вещи лет 10-15 назад никто и помыслить не мог, т.е. новые задачи возникают с ростом возможностей.
Ну возникать-то возникают, вопрос для меня в том, будут ли это реально необходимые задачи, интересные пользователю, или же очередные рюшечки какой-нибудь "Висты"?
Просто реально наблюдаю, что довольно большой процент народа использует комп почти как печатную машинку: в ворде что напечатать, в экселе пару страничек. Т.е. такие вещи, на которые, возможно даже 286-го хватило.
И некоторым исключением является развлекательная функция (веб, игры, видео).
Так вот хочется понять — где же такие задачи (которые сильно параллелить надо) возьмутся у обычных пользователей? Или же выйдет, что покупать будут лишь потому что круто?
Здравствуйте, Курилка, Вы писали:
К>Здравствуйте, D. Mon, Вы писали:
DM>>Сейчас небольшой — игры и видео в основном. Но по мере появления железяк, позволяющих делать много всего параллельно, соответствующие задачи будут появляться все больше и больше. То, что сейчас никто не рискует делать, станет возможным. Ведь многие сегодняшние обыденные вещи лет 10-15 назад никто и помыслить не мог, т.е. новые задачи возникают с ростом возможностей.
К>Ну возникать-то возникают, вопрос для меня в том, будут ли это реально необходимые задачи, интересные пользователю, или же очередные рюшечки какой-нибудь "Висты"? К>Просто реально наблюдаю, что довольно большой процент народа использует комп почти как печатную машинку: в ворде что напечатать, в экселе пару страничек. Т.е. такие вещи, на которые, возможно даже 286-го хватило. К>И некоторым исключением является развлекательная функция (веб, игры, видео). К>Так вот хочется понять — где же такие задачи (которые сильно параллелить надо) возьмутся у обычных пользователей? Или же выйдет, что покупать будут лишь потому что круто?
Ну игры и видео востребованы на многих домашних компьютерах. А из совершенно нового может появиться что-то из области искуственного интеллекта — голосовой интерфейс, анализ текстов на естественном языке (тех же страничек в вебе), поиск изображений и пр.
Здравствуйте, Beam, Вы писали:
К>>Так вот хочется понять — где же такие задачи (которые сильно параллелить надо) возьмутся у обычных пользователей? Или же выйдет, что покупать будут лишь потому что круто?
да хотя б чтоб хаскел этот сам по себе работал не медленней c#
Здравствуйте, BulatZiganshin, Вы писали:
BZ>Здравствуйте, Beam, Вы писали:
К>>>Так вот хочется понять — где же такие задачи (которые сильно параллелить надо) возьмутся у обычных пользователей? Или же выйдет, что покупать будут лишь потому что круто?
BZ>да хотя б чтоб хаскел этот сам по себе работал не медленней c#
Здравствуйте, Курилка, Вы писали: К>>>>Так вот хочется понять — где же такие задачи (которые сильно параллелить надо) возьмутся у обычных пользователей? Или же выйдет, что покупать будут лишь потому что круто? BZ>>да хотя б чтоб хаскел этот сам по себе работал не медленней c# К>эээ, он у тебя медленней шарпа работает?
Булат видимо компилятор имел в виду.
Ну я сильо компилятор пока не нагружал, но с darcs-ом повозился чуток.
Дык вот, он сильно по скорости svn сливает.
Ту же рабочую копию Janus-а (вместе с бинариками) только в 2 приёма удалось закомитить.
Правда машинка слабая была: проц AMD Sempron 3100+ 1.8ггц и озу 736мб, вынь хр.
Но свин справляется без каких-либо проблем.
Здравствуйте, Tonal-, Вы писали:
T>Ну я сильо компилятор пока не нагружал, но с darcs-ом повозился чуток. T>Дык вот, он сильно по скорости svn сливает.
... T>Так что есть куда копать.
darcs и svn — совершенно разные системы. Языки (и компиляторы) здесь — дело десятое.
Здравствуйте, awson, Вы писали: T>>Ну я сильо компилятор пока не нагружал, но с darcs-ом повозился чуток. T>>Дык вот, он сильно по скорости svn сливает. A>darcs и svn — совершенно разные системы. Языки (и компиляторы) здесь — дело десятое.
В чём же их коренное различие?
Сможешь внятно объяснить почему darcs record не влезло в память после примерно десятка минут, а svn ci и на больших объёмах вполне бодро отработывает?
Или нужно было сравнивать darcs с git-ом?
Думаешь git тоже будет тормозить и вылетать из пмяти?
Т.е. альтернатив svn-у на средних и больше объёмах нет?
П.С. Ну и если отмотать ветку, то вопрос на который я отвечал был зачем увеличивать мощьность машин.
Здравствуйте, Tonal-, Вы писали:
A>>darcs и svn — совершенно разные системы. Языки (и компиляторы) здесь — дело десятое. T>В чём же их коренное различие?
Как минимум, они относятся к совершенно разным классам — darcs — распределенная, в отличие от.
НО! Даже если сравнивать с другими распределенными системами, darcs основан на т.н. darcs theory of patches. Оно дает некоторые уникальные возможности, за которые *приходится платить*.
T>Сможешь внятно объяснить почему darcs record не влезло в память после примерно десятка минут, а svn ci и на больших объёмах вполне бодро отработывает?
Не смогу, потому что это может быть что угодно. Вплоть до ошибок в алгоритмах *реализации* (the darcs level — not the semantic level — в дискуссии по ссылке оно обсуждается) — а их немало. Но возможно, проблема и принипиальная — см. выше. С практической точки зрения при использовании darcs в *больших* проектах нужно принимать некоторые меры предосторожности.
T>Или нужно было сравнивать darcs с git-ом?
В общем, да. Но, опять-таки, см. выше.
Здравствуйте, Курилка, Вы писали:
К>>>>Так вот хочется понять — где же такие задачи (которые сильно параллелить надо) возьмутся у обычных пользователей? Или же выйдет, что покупать будут лишь потому что круто?
BZ>>да хотя б чтоб хаскел этот сам по себе работал не медленней c#
К>эээ, он у тебя медленней шарпа работает?
ну например в гарпе нет ленивости, которая сама по себе скорость способна уменьшить на порядок. нет таких медлительных type classes. если посмотреть на некоторые статьи в том числе по тому же NDP, то видно что наивный код на хаскеле может быть в тыщу раз медленней сишного
кстати, NDP вошёл в ghc 6.10, правда вроде оно на alpha-стадии