Re[27]: Axum: паралельное программирование
От: thesz Россия http://thesz.livejournal.com
Дата: 18.05.09 10:34
Оценка:
T>>>>Вот, смотри. Лисп стал функциональным в районе 1983 года. Только Common Lisp устаканил алгоритм упрощения (reduction), который имел хоть какой-то аналог в лямбда-исчислении.
G>>>И что? У лиспа пиписька длиннее стала?
T>>Он стал удобней в работе.
G>Чем?

Тем, что рассуждений для написания программы теперь требуется меньше.

T>>>>Вопрос: какой порядок упрощения в функциональном подмножестве C#?

G>>>Встречный вопрос: что это меняет?
T>>Простоту рассуждений о программах.
G>Зачем рассуждать о программах?

Для их понимания. Для уменьшения количества ошибок.

Ты с какой луны свалился, что такие вопросы задаёшь в программерском форуме?
Yours truly, Serguey Zefirov (thesz NA mail TOCHKA ru)
Re[31]: Axum: паралельное программирование
От: thesz Россия http://thesz.livejournal.com
Дата: 18.05.09 10:39
Оценка:
T>>Selective receive, если говорить только о параллельном программировании.
G>В Axum подобная фича реализуется разными портами, если я вообще правильно понял о чем речь.

Да, согласен.

Selective receive с обработкой всех сообщений в конце (сравнение с _ в конце всех сравнений) интересна тем, что не даёт возможности накапливаться сообщениям в очереди. С каналами такое возможно: мы можем "забыть" о чтении из одного из каналов.

T>>Но он помогает программированию в целом.

G>Не спорю. Вопрос в том насколько отсуствие ПМ критично для программирования в целом. Практика показывает что некритично.

Моя практика говорит ровно об обратном.

G>>>А Erlang умеет прозрачно задействовать все ядра процессора и при этом не терять производительность?

T>>"Прозрачно" — это как?
G>Ну так что программисту не надо ничего писать чтобы несколько "проснувшихся" агентов одновременно работали на нескольких ядрах.

Наверняка умеет. Вроде, мне про это защитники Эрланга говорили.
Yours truly, Serguey Zefirov (thesz NA mail TOCHKA ru)
Re[32]: Axum: паралельное программирование
От: Mr.Cat  
Дата: 18.05.09 10:47
Оценка:
Здравствуйте, thesz, Вы писали:

T>Вот мой вариант (бляха муха, я теперь ещё и Лисп теперь знаю лучше, чем мне бы хотелось):

T>
T>;(define (h x gx)
T>;  (display gx)(display x)(newline))

T>;(define (g x)
T>;  set-cdr! x '(a b c))

T>;(define (f1 x)
T>;  (h x (g x)))
T>;(define (f2 x)
T>;  (h (g x) x))
T>;(f1 '(cat dog))
T>;(f2 '(cat dog))
T>;

См выделенное. Функцию set-cdr! стоит все-таки вызвать, иначе g всегда будет возвращать '(a b c), ничего при этом не делая. Если это опечатка при копипасте в пост, то что за имплементация scheme у тебя?

T>Здесь у тебя ошибка. для set-cdr нужна переменная, вот ты и используешь x. в теле g переменная x недоступна, доступно только значение.

Ок
(define (h x gx)
  (display gx)(display x)(newline))

(define (g x)
  (set-cdr! x x)
  "This is a scheme longcat: ")

(define (f x)
  (h x (g x)))

(f '(cat))

В chicken scheme и plt (в режиме r5rs) этот код работает так же, как и мой предыдущий пример, т.е. cons-пара всегда передается по ссылке. Но вообще, я плохо помню нюансы модели памяти в scheme — надо будет полистать стандарт.
Re[30]: Axum: паралельное программирование
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 18.05.09 10:54
Оценка:
Здравствуйте, thesz, Вы писали:

T>>>Проблемы уровня библиотеки в нормальном языке.

E>>Что-то мне подсказывает, что под нормальным языком для тебя является только Haskell.

T>Что могло натолкнуть тебя на эту мысль? Где я прокололся?


Достаточно почитать (даже по диагонали) твои сообщения здесь и в livejournal

T>MPI лучше, чем агенты, поскольку дольше существует. Поэтому он лучше отработан на кластерах.


Тогда, надо полагать, PVM еще лучше MPI, поскольку существует еще дольше. А Java лучше .NET. А Oberon лучше Java...

E>>>>Тогда как в MPI сборкой/разборкой сообщений программист занимается вручную. Соответственно, в MPI накосячить гораздо проще и косяки эти будут вылезать в run-time.


T>>>http://www.pgroup.com/products/workindex.htm


E>>И что я по этой ссылке должен увидеть? То, что в природе существует "OpenMP and MPI parallel debugger/profiler"?


T>Автоматическое распараллеливание программ для MPI.


Дай все-таки точную ссылку, поскольку я пока вижу:

PGF95™ native OpenMP and auto-parallel Fortran 90/95 compiler
PGF77® native OpenMP and auto-parallel FORTRAN 77 compiler
PGF95™ native OpenMP and auto-parallel Fortran 90/95 compiler
PGF77® native OpenMP and auto-parallel FORTRAN 77 compiler
Threads-based auto-parallelization using both PGF77 and PGF95
Threads-based auto-parallelization of FOR loops in PGCC and PGC++
Full native OpenMP parallelization directives in PGF77 and PGF95
Full native OpenMP parallelization pragmas in PGCC and PGC++

И ни слова об автоматическом распараллеливании MPI. Что и не удивительно, т.к. автоматическое распараллеливание и MPI -- это, имхо, взаимоисключающие подходы.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[28]: Axum: паралельное программирование
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 18.05.09 10:59
Оценка:
Здравствуйте, thesz, Вы писали:

T>>>На современном Хаскеле я могу написать такое (ну, почти), как мне использовать это в современном C#?

G>>generics?
T>Попробуй. Если я ещё и доказательства прикручу в виде типов классов, то никакие generics не спасут.
Ну прям интересно, давай конкретно задачу, а то про генератор xml не понял.

T>>>Это же палка о двух концах.

G>>Не факт, в компиляторе можно много чего ограничить для получения адекватного результата, в отличие от DSEL.
T>Вопрос простоты. Большое количество проверок можно получить без компилятора, если система типов достаточно мощна.
Возможно. Может быть это будет даже иметь значение если бы я разрабатывал Axum. С позиции пользователя Axum мне как-то все равно.

T>>>Многое. Сейчас считается, что .Net можно запихнуть всюду, а оказывается, что она мало, где применима.

G>>"Можно" не означает "целесообразно". Мало где применима чаще всего означает низкий уровень пихальщиков .NET.
T>Она такая по построению.
Доказательства? "Не похоже на haskell" за доказательство не катит.

G>>По твоей логике можно haskell везде запихнуть, только я софта на хаскеле не видел вообще.

T>Во, куда скатились. Круто! А про императивный CPU так вообще отпад.
T>Это аргумент середины 70-х про языки высокого уровня.
Те агрументы, которые ты применяешь против .NET можно с таким же успеом применить против множества высокоуровневых языков, в том числе Erlang\Haskell\LanguageOfYourChoice.


G>>Есть предложения как уменьшить количество работы?

T>Головой больше думать. Не делать ненужной работы.
Общие слова.

T>Не выбирать платформы и языки, где нужна ненужная работа.

Ненужная работа моет сильно зависеть от контекста. Кроме того изучение кардинально новых языко\платформ\подходов к разработке может само быть ненужной работой, а также может привести к ненужной работе в виде переписывания существующих решений на новом языке.

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

G>>Я например в ФП разобрался благодаря C# и F#, хрен бы у меня время нашлось для изучения OCaml с нуля. Теперь скриптовые языки изучаю, причем у меня нету необходимости изучать немалые фреймворки python или ruby чтобы писать на них части своих программ. Посмотрев библиотеки PFX, CCR\DSS и Axum я теперь немного понимаю в параллельном программировании во всех его проявлениях.


T>Уверяю тебя, ты всё равно ничего не знаешь про ФП, про скриптовые языки и про параллельное программирование.

Смелое утверждение.

T>Ты, например, не знаешь о легкости соединения кода двух независимо работающих разработчиков, когда они пишут на чистом языке.

T>У тебя этого под рукой нет.
Ты так говоришь как-будто нету других способов достигнуть такой же легкости.

T>Ты не писал большой проект на скриптовом языке.

Слава богу.

T>Ты знаешь о параллельном программировании только то, что в MS сочли нужным тебе показать.

Я не только MSDN читаю
Re[28]: Axum: паралельное программирование
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 18.05.09 11:11
Оценка:
Здравствуйте, thesz, Вы писали:

T>>>>>Вот, смотри. Лисп стал функциональным в районе 1983 года. Только Common Lisp устаканил алгоритм упрощения (reduction), который имел хоть какой-то аналог в лямбда-исчислении.

G>>>>И что? У лиспа пиписька длиннее стала?
T>>>Он стал удобней в работе.
G>>Чем?
T>Тем, что рассуждений для написания программы теперь требуется меньше.
Каких рассудений?

T>>>>>Вопрос: какой порядок упрощения в функциональном подмножестве C#?

G>>>>Встречный вопрос: что это меняет?
T>>>Простоту рассуждений о программах.
G>>Зачем рассуждать о программах?
T>Для их понимания. Для уменьшения количества ошибок.
Как порядок упрощения в функциональном подмножестве C# помоет пониманию и уменьшению количества ошибок?

T>Ты с какой луны свалился, что такие вопросы задаёшь в программерском форуме?

Че-то это пахнет сильно абстрактной теорией.
Re[32]: Axum: паралельное программирование
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 18.05.09 11:12
Оценка:
Здравствуйте, thesz, Вы писали:

T>>>Но он помогает программированию в целом.

G>>Не спорю. Вопрос в том насколько отсуствие ПМ критично для программирования в целом. Практика показывает что некритично.
T>Моя практика говорит ровно об обратном.
Ну это только твоя практика.
Re[33]: Axum: паралельное программирование
От: thesz Россия http://thesz.livejournal.com
Дата: 18.05.09 13:02
Оценка: :))
T>>Здесь у тебя ошибка. для set-cdr нужна переменная, вот ты и используешь x. в теле g переменная x недоступна, доступно только значение.
MC>Ок
MC>
MC>;(define (g x)
MC>;  (set-cdr! x x)
MC>;  "This is a scheme longcat: ")
MC>;

MC>В chicken scheme и plt (в режиме r5rs) этот код работает так же, как и мой предыдущий пример, т.е. cons-пара всегда передается по ссылке. Но вообще, я плохо помню нюансы модели памяти в scheme — надо будет полистать стандарт.

У меня guile/cygwin, я поправил свой вариант с твоими исправлениями.

Я в ужасе.
Yours truly, Serguey Zefirov (thesz NA mail TOCHKA ru)
Re[31]: Axum: паралельное программирование
От: thesz Россия http://thesz.livejournal.com
Дата: 18.05.09 13:10
Оценка:
T>>MPI лучше, чем агенты, поскольку дольше существует. Поэтому он лучше отработан на кластерах.
E>Тогда, надо полагать, PVM еще лучше MPI, поскольку существует еще дольше. А Java лучше .NET. А Oberon лучше Java...

Агенты ничем от MPI не отличаются, за исключением отсутствия стандарта.

E>И ни слова об автоматическом распараллеливании MPI. Что и не удивительно, т.к. автоматическое распараллеливание и MPI -- это, имхо, взаимоисключающие подходы.


"Let me see..." (C) The Incredibles

We evaluate the performance achieved by our translation scheme on seven representative OpenMP applications, two from SPEC OMPM2001 and ve from the NAS Parallel Benchmarks suite, on two di erent platforms. The average scalability (execution time relative to the serial version) achieved is within 12% of that achieved by corresponding hand-tuned MPI applications.


Это OpenMP -> MPI, а для OpenMP автоматическое распараллеливание существует.

В принципе, товарищи из Майкрософт пытаются облегчить перенос последовательных программ на параллельные системы, это видно по приводимым здесь примерам кода.

С моей точки зрения, это не очень хорошо, поскольку разработчику даётся ещё одно средство прострелить себе ногу. Лучше бы они занялись автоматическим анализом и преобразованиями, чем вот так вот.
Yours truly, Serguey Zefirov (thesz NA mail TOCHKA ru)
Re[32]: Axum: паралельное программирование
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 18.05.09 13:25
Оценка:
Здравствуйте, thesz, Вы писали:

T>Упоминание об ангажированности не переход на личности.


Да нет, это именно он самый и есть.

T> Ангажированность не свойство личности, это свойство позиции, занимаемой личностью.


Вот вот, личностью.

T>>> Ангажированность не свойство личности. Это может быть следствием заблуждений.

AVK>>Здесь не обсуждаются мои заблуждения.

T>Оба-на!


T>Да на всём RSDN только и делают, что обсуждают чьи-то заблуждения.


Это еще один демагогический прием.

AVK>>Потому что у меня есть кое какая информация, которой я здесь поделиться, к сожалению, не могу, NDA.


T>Ну, так и не делись. Лучше всего вообще.


А это уже не тебе указывать.

T>А то только домыслы и слухи порождаешь.


Ну, те кто меня знает, в курсе того с какой вероятностью мои источники выдают верную информацию.
... << RSDN@Home 1.2.0 alpha 4 rev. 1218 on Windows Vista 6.1.7100.0>>
AVK Blog
Re[29]: Axum: паралельное программирование
От: thesz Россия http://thesz.livejournal.com
Дата: 18.05.09 13:30
Оценка:
T>>Попробуй. Если я ещё и доказательства прикручу в виде типов классов, то никакие generics не спасут.
G>Ну прям интересно, давай конкретно задачу, а то про генератор xml не понял.

То, чем я на выходных занимался:
{-# LANGUAGE EmptyDataDecls, GADTs, PatternSignatures, ScopedTypeVariables #-}
{-# LANGUAGE FlexibleContexts, MultiParamTypeClasses, FunctionalDependencies #-}
{-# LANGUAGE FlexibleInstances, UndecidableInstances #-}

-------------------------------------------------------------------------------
-- Type-level arithmetic.

class Nat a where
    fromNat :: a -> Int

data Z
data S n

instance Nat Z where
    fromNat _ = 0

instance Nat n => Nat (S n) where
    fromNat sn = 1+fromNat n
        where
            nsn :: S n -> n
            nsn = undefined
            n = nsn sn

class (Nat a, Nat b, Nat r) => Plus a b r | a b -> r, a r -> b
instance Nat b => Plus Z b b
instance (Nat a, Nat b, Nat r, Plus a b r) => Plus (S a) b (S r)

natPlus :: (Nat a, Nat b, Nat r, Plus a b r) => a -> b -> r; natPlus = undefined

class GE a b -- | a -> b, b -> a
instance           GE  Z     Z
instance           GE (S a)  Z
instance GE a b => GE (S a) (S b)

type ONE = S Z
type TWO = S (S Z)
type THREE = S TWO
type FOUR = S THREE
type EIGHT = S (S (S (S FOUR)))

-------------------------------------------------------------------------------
-- Buses and netlist elements.

data Bus size = Bus Int

type BitBus = Bus ONE

busSize :: Bus size -> size; busSize = undefined

type Netlist = [NetlistElem]

data NetlistElem where
    Join     :: (Nat sa, Nat sb, Plus sa sb sr)
             => Bus sa -> Bus sb -> Bus sr -> NetlistElem
    Split    :: (Nat high, Nat low, Nat big, Plus high low hl, GE big hl)
             => Bus big -> Bus high -> Bus low -> NetlistElem


Есть операции над шинами в схемах-нетлистах: Join — из двух шин получить одну суммарного размера, — и Split — из большей шины получить две меньших. С проверкой размерности на этапе компиляции, то есть, я не смогу разбить Bus TWO на Bus THREE и Bus ONE.

Запиши это на generics.

T>>Вопрос простоты. Большое количество проверок можно получить без компилятора, если система типов достаточно мощна.

G>Возможно. Может быть это будет даже иметь значение если бы я разрабатывал Axum. С позиции пользователя Axum мне как-то все равно.

До тех пор, пока не пришло время на нём писать.

T>>>>Многое. Сейчас считается, что .Net можно запихнуть всюду, а оказывается, что она мало, где применима.

G>>>"Можно" не означает "целесообразно". Мало где применима чаще всего означает низкий уровень пихальщиков .NET.
T>>Она такая по построению.
G>Доказательства? "Не похоже на haskell" за доказательство не катит.

В сети мне не встречались ограничения на дизайн .Net. Не подкинешь ссылку? Я имею в виду именно саму .Net, а не написание программ под неё. Про Эрланг это описано в диссертации Джо Армстронга, про Haskell — в History of Haskell. А про .Net такого нет (пардон за каламбур).

Вот про .Net такое будет, там всё видно будет.

G>>>Есть предложения как уменьшить количество работы?

T>>Головой больше думать. Не делать ненужной работы.
G>Общие слова.

Именно.

Вот, например, тесты — когда это нужная работа?

T>>Не выбирать платформы и языки, где нужна ненужная работа.

G>Ненужная работа моет сильно зависеть от контекста. Кроме того изучение кардинально новых языко\платформ\подходов к разработке может само быть ненужной работой, а также может привести к ненужной работе в виде переписывания существующих решений на новом языке.

Надо уметь изучать только то, что нужно.

G>Например мне нужно написать сайт, например интернет-магазин. Если я выберу haskell, то чем он мне поможет уменьшить количесто ненужной работы?


Кардинально уменьшит количество тестов.

G>>>Я например в ФП разобрался благодаря C# и F#, хрен бы у меня время нашлось для изучения OCaml с нуля. Теперь скриптовые языки изучаю, причем у меня нету необходимости изучать немалые фреймворки python или ruby чтобы писать на них части своих программ. Посмотрев библиотеки PFX, CCR\DSS и Axum я теперь немного понимаю в параллельном программировании во всех его проявлениях.

T>>Уверяю тебя, ты всё равно ничего не знаешь про ФП, про скриптовые языки и про параллельное программирование.
G>Смелое утверждение.

Мне достаточно, что ты знаешь меньше меня в области применения ФП. А я знаю достаточно мало.

T>>Ты, например, не знаешь о легкости соединения кода двух независимо работающих разработчиков, когда они пишут на чистом языке.

T>>У тебя этого под рукой нет.
G>Ты так говоришь как-будто нету других способов достигнуть такой же легкости.

Для императивного программирования и для языков типа OCaml/F# эти "другие способы" переносят сложность в другую область. Например, на тесты. Или на документацию. Или на code review.

T>>Ты не писал большой проект на скриптовом языке.

G>Слава богу.

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

Без большого проекта это невозможно.

T>>Ты знаешь о параллельном программировании только то, что в MS сочли нужным тебе показать.

G>Я не только MSDN читаю

Ещё и RSDN.
Yours truly, Serguey Zefirov (thesz NA mail TOCHKA ru)
Re[29]: Axum: паралельное программирование
От: thesz Россия http://thesz.livejournal.com
Дата: 18.05.09 13:39
Оценка:
T>>>>Он стал удобней в работе.
G>>>Чем?
T>>Тем, что рассуждений для написания программы теперь требуется меньше.
G>Каких рассудений?

О программе.

В стиле троек Хоара, например.

С помощью троек Хоара можно конструировать программы и даже получать очень нетривиальные алгоритмы (правда, нужен опыт).

G>>>Зачем рассуждать о программах?

T>>Для их понимания. Для уменьшения количества ошибок.
G>Как порядок упрощения в функциональном подмножестве C# помоет пониманию и уменьшению количества ошибок?

Плотность ошибок в рассуждениях, я думаю, не сильно колеблется в зависимости от их числа. Косввенно это можно подтвердить, что плотность ошибок на строку коду (выражение программы) тоже величина достаточно постоянная, а на строку кода мы делаем примерно одинаковое число выводов.

Чем меньше рассуждений надо для реализации концепции, тем меньше ошибок мы внесём в эту самую реализацию.

T>>Ты с какой луны свалился, что такие вопросы задаёшь в программерском форуме?

G>Че-то это пахнет сильно абстрактной теорией.

Вся компьютерная наука — результат абстрактной теории.
Yours truly, Serguey Zefirov (thesz NA mail TOCHKA ru)
Re[33]: Axum: паралельное программирование
От: thesz Россия http://thesz.livejournal.com
Дата: 18.05.09 13:40
Оценка:
T>>>>Но он помогает программированию в целом.
G>>>Не спорю. Вопрос в том насколько отсуствие ПМ критично для программирования в целом. Практика показывает что некритично.
T>>Моя практика говорит ровно об обратном.
G>Ну это только твоя практика.

"Тем же концом и вас" (С) народная мудрость

Мой вывод подтверждает не только моя практика.
Yours truly, Serguey Zefirov (thesz NA mail TOCHKA ru)
Re[9]: Axum: паралельное программирование
От: IT Россия linq2db.com
Дата: 18.05.09 13:40
Оценка: +1
Здравствуйте, AndrewVK, Вы писали:

IT>>Это выкривление одной кривизны с помощью другой. Короче говоря извратство.


AVK>Ну, не такое уж и извратство, хотя синтаксически несколько избыточно. Применять вполне можно.


"Не такое уж и извратство" и "Применять вполне можно" может характеризовать какую-нибудь второстепенную фичу какой-нибудь малоиспользуемой библиотеки, но никак не одну из основных конструкций языка.
Если нам не помогут, то мы тоже никого не пощадим.
Re[33]: Axum: паралельное программирование
От: Klapaucius  
Дата: 18.05.09 16:06
Оценка: +1
Здравствуйте, eao197, Вы писали:

E>Блин, Klapaucius-а на вас c thesz нужно натравить. Он мне тут года полтора назад убедительно доказывал, что раз в языке Nice можно сделать функцию curry
Автор: Klapaucius
Дата: 01.02.08
, значит он функциональный. И все, ни о каких побочных эффектах речи не было.


Точнее, я писал, что считаю функциональным язык, в котором функции — FCO.
Просто, так уж получается, что идеи приходя в мэйнстрим деформируются и принимают странную форму, которая тех, кто был знаком с ними до этого, естественно, не устраивает.
Я полагаю, что C# 3.0 в такой же степени функциональный язык, в какой C++ — объектно ориентированный, хотя у православных хаскелиста (в первом случае) и у смолтокера (во втором) всегда найдется что возразить.

Но, если уж на то пошло, в Haskell можно обходить ограничение и создавать сайд-эффект в функциях с самым чистым, невинным типом. Просто это требуется из практических соображений.
Такое возможно, потому, что есть
unsafePerformIO :: IO a -> a

так что без доброго слова авторов и тут не обходится.
Другое дело, что контроль за побочными эффектами в Haskell все-таки лучше чем в C#, в котором его нет вовсе.
... << RSDN@Home 1.2.0 alpha 4 rev. 1110>>
'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
Re[10]: Axum: паралельное программирование
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 18.05.09 18:34
Оценка:
Здравствуйте, IT, Вы писали:

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


Основную конструкцию ломать уже поздно. Тебе шашечки или ехать?
... << RSDN@Home 1.2.0 alpha 4 rev. 1218 on Windows Vista 6.1.7100.0>>
AVK Blog
Re[32]: Axum: паралельное программирование
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 18.05.09 19:27
Оценка: +1
Здравствуйте, thesz, Вы писали:

T>>>MPI лучше, чем агенты, поскольку дольше существует. Поэтому он лучше отработан на кластерах.

E>>Тогда, надо полагать, PVM еще лучше MPI, поскольку существует еще дольше. А Java лучше .NET. А Oberon лучше Java...

T>Агенты ничем от MPI не отличаются, за исключением отсутствия стандарта.


Тогда на основании чего было сделано утверждение, что

Использовать агенты в HPC — немного совсем малоэффективное решение.

?

E>>И ни слова об автоматическом распараллеливании MPI. Что и не удивительно, т.к. автоматическое распараллеливание и MPI -- это, имхо, взаимоисключающие подходы.


T>"Let me see..." (C) The Incredibles

T>

We evaluate the performance achieved by our translation scheme on seven representative OpenMP applications, two from SPEC OMPM2001 and ve from the NAS Parallel Benchmarks suite, on two dierent platforms. The average scalability (execution time relative to the serial version) achieved is within 12% of that achieved by corresponding hand-tuned MPI applications.


T>Это OpenMP -> MPI,


С изрядными ограничениями:

Therefore, we refer to our scheme as partial-replication. Data replication comes at the cost of limiting the data scalability of programs that is, programs will not be able to handle n-times larger data sets on n processors.


А ведь MPI как раз и рулит в области больших вычислений на сотнях и более узлов.

T> а для OpenMP автоматическое распараллеливание существует.


OpenMP изначально предназначалась для того, чтобы компилятор/runtime распараллеливал те куски, на которые указал программист. Но распараллеливал автоматически. Однако, речь сейчас не об OpenMP.

T>В принципе, товарищи из Майкрософт пытаются облегчить перенос последовательных программ на параллельные системы, это видно по приводимым здесь примерам кода.


T>С моей точки зрения, это не очень хорошо, поскольку разработчику даётся ещё одно средство прострелить себе ногу. Лучше бы они занялись автоматическим анализом и преобразованиями, чем вот так вот.


Ну конечно, пусть MS потратит еще десяток-другой лет на поиск хороших решений для автоматического распараллеливания кода. У них же денег много. А еще пусть Haskell вместо C# продвигает, ведь это более прогрессивный подход


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[30]: Axum: паралельное программирование
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 18.05.09 19:47
Оценка:
Здравствуйте, thesz, Вы писали:

T>>>Попробуй. Если я ещё и доказательства прикручу в виде типов классов, то никакие generics не спасут.

G>>Ну прям интересно, давай конкретно задачу, а то про генератор xml не понял.

T>То, чем я на выходных занимался:

T>
T>--ушел изучать хаскел чтобы понять что там написано--


T>>>>>Многое. Сейчас считается, что .Net можно запихнуть всюду, а оказывается, что она мало, где применима.

G>>>>"Можно" не означает "целесообразно". Мало где применима чаще всего означает низкий уровень пихальщиков .NET.
T>>>Она такая по построению.
G>>Доказательства? "Не похоже на haskell" за доказательство не катит.

T>В сети мне не встречались ограничения на дизайн .Net. Не подкинешь ссылку? Я имею в виду именно саму .Net, а не написание программ под неё. Про Эрланг это описано в диссертации Джо Армстронга, про Haskell — в History of Haskell. А про .Net такого нет (пардон за каламбур).

T>Вот про .Net такое будет, там всё видно будет.
Дык твой тезис — тебе и доказывать.

T>Вот, например, тесты — когда это нужная работа?

Много от чего зависит. Например в TDD тесты — средство дизайна кода.


G>>Например мне нужно написать сайт, например интернет-магазин. Если я выберу haskell, то чем он мне поможет уменьшить количесто ненужной работы?

T>Кардинально уменьшит количество тестов.
Я использую TDD, от чего произойдет уменьшение количества тестов?

T>>>Ты, например, не знаешь о легкости соединения кода двух независимо работающих разработчиков, когда они пишут на чистом языке.

T>>>У тебя этого под рукой нет.
G>>Ты так говоришь как-будто нету других способов достигнуть такой же легкости.

T>Для императивного программирования и для языков типа OCaml/F# эти "другие способы" переносят сложность в другую область. Например, на тесты. Или на документацию. Или на code review.

При условии хорошей автоматизации "других областей" это проблемой не является.

T>>>Ты не писал большой проект на скриптовом языке.

G>>Слава богу.
T>Мой критерий уверенного знания языка: ты должен оптимизировать большую программу по скорости.
T>Без большого проекта это невозможно.
А теперь критерий большого проекта?
Re[31]: Axum: паралельное программирование
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 18.05.09 20:22
Оценка:
Здравствуйте, gandjustas, Вы писали:

G>А теперь критерий большого проекта?


Более 100KLOC


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[32]: Axum: паралельное программирование
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 18.05.09 20:26
Оценка:
Здравствуйте, eao197, Вы писали:

E>Здравствуйте, gandjustas, Вы писали:


G>>А теперь критерий большого проекта?


E>Более 100KLOC


На моей первой работе как раз был такой проект. Сейчас я знаю что тоже самое на .NET можно повторить с 10-кратным уменьшением объема.
Так что размер — совсем необъективный поазатель.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.