Хамелеоны быстрые и очень быстрые
От: remark Россия http://www.1024cores.net/
Дата: 16.09.09 17:20
Оценка: 67 (7)
Запостил в раздел C/C++ описание своей реализации задачи chameneos-redux на С для The Computer Language Benchmarks Game:
http://www.rsdn.ru/forum/cpp/3539197.1.aspx
Автор: remark
Дата: 16.09.09

Т.к. форума, посвященного многопоточности, на RSDN нет, а материал может быть интересен и разработчикам на Java, C# и др., то делаю анонс тут.

Дабы немного разжечь интерес:

На момент сабмита моей реализации самая быстрая реализация была за Haskell'ем с результатом 4.59 секунд, следующая за ней — С++ с результатом 4.74 секунды. Так же можно отметить: самая быстрая реализация на Java – 7 сек.; Scala – 15 сек.; Erlang – 111 сек.; Ruby — 131 сек.; Python — 221 сек.
Результат моей реализации — 0.72 секунды.



1024cores — all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
Re: Хамелеоны быстрые и очень быстрые
От: FR  
Дата: 17.09.09 14:50
Оценка: :))) :))
Здравствуйте, remark, Вы писали:

R>Дабы немного разжечь интерес:

R>

R>На момент сабмита моей реализации самая быстрая реализация была за Haskell'ем с результатом 4.59 секунд, следующая за ней — С++ с результатом 4.74 секунды. Так же можно отметить: самая быстрая реализация на Java – 7 сек.; Scala – 15 сек.; Erlang – 111 сек.; Ruby — 131 сек.; Python — 221 сек.
R>Результат моей реализации — 0.72 секунды.


Ну нельзя же так, взял и всю малину Хаскелистам обломал
Re[2]: Хамелеоны быстрые и очень быстрые
От: hexamino http://hexamino.blogspot.com/
Дата: 17.09.09 15:10
Оценка: :)))
Здравствуйте, FR, Вы писали:

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


R>>Дабы немного разжечь интерес:

R>>

R>>На момент сабмита моей реализации самая быстрая реализация была за Haskell'ем с результатом 4.59 секунд, следующая за ней — С++ с результатом 4.74 секунды.


FR>Ну нельзя же так, взял и всю малину Хаскелистам обломал


Небось, в хасекле ленивые хамелеоны никуда не ходят, а сразу вычисляют цвет, который они будут иметь в конце.
Re[2]: Хамелеоны быстрые и очень быстрые
От: thesz Россия http://thesz.livejournal.com
Дата: 20.09.09 13:26
Оценка:
Здравствуйте, FR, Вы писали:

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


R>>Дабы немного разжечь интерес:

R>>

R>>На момент сабмита моей реализации самая быстрая реализация была за Haskell'ем с результатом 4.59 секунд, следующая за ней — С++ с результатом 4.74 секунды. Так же можно отметить: самая быстрая реализация на Java – 7 сек.; Scala – 15 сек.; Erlang – 111 сек.; Ruby — 131 сек.; Python — 221 сек.
R>>Результат моей реализации — 0.72 секунды.


FR>Ну нельзя же так, взял и всю малину Хаскелистам обломал


http://www.haskell.org/ghc/docs/latest/html/libraries/base/Control-Concurrent.html#8

Поскольку я не могу проверить работу на нескольких ядрах (оба мои компа одноядерные), я помещу только ссылку, поскольку sapienti sat.
Yours truly, Serguey Zefirov (thesz NA mail TOCHKA ru)
Re[3]: Хамелеоны быстрые и очень быстрые
От: FR  
Дата: 21.09.09 05:09
Оценка:
Здравствуйте, thesz, Вы писали:


FR>>Ну нельзя же так, взял и всю малину Хаскелистам обломал


T>http://www.haskell.org/ghc/docs/latest/html/libraries/base/Control-Concurrent.html#8


T>Поскольку я не могу проверить работу на нескольких ядрах (оба мои компа одноядерные), я помещу только ссылку, поскольку sapienti sat.


Это совсем другое, там просто нет примитивов необходимых чтобы догнать си.
Re[4]: Хамелеоны быстрые и очень быстрые
От: thesz Россия http://thesz.livejournal.com
Дата: 21.09.09 09:35
Оценка:
Здравствуйте, FR, Вы писали:

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



FR>>>Ну нельзя же так, взял и всю малину Хаскелистам обломал


T>>http://www.haskell.org/ghc/docs/latest/html/libraries/base/Control-Concurrent.html#8


T>>Поскольку я не могу проверить работу на нескольких ядрах (оба мои компа одноядерные), я помещу только ссылку, поскольку sapienti sat.


FR>Это совсем другое, там просто нет примитивов необходимых чтобы догнать си.


Да что ты говоришь!
Yours truly, Serguey Zefirov (thesz NA mail TOCHKA ru)
Re[5]: Хамелеоны быстрые и очень быстрые
От: FR  
Дата: 21.09.09 09:55
Оценка:
Здравствуйте, thesz, Вы писали:

T>>>Поскольку я не могу проверить работу на нескольких ядрах (оба мои компа одноядерные), я помещу только ссылку, поскольку sapienti sat.


FR>>Это совсем другое, там просто нет примитивов необходимых чтобы догнать си.


T>Да что ты говоришь!


Ну привяжем все потоки к одному ядру и максимум добъемся того же результата что на одноядернике http://shootout.alioth.debian.org/u32/benchmark.php?test=chameneosredux&lang=all&box=1 а чтобы догнать вариант от remark надо еще в неколько раз ускорится что нереально без ручного управления памятью
Re[5]: Хамелеоны быстрые и очень быстрые
От: remark Россия http://www.1024cores.net/
Дата: 22.09.09 13:44
Оценка: +2
Здравствуйте, thesz, Вы писали:

FR>>>>Ну нельзя же так, взял и всю малину Хаскелистам обломал


T>>>http://www.haskell.org/ghc/docs/latest/html/libraries/base/Control-Concurrent.html#8


T>>>Поскольку я не могу проверить работу на нескольких ядрах (оба мои компа одноядерные), я помещу только ссылку, поскольку sapienti sat.


FR>>Это совсем другое, там просто нет примитивов необходимых чтобы догнать си.


T>Да что ты говоришь!


Было бы интересно увидеть практическое подкрепление этим словам.


1024cores — all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
Re[6]: Хамелеоны быстрые и очень быстрые
От: thesz Россия http://thesz.livejournal.com
Дата: 22.09.09 16:49
Оценка:
Здравствуйте, remark, Вы писали:

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


FR>>>>>Ну нельзя же так, взял и всю малину Хаскелистам обломал


T>>>>http://www.haskell.org/ghc/docs/latest/html/libraries/base/Control-Concurrent.html#8


T>>>>Поскольку я не могу проверить работу на нескольких ядрах (оба мои компа одноядерные), я помещу только ссылку, поскольку sapienti sat.


FR>>>Это совсем другое, там просто нет примитивов необходимых чтобы догнать си.


T>>Да что ты говоришь!


R>Было бы интересно увидеть практическое подкрепление этим словам.


Я тоже.

Дело за малым под псевдонимом FR. Это было его высказывание насчёт отсутствия примитивов.
Yours truly, Serguey Zefirov (thesz NA mail TOCHKA ru)
Re[7]: Хамелеоны быстрые и очень быстрые
От: remark Россия http://www.1024cores.net/
Дата: 22.09.09 17:10
Оценка: :)
Здравствуйте, thesz, Вы писали:

FR>>>>>>Ну нельзя же так, взял и всю малину Хаскелистам обломал


T>>>>>http://www.haskell.org/ghc/docs/latest/html/libraries/base/Control-Concurrent.html#8


T>>>>>Поскольку я не могу проверить работу на нескольких ядрах (оба мои компа одноядерные), я помещу только ссылку, поскольку sapienti sat.


FR>>>>Это совсем другое, там просто нет примитивов необходимых чтобы догнать си.


T>>>Да что ты говоришь!


R>>Было бы интересно увидеть практическое подкрепление этим словам.


T>Я тоже.


T>Дело за малым под псевдонимом FR. Это было его высказывание насчёт отсутствия примитивов.


А, понятно. Тогда наверное я неправильно трактовал твою фразу (по-моему уже не в первый раз). Просто фразе "Да что ты говоришь!" можно придать 2 совершенно разных смысла — "Конечно это так, этим ты америку не открыл" или "Это — полная чушь".


1024cores — all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
Re[7]: Хамелеоны быстрые и очень быстрые
От: FR  
Дата: 22.09.09 18:02
Оценка:
Здравствуйте, thesz, Вы писали:


T>Я тоже.


T>Дело за малым под псевдонимом FR. Это было его высказывание насчёт отсутствия примитивов.


http://www.rsdn.ru/forum/philosophy/3543472.1.aspx
Автор: FR
Дата: 21.09.09
Re[6]: Хамелеоны быстрые и очень быстрые
От: remark Россия http://www.1024cores.net/
Дата: 22.09.09 18:22
Оценка: 1 (1)
Здравствуйте, FR, Вы писали:

FR>Ну привяжем все потоки к одному ядру и максимум добъемся того же результата что на одноядернике http://shootout.alioth.debian.org/u32/benchmark.php?test=chameneosredux&lang=all&box=1 а чтобы догнать вариант от remark надо еще в неколько раз ускорится что нереально без ручного управления памятью



Кстати, я вот задумался над следующим моментом. Вопрос к Haskell сообществу.
Вот эта программа на Haskell:
http://shootout.alioth.debian.org/u32q/benchmark.php?test=chameneosredux&lang=ghc&id=2
показывает 4.59 сек когда доступны все 4 ядра (реально она использует только 2), и 5.19 сек когда доступно только 1 ядро.

Насколько я понял из кода, она проводит сразу 2 встречи параллельно, при этом первая встреча привязывается к процессору 0, а вторая — к процессору 1. Соотв. я бы ожидал, что время выполнения на 1 ядре должно быть в 2 раза больше, чем на 4(2), т.к. встречи полностью независимы. Т.е. должно быть идеальное линейное ускорение. Но этого не происходит. Почему?



1024cores — all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
Re[8]: Хамелеоны быстрые и очень быстрые
От: thesz Россия http://thesz.livejournal.com
Дата: 23.09.09 08:50
Оценка:
Здравствуйте, FR, Вы писали:

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



T>>Я тоже.


T>>Дело за малым под псевдонимом FR. Это было его высказывание насчёт отсутствия примитивов.


FR>http://www.rsdn.ru/forum/philosophy/3543472.1.aspx
Автор: FR
Дата: 21.09.09


Не надо тиражировать глупости.

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

Надо достичь баланса в этом самом межпроцессном обмене, а для этого средства есть.
Yours truly, Serguey Zefirov (thesz NA mail TOCHKA ru)
Re[9]: Хамелеоны быстрые и очень быстрые
От: FR  
Дата: 23.09.09 09:00
Оценка: +1
Здравствуйте, thesz, Вы писали:

T>Не надо тиражировать глупости.


Не тиражируй

T>Параллелизм в этой задаче всё же есть (время выполнения миллиард тактов, не меньше), но он очень мелкий, поэтому избавившись от расходов на межпроцессный обмен мы получаем ускорение.


T>Надо достичь баланса в этом самом межпроцессном обмене, а для этого средства есть.


Так давай делай раз все что нужно есть.
Если империя нанесет ответный удар будет хорошая реклама для Хаскеля.
Re[9]: Хамелеоны быстрые и очень быстрые
От: CreatorCray  
Дата: 23.09.09 09:15
Оценка:
Здравствуйте, thesz, Вы писали:

T>Надо достичь баланса в этом самом межпроцессном обмене, а для этого средства есть.

Подтверди на практике.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[10]: Хамелеоны быстрые и очень быстрые
От: thesz Россия http://thesz.livejournal.com
Дата: 23.09.09 10:43
Оценка: :))
Здравствуйте, FR, Вы писали:

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


T>>Параллелизм в этой задаче всё же есть (время выполнения миллиард тактов, не меньше), но он очень мелкий, поэтому избавившись от расходов на межпроцессный обмен мы получаем ускорение.


T>>Надо достичь баланса в этом самом межпроцессном обмене, а для этого средства есть.

FR>Так давай делай раз все что нужно есть.
FR>Если империя нанесет ответный удар будет хорошая реклама для Хаскеля.

Я бы предпочёл, чтобы этим занялся ты.

Мне неинтересен [b]конкретно этот[b] эксперимент. У меня своих висящих штуки три или больше, с потенциально гораздо большим выхлопом.
Yours truly, Serguey Zefirov (thesz NA mail TOCHKA ru)
Re[10]: Хамелеоны быстрые и очень быстрые
От: thesz Россия http://thesz.livejournal.com
Дата: 23.09.09 10:44
Оценка: :)
Здравствуйте, CreatorCray, Вы писали:

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


T>>Надо достичь баланса в этом самом межпроцессном обмене, а для этого средства есть.

CC>Подтверди на практике.

Уже неоднократно, поэтому обратись к кому ещё.

Конкретно этот эксперимент мне неинтересен, поскольку у меня своих покрупней и повыгодней есть штуки три.
Yours truly, Serguey Zefirov (thesz NA mail TOCHKA ru)
Re[11]: Хамелеоны быстрые и очень быстрые
От: FR  
Дата: 23.09.09 11:07
Оценка:
Здравствуйте, thesz, Вы писали:

T>Я бы предпочёл, чтобы этим занялся ты.


Да я не думал что ленивый язык настолько сильно воздействует на мозг
Ты лучше Влада попроси думаю он с удовольствием сделает.

T>Мне неинтересен [b]конкретно этот[b] эксперимент. У меня своих висящих штуки три или больше, с потенциально гораздо большим выхлопом.


Угу вполне стандартная отмазка
Re[11]: Хамелеоны быстрые и очень быстрые
От: remark Россия http://www.1024cores.net/
Дата: 23.09.09 11:09
Оценка: 1 (1) +4
Здравствуйте, thesz, Вы писали:

T>>>Надо достичь баланса в этом самом межпроцессном обмене, а для этого средства есть.

CC>>Подтверди на практике.

T>Уже неоднократно, поэтому обратись к кому ещё.


T>Конкретно этот эксперимент мне неинтересен, поскольку у меня своих покрупней и повыгодней есть штуки три.


Не вопрос, тогда мы просто подождём с тем, что бы верить тебе на слово, до того момента, когда у тебя появится время.
А то так утверждение достаточно не очевидно по крайней мере для меня и для значительного числа Haskell программистов, которые на протяжении нескольких лет пытались максимально ускорить эту реализацию:
http://www.haskell.org/pipermail/haskell-cafe/2006-January/013745.html


1024cores &mdash; all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
Re[11]: Хамелеоны быстрые и очень быстрые
От: CreatorCray  
Дата: 23.09.09 11:30
Оценка:
Здравствуйте, thesz, Вы писали:

T>>>Надо достичь баланса в этом самом межпроцессном обмене, а для этого средства есть.

CC>>Подтверди на практике.
T>Уже неоднократно, поэтому обратись к кому ещё.
Где можно наглядно ознакомиться с результатами, сравнить?

T>Конкретно этот эксперимент мне неинтересен, поскольку у меня своих покрупней и повыгодней есть штуки три.

О да!
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.