Re[7]: ФП и многоядерная архитектура
От: IT Россия linq2db.com
Дата: 18.11.08 22:00
Оценка: +1
Здравствуйте, remark, Вы писали:

R>Но важный момент — насколько сложно без этой помощи? нет, не в абстрактных терминах, а в терминах реального программиста реализующего что-то реальное, сколько времени у него ушло? сколько моральных сил у него ушло? результат какого качества удалось получить? Далее — насколько это помощь именно в том, в чём разработчику хотелось и требуется?


Мне как реальному программисту FP вообще и immutable стиль в частности реально помогает. И даже не в распараллеливании. А просто в процессе кодирования.

R>Так же хороший вопрос — а что если компилятор мне не помагает, а мешает?


Ну так тут нужно мозги в правильном направлении выправлять. Мне раньше компилятор тоже только мешал. Сейчас тот же компилятор помогает.
Если нам не помогут, то мы тоже никого не пощадим.
Re[8]: ФП и многоядерная архитектура
От: remark Россия http://www.1024cores.net/
Дата: 19.11.08 00:04
Оценка: +2 :)
Здравствуйте, IT, Вы писали:

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


R>>Но важный момент — насколько сложно без этой помощи? нет, не в абстрактных терминах, а в терминах реального программиста реализующего что-то реальное, сколько времени у него ушло? сколько моральных сил у него ушло? результат какого качества удалось получить? Далее — насколько это помощь именно в том, в чём разработчику хотелось и требуется?


IT>Мне как реальному программисту FP вообще и immutable стиль в частности реально помогает. И даже не в распараллеливании. А просто в процессе кодирования.


R>>Так же хороший вопрос — а что если компилятор мне не помагает, а мешает?


IT>Ну так тут нужно мозги в правильном направлении выправлять. Мне раньше компилятор тоже только мешал. Сейчас тот же компилятор помогает.


Замечательно. А я не сталкиваюсь с особыми проблемами при работе в императивном стиле. И мне тоже С++ компилятор помогает тем, что ничем не мешает.


1024cores — all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
Re[8]: ФП и многоядерная архитектура
От: D. Mon Великобритания http://thedeemon.livejournal.com
Дата: 19.11.08 02:35
Оценка: :)))
Здравствуйте, IT, Вы писали:

IT> Мне раньше компилятор тоже только мешал. Сейчас тот же компилятор помогает.


Исправил компилятор?
Re[9]: ФП и многоядерная архитектура
От: IT Россия linq2db.com
Дата: 19.11.08 02:47
Оценка:
Здравствуйте, D. Mon, Вы писали:

DM>Исправил компилятор?


Мозги.
Неясность изложения обычно происходит от путаницы в мыслях.
Если нам не помогут, то мы тоже никого не пощадим.
Re[9]: ФП и многоядерная архитектура
От: IT Россия linq2db.com
Дата: 19.11.08 02:57
Оценка:
Здравствуйте, remark, Вы писали:

IT>>Ну так тут нужно мозги в правильном направлении выправлять. Мне раньше компилятор тоже только мешал. Сейчас тот же компилятор помогает.


R>Замечательно. А я не сталкиваюсь с особыми проблемами при работе в императивном стиле. И мне тоже С++ компилятор помогает тем, что ничем не мешает.


Это следствие ограниченности. Тот компилятор, который мне раньше вроде бы как не мешал сейчас мешает, а тот который раньше мешал реально помогает. Парадокс. Про C++ я вообще молчу. Я почти 15 лет считал плюсы абсолютным совершенством, пока не увидел другой мир. И оказалось, что плюсы — это поле с граблями, а виртуозное владение плюсами — это всего лишь виртуозное хождение по граблям. Короче, не начинай
Неясность изложения обычно происходит от путаницы в мыслях.
Если нам не помогут, то мы тоже никого не пощадим.
Re[5]: ФП и многоядерная архитектура
От: IT Россия linq2db.com
Дата: 19.11.08 03:17
Оценка: 4 (1) +1
Здравствуйте, fddima, Вы писали:

F> Просто тут вот, я с появления темы ждал высказывания Влада, о "преимуществах", и таки оно прозвучало... в иммутабельности! Честно говоря и самому оно в голову пришло. А следом... пришло и другое — получается как несколько лет назад, кричим лозунги, а что они значат — мы не понимаем, то память не ресурс, теперь ФП популяризируется, однако доводов нет. Никаких нет.


Доводов мильён. В том числе и в этом форуме. В частности, я приводил код, который легко параллелится и в три раза короче императивного аналога. Но, проблема в том, что чтобы эти доводы увидеть нужно открыть глаза, а не посильнее зажмуриться.

F>Никаких адекватных не сравнений и тестов. Хотя я знаю почему их нет, правильно, мы выучили, что есть задача — есть адекватный инструмент. А иммутабельность точно так же как мутабельность может привести к деградации.


У иммутабельности, как я уже говорил, есть ещё одно преимущество. В этом стиле банально легче писать код, т.к. весь контекст до неприличия постоянен и мне не откуда ждать подвоха. Если я могу дотянуться до одной и той же переменной из двух веток кода, то мне даже думать не надо, в ней будет одно и тоже значение, что нельзя сказать об императиве, где я должен всегда держать в голове весь контекст со всеми его состояниями. Такая же ситуация с модификацией кода. Достаточно затолкать уже существующий рабочий блок кода в существующий контекст, чтобы бы быть уверенным, что этот блок будет работать без сюрпризов.

Но как тебе это продемонстрировать и какие тесты и сравнения показать, я не знаю

F> Меня конечно можно упрекнуть в том или ином искажении реальности, просто каждая гарная фича несёт за собой расплату. И как сборка мусора несёт за собой свои нюансы, так и иммутабельность. Просто мне не нравится что её подают как решение проблем распараллеливания.


Думаю, ты сам себе придумал про решение проблем. Иммутабельность помогает в решении этих проблем и помогает не слабо, но не решает их.
Неясность изложения обычно происходит от путаницы в мыслях.
Если нам не помогут, то мы тоже никого не пощадим.
Re[4]: ФП и многоядерная архитектура
От: Pavel Dvorkin Россия  
Дата: 19.11.08 08:44
Оценка:
Здравствуйте, IT, Вы писали:

IT>Тут нужно уточнить одну вещь. Написание кода, который легко параллелить и само распараллеливание — это две разные вещи. Так вот с первым в ФЯ проблем нет, а второе это целый комплекс решений, включающих как процесс кодирование, так и архитектуру приложения и пр.


М-да... Интересно, кто вот это написал ?

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


http://rsdn.ru/forum/message/3153505.1.aspx
Автор: IT
Дата: 27.10.08


Так ускоряется в разы в зависимости от количества ядер путём внесения маленького изменения или все же необходим целый комплекс решений, включающих как процесс кодирование, так и архитектуру приложения и пр ?
With best regards
Pavel Dvorkin
Re[5]: ФП и многоядерная архитектура
От: Pavel Dvorkin Россия  
Дата: 19.11.08 09:31
Оценка: 82 (3) +2 -3 :))
Здравствуйте, fddima, Вы писали:

F> Просто тут вот, я с появления темы ждал высказывания Влада, о "преимуществах", и таки оно прозвучало... в иммутабельности! Честно говоря и самому оно в голову пришло. А следом... пришло и другое — получается как несколько лет назад, кричим лозунги, а что они значат — мы не понимаем, то память не ресурс, теперь ФП популяризируется, однако доводов нет. Никаких нет. Никаких адекватных не сравнений и тестов. Хотя я знаю почему их нет, правильно, мы выучили, что есть задача — есть адекватный инструмент. А иммутабельность точно так же как мутабельность может привести к деградации.

F> Меня конечно можно упрекнуть в том или ином искажении реальности, просто каждая гарная фича несёт за собой расплату. И как сборка мусора несёт за собой свои нюансы, так и иммутабельность. Просто мне не нравится что её подают как решение проблем распараллеливания.

Просто есть люди, которые с радостью кидаются на каждое новое "изобретение". Оно им нравится по двум причинам. Во-первых, оно новое, а это им импонирует. Во-вторых, оно, как правило, упрощает написание кода, а это для них немаловажно. Что же касается производительности (или расхода памяти и т.д.) — это они просто во внимание принимать не хотят. Ситуация чем-то напиминает ситуацию в экономике — когда цена на нефть $150, можно все себе позволить, а когда она $50 — надо очень аккуратно действовать и понапрасну деньгами не сорить. Мы в последнее десятилетие имели тот же бешеный рост производительности и объема памяти, в результате чего приличная часть этого ресурса была израсходована на всякие вещи, упрощающие жизнь программиста , а не улучшающие качество программ. В итоге сейчас мы имеем ситуацию, когда программное обеспечение потребляет намного больше ресурсов, чем реально необходимое. Проще говоря, нам дали самолет, а мы на нем в магазин ездим, но поскольку в магазин летать незачем, то этот самолет мы используем как автомобиль.
Когда же эпоха тучных коров заканчивается и наступает эпоха тощих коров, тогда начинают вспоминать, что и с тощих коров можно все же и молоко и мясо получить, если их правильно кормить и доить. И тогда начинают заботиться не столько о том, насколько удобно доярке вставать в 5 утра, а о том, какой цикл дойки коров является наилучшим.

Именно это получилось с памятью. Память резко возросла, и появилось желание тратить ее бесконтрольно. "Память больше не ресурс". Появилось такое желание — есть такие средства. Тратим 100 Мб там, где надо 20Мб — чего ее жалеть! Если бы ее действительно 20 было — еще как бы жалели, а когда ее не то 2048, не то 4096 — незачем! Используем ее расточительно до не могу. Сейчас то же самое про ядра начали. Есть ядра — надо их использовать. Как именно — не так важно, получается ли при этом линейная зависимость производительности от их числа или же мы имеем ситуацию, когда они друг с другом ссорятся, а в итоге производительность очень слабо растет — это тоже не так важно. В целом рост все же будет, конечно, по сравнению с однопоточным приложением, а поэтому можно и объявить, что мы, мол, достигли успеха, и посмотрите, какими простыми средствами!

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

Что будет дальше — зависит от двух факторов. Первый — это как будет расти производительность компьютеров, а второй — какие задачи будут на повестке дня. Если быстродействие будет так же расти, как оно росло — неэффективные решения будут жить и процветать. Если задачи не будут требовать эффективного использования ресурсов — тоже. Если же рост производительности замедлится (это скорее всего), а задачи усложнятся (а вот это большой вопрос) — тогда все эти неэффективные решения полетят к той же бабушке, а на повестку дня выйдут опять-таки эффективные решения. Если все же надо летать, то надо из этого двигателя выжать 800 км/час, даже если пилоту будет намного сложнее работать, чем водителю Жигулей.

F> И у мну с Мамутом возник вопрос — а что происходит-то с реальными параметрами в функции? раз оно иммутабельно их можно не копировать? Дима ответ не знал, кроме того что в процессах там всегда копирование, а что внутри — бог его знает. Всё зависит от компилятора/интерпретатора ФП получается. Как мне это напоминает долгие рассказы в этом форуме про возможности оптимизатора дотнета... а на практике ж ничего нет.


Будет потребность — будет оптимизатор. Пока ее нет — не будет. А потребность будет, когда станет ясно, сколько из-за его отсутствия теряем, и когда нам это потерянное жалко станет, потому что именно его и не хватать будет. Как с твоим рейстрейсером — ты его "оптимизировал", переведя с Эрланга на С++

F> Если кого-то прямо или косвенно обидел, то не со зла.


Я тоже не со зла
With best regards
Pavel Dvorkin
Re[8]: ФП и многоядерная архитектура
От: Pavel Dvorkin Россия  
Дата: 19.11.08 10:33
Оценка:
Здравствуйте, IT, Вы писали:

IT>Мне раньше компилятор тоже только мешал. Сейчас тот же компилятор помогает.


Из этой ситуации есть два выхода.

1. Поменять компилятор.
2. Поменять того, кто с этим компилятором работает.
With best regards
Pavel Dvorkin
Re[6]: ФП и многоядерная архитектура
От: Sinclair Россия https://github.com/evilguest/
Дата: 19.11.08 10:52
Оценка: 36 (2) +4
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Просто есть люди, которые с радостью кидаются на каждое новое "изобретение". Оно им нравится по двум причинам. Во-первых, оно новое, а это им импонирует. Во-вторых, оно, как правило, упрощает написание кода, а это для них немаловажно. Что же касается производительности (или расхода памяти и т.д.) — это они просто во внимание принимать не хотят. Ситуация чем-то напиминает ситуацию в экономике — когда цена на нефть $150, можно все себе позволить, а когда она $50 — надо очень аккуратно действовать и понапрасну деньгами не сорить. Мы в последнее десятилетие имели тот же бешеный рост производительности и объема памяти, в результате чего приличная часть этого ресурса была израсходована на всякие вещи, упрощающие жизнь программиста , а не улучшающие качество программ. В итоге сейчас мы имеем ситуацию, когда программное обеспечение потребляет намного больше ресурсов, чем реально необходимое. Проще говоря, нам дали самолет, а мы на нем в магазин ездим, но поскольку в магазин летать незачем, то этот самолет мы используем как автомобиль.

PD>Когда же эпоха тучных коров заканчивается и наступает эпоха тощих коров, тогда начинают вспоминать, что и с тощих коров можно все же и молоко и мясо получить, если их правильно кормить и доить. И тогда начинают заботиться не столько о том, насколько удобно доярке вставать в 5 утра, а о том, какой цикл дойки коров является наилучшим.
Не знаю, не знаю.
По моим впечатлениям, люди делятся на два, условно говоря, лагеря.
Первый лагерь — это люди, которым важно, чтобы решение работало вообще хоть как-нибудь.
Им неинтересно улучшать существующее решение до тех пор, пока их не бьют палкой, и неинтересно выбирать более хорошее решение из нескольких альтернатив.
Им вообще мешают альтернативы, потому что они требуют думать и делать выбор.
Такие люди не бросаются ни на какие изобретения, просто потому, что им это неинтересно. Они и под С++ пишут строго на С, потому что учить новое им ленивее, чем писать по-старому.

Другая категория людей — те, которым интересно получать более правильные решения. Такой человек может при выборе решения предпочитать рантайм-эффективность, удобство для пользователя, или простоту в поддержке. Это уже не так важно — важен сам интерес к улучшению.
Вот такие люди как раз бросаются на новые изобретения, потому что им интересно улучшить свои решения.

Вот простой пример — люди смотрят на 4GB памяти и говорят "о, круто. Раньше мы не могли себе позволить выполнять глобальные оптимизации в компиляторе потому, что ему не хватало памяти, и приходилось ограничиваться локальным анализом. Теперь мы можем проводить глобальные оптимизации, и получать код, потребление памяти которым в рантайме гарантированно минимально".
Вон, у Ершова есть пример для детей о том, как задача распределения памяти под переменные программы сводится к раскраске рёбер графа. Ну так и возможность решать эту задачу напрямую зависит от того, насколько большие графы может себе позволить ворочать компилятор.

Или говорят "о, раньше у нас не было средства на лету генерировать код, и приходилось заниматься оптимизацией вслепую, либо применять интерпретатор. Теперь у нас есть среда со встроенным компилятором; это позволит нам генерировать программы, которые гарантированно рвут по производительности оба старых варианта".
Вот подскажи мне, как эксперт по C++, какая там самая быстрая библиотека регулярных выражений? Используется ли там runtime-кодогенерация?

PD>Именно это получилось с памятью. Память резко возросла, и появилось желание тратить ее бесконтрольно.

Не то чтобы прямо так желание. Появилась возможность не думать о памяти вообще; и некоторые люди из первой категории стали этим злоупотреблять.
Ты просто сваливаешь в одну кучу два разных явления. В одном случае люди осознанно используют доступную память, например организуют агрессивное кэширование для достижения высокой производительности. А в другом люди просто забивают память, не думая ни о чем вообще.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[6]: ФП и многоядерная архитектура
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 19.11.08 11:04
Оценка: +1
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Именно это получилось с памятью. Память резко возросла, и появилось желание тратить ее бесконтрольно. "Память больше не ресурс". Появилось такое желание — есть такие средства. Тратим 100 Мб там, где надо 20Мб — чего ее жалеть! Если бы ее действительно 20 было — еще как бы жалели, а когда ее не то 2048, не то 4096 — незачем! Используем ее расточительно до не могу. Сейчас то же самое про ядра начали. Есть ядра — надо их использовать. Как именно — не так важно, получается ли при этом линейная зависимость производительности от их числа или же мы имеем ситуацию, когда они друг с другом ссорятся, а в итоге производительность очень слабо растет — это тоже не так важно. В целом рост все же будет, конечно, по сравнению с однопоточным приложением, а поэтому можно и объявить, что мы, мол, достигли успеха, и посмотрите, какими простыми средствами!


Только разговор не о памяти. Мейчас памят все продолжает увеличиваться примерно с теми же темпами. Ограничением пока служит x86 архитекура.
А вот с быстродейтсвием отдельно взятого процессора уже проблема. Такого роста как раньше уже не наблюдается. Пока что можно ускорить приложение наращиванием коичества процессоров в системе, но программы написанные для одного процессора не смогут эффективно исползовать десяток ядер. Придется писать программы по-другому.
Это "по-другому" как раз и выльется в использование еще большего объема памяти.

PD>Что будет дальше — зависит от двух факторов. Первый — это как будет расти производительность компьютеров, а второй — какие задачи будут на повестке дня. Если быстродействие будет так же расти, как оно росло — неэффективные решения будут жить и процветать. Если задачи не будут требовать эффективного использования ресурсов — тоже. Если же рост производительности замедлится (это скорее всего), а задачи усложнятся (а вот это большой вопрос) — тогда все эти неэффективные решения полетят к той же бабушке, а на повестку дня выйдут опять-таки эффективные решения. Если все же надо летать, то надо из этого двигателя выжать 800 км/час, даже если пилоту будет намного сложнее работать, чем водителю Жигулей.

Что значит "эффективные"?

PD>Будет потребность — будет оптимизатор. Пока ее нет — не будет. А потребность будет, когда станет ясно, сколько из-за его отсутствия теряем, и когда нам это потерянное жалко станет, потому что именно его и не хватать будет. Как с твоим рейстрейсером — ты его "оптимизировал", переведя с Эрланга на С++


Эрланг — один из самых медленных языков сейчас, а C++ — один из самых быстрых. Естественно что банальное переписывание с Эрланга на С++ может дать огромный прирос быстродейсвия. но дело тут не в памяти.
Re[7]: ФП и многоядерная архитектура
От: Pavel Dvorkin Россия  
Дата: 19.11.08 11:29
Оценка:
Здравствуйте, gandjustas, Вы писали:

G>Только разговор не о памяти. Мейчас памят все продолжает увеличиваться примерно с теми же темпами. Ограничением пока служит x86 архитекура.


Гм. Никто не мешает перейти на x64 архитектуру, где ограничений нет никаких практически. Но почему-то не переходят. Точнее, 64-битные версии XP и Vista используются уже довольно широко, а вот 64-битные программы все же пока менее популярны, и намного менее.

G>А вот с быстродейтсвием отдельно взятого процессора уже проблема. Такого роста как раньше уже не наблюдается. Пока что можно ускорить приложение наращиванием коичества процессоров в системе, но программы написанные для одного процессора не смогут эффективно исползовать десяток ядер. Придется писать программы по-другому.


+1

G>Это "по-другому" как раз и выльется в использование еще большего объема памяти.


-1. Совсем не обязательно.

PD>>Что будет дальше — зависит от двух факторов. Первый — это как будет расти производительность компьютеров, а второй — какие задачи будут на повестке дня. Если быстродействие будет так же расти, как оно росло — неэффективные решения будут жить и процветать. Если задачи не будут требовать эффективного использования ресурсов — тоже. Если же рост производительности замедлится (это скорее всего), а задачи усложнятся (а вот это большой вопрос) — тогда все эти неэффективные решения полетят к той же бабушке, а на повестку дня выйдут опять-таки эффективные решения. Если все же надо летать, то надо из этого двигателя выжать 800 км/час, даже если пилоту будет намного сложнее работать, чем водителю Жигулей.

G>Что значит "эффективные"?

PD>>Будет потребность — будет оптимизатор. Пока ее нет — не будет. А потребность будет, когда станет ясно, сколько из-за его отсутствия теряем, и когда нам это потерянное жалко станет, потому что именно его и не хватать будет. Как с твоим рейстрейсером — ты его "оптимизировал", переведя с Эрланга на С++


G>Эрланг — один из самых медленных языков сейчас, а C++ — один из самых быстрых. Естественно что банальное переписывание с Эрланга на С++ может дать огромный прирос быстродейсвия. но дело тут не в памяти.


А я о памяти и не говорил в этом случае. fddima не дал мне никаких оснований о ней говорить.
With best regards
Pavel Dvorkin
Re[7]: ФП и многоядерная архитектура
От: Pavel Dvorkin Россия  
Дата: 19.11.08 12:10
Оценка:
Здравствуйте, Sinclair, Вы писали:

< все skipped>

Мне кажется, мы здесь просто о разных вещах говорим. Ты — о подходе со стороны разных категорий разработчиков (и в общем ты прав, хот с деталями можно поспорить), я — о ситуации с ресурсами и задачами. Эти области пересекаются, но не совпадают.

Насчет библиотеки по регулярным выражениям — я с ними дел не имею и они мне даром не нужны. У меня совсем другие задачи, текстовой обработкой я не занимаюсь. Спроси тех, кто с ними работает.
With best regards
Pavel Dvorkin
Re[7]: ФП и многоядерная архитектура
От: Sinclair Россия https://github.com/evilguest/
Дата: 19.11.08 12:17
Оценка: +1
Здравствуйте, gandjustas, Вы писали:

G>Только разговор не о памяти. Мейчас памят все продолжает увеличиваться примерно с теми же темпами. Ограничением пока служит x86 архитекура.

Не уверен.
G>А вот с быстродейтсвием отдельно взятого процессора уже проблема. Такого роста как раньше уже не наблюдается.
Имхо, это связано с тем, что это быстродействие просто нечем нагрузить. Какой толк от увеличения тактовой частоты вдвое, если память всё равно не успевает "подвозить" данные?

G>Пока что можно ускорить приложение наращиванием коичества процессоров в системе, но программы написанные для одного процессора не смогут эффективно исползовать десяток ядер. Придется писать программы по-другому.

Тут есть небольшая тонкость. Одно дело — несколько процессоров, другое — несколько ядер.
G>Это "по-другому" как раз и выльется в использование еще большего объема памяти.
Вот в этом месте мне не до конца понятно. Ну вот увеличишь ты объем памяти до 64Гб. А толку, если ее доставка в CPU займет в 16 раз больше времени, чем для 4Гб? Независимо от того, о скольких CPU мы говорим.

G>Что значит "эффективные"?

Это значит, что решения будут учитывать latency памяти, приколы с шедулингом на соседних ядрах и далёких процессорах, а также разнообразные подходы к перестройке алгоритма в зависимости от окружения.
Ситуация примерно такая же, как с многомерными индексами в СУБД. Для размерности =1 известны превосходные решения с логарифмическими характеристиками; для двух есть приемлемые решения; для размерностей выше десяти прямой перебор оказывается быстрее, чем любой индекс.

G>Эрланг — один из самых медленных языков сейчас, а C++ — один из самых быстрых. Естественно что банальное переписывание с Эрланга на С++ может дать огромный прирос быстродейсвия. но дело тут не в памяти.

Не очень понятно, что такое "быстрый/медленный". Если мы будем заниматься математическими микробенчмарками — эрланг проиграем. А если задачами массового обслуживания, то на плюсах придется сильно попотеть для догоняния Эрланга.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[9]: ФП и многоядерная архитектура
От: IT Россия linq2db.com
Дата: 19.11.08 12:35
Оценка: +2
Здравствуйте, Pavel Dvorkin, Вы писали:

IT>>Мне раньше компилятор тоже только мешал. Сейчас тот же компилятор помогает.


PD>Из этой ситуации есть два выхода.


PD>1. Поменять компилятор.

PD>2. Поменять того, кто с этим компилятором работает.

Ответ неверный, садись, два. Правильный ответ — время от времени нужно апгрейтить мозги, а не пользоваться всю жизнь устаревшей моделью сороколетней давности.
Неясность изложения обычно происходит от путаницы в мыслях.
Если нам не помогут, то мы тоже никого не пощадим.
Re[5]: ФП и многоядерная архитектура
От: IT Россия linq2db.com
Дата: 19.11.08 12:35
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Так ускоряется в разы в зависимости от количества ядер путём внесения маленького изменения или все же необходим целый комплекс решений, включающих как процесс кодирование, так и архитектуру приложения и пр ?


Что именно тебе не понятно в первом или во втором высказывании?
Неясность изложения обычно происходит от путаницы в мыслях.
Если нам не помогут, то мы тоже никого не пощадим.
Re[10]: ФП и многоядерная архитектура
От: Pavel Dvorkin Россия  
Дата: 19.11.08 12:53
Оценка:
Здравствуйте, IT, Вы писали:

IT>Ответ неверный, садись, два.


Поумнее что-нибудь придумал бы, что ли.
With best regards
Pavel Dvorkin
Re[6]: ФП и многоядерная архитектура
От: Pavel Dvorkin Россия  
Дата: 19.11.08 12:54
Оценка:
Здравствуйте, IT, Вы писали:

IT>Что именно тебе не понятно в первом или во втором высказывании?


А разве я сказал, что мне что-то непонятно ?
With best regards
Pavel Dvorkin
Re[8]: ФП и многоядерная архитектура
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 19.11.08 12:56
Оценка:
Здравствуйте, Sinclair, Вы писали:

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


G>>Только разговор не о памяти. Мейчас памят все продолжает увеличиваться примерно с теми же темпами. Ограничением пока служит x86 архитекура.

S>Не уверен.
Возможно.

G>>А вот с быстродейтсвием отдельно взятого процессора уже проблема. Такого роста как раньше уже не наблюдается.

S>Имхо, это связано с тем, что это быстродействие просто нечем нагрузить. Какой толк от увеличения тактовой частоты вдвое, если память всё равно не успевает "подвозить" данные?
Ни разу не видел чтобы программа серьезно тормозила из-за низкого быстродейсвтия самой памяти (синтетические тесты с кеш-промахами не в счет).

G>>Пока что можно ускорить приложение наращиванием коичества процессоров в системе, но программы написанные для одного процессора не смогут эффективно исползовать десяток ядер. Придется писать программы по-другому.

S>Тут есть небольшая тонкость. Одно дело — несколько процессоров, другое — несколько ядер.
Нутут еще одна тонкость. Одно дело фичиеские ядра в процессоре, а другое дело логические. Но эти тонкости покачто мало интересуют.

G>>Это "по-другому" как раз и выльется в использование еще большего объема памяти.

S>Вот в этом месте мне не до конца понятно. Ну вот увеличишь ты объем памяти до 64Гб. А толку, если ее доставка в CPU займет в 16 раз больше времени, чем для 4Гб? Независимо от того, о скольких CPU мы говорим.
Обычно средние затраты на считывание-запись в памяти очень малы по сравнению выполнением какого-либо алгоритма.

G>>Что значит "эффективные"?

S>Это значит, что решения будут учитывать latency памяти, приколы с шедулингом на соседних ядрах и далёких процессорах, а также разнообразные подходы к перестройке алгоритма в зависимости от окружения.
S>Ситуация примерно такая же, как с многомерными индексами в СУБД. Для размерности =1 известны превосходные решения с логарифмическими характеристиками; для двух есть приемлемые решения; для размерностей выше десяти прямой перебор оказывается быстрее, чем любой индекс.
Ну и как в СУБД нам совершенно необязательно чтобы алгоритм учитывал все, досаточно чтобы он работал не намного хуже теоретического предела.

G>>Эрланг — один из самых медленных языков сейчас, а C++ — один из самых быстрых. Естественно что банальное переписывание с Эрланга на С++ может дать огромный прирос быстродейсвия. но дело тут не в памяти.

S>Не очень понятно, что такое "быстрый/медленный". Если мы будем заниматься математическими микробенчмарками — эрланг проиграем. А если задачами массового обслуживания, то на плюсах придется сильно попотеть для догоняния Эрланга.
Рассматривался рэйтресер — программа, которая много считала.
Re[6]: ФП и многоядерная архитектура
От: Mr.Cat  
Дата: 19.11.08 13:04
Оценка: :)
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Во-вторых, оно, как правило, упрощает написание кода, а это для них немаловажно.
Вы так говорите, как будто это что-то плохое. Сокращать затраты на написание кода, удобство поддержки, тестирования и отладки — это очень важно.

PD>Что же касается производительности (или расхода памяти и т.д.) — это они просто во внимание принимать не хотят.

Это Вы так зря. Преждевременная оптимизация — это дело неблагодарное. А выбор якобы более быстрого и экономного по памяти средства разработки без рассмотрения специфики задачи — это и есть преждевременная оптимизация. Оптимизировать надо то, что является узким местом. Зачем оптимизировать свой код, если большую часть процессорного времени и памяти съедает СУБД, веб-сервер или что-нить подобное?

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

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

PD>Тратим 100 Мб там, где надо 20Мб — чего ее жалеть!

Смотря на что тратится память.

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

Интересно, а как бы в этой задаче выглядел OCaml?

PD>какие задачи будут на повестке дня.

С чего бы разнообразию задач сократиться?
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.