-
mt2
-
-
-
Присоединился 10-19-2007
-
-
Объявления 88
-
-
|
Как насчет графики для Жизни?
Очевидно, что решение должно быть сделано в виде консольной программы, однако GUI может быть очень полезным при тестировании и отладке в процессе программирования. Версия с GUI может быть оформлена как инструмент и приложена к основному решению. Этот инструмент может использовать те же модули Жизни, что и основное решение (с директивами условной компиляции). Как насчет дополнительных баллов за такой инструмент? (Для его хорошей работы может потребоваться дополнительная синхронизация потоков.)
Кстати, и для TBB это будет хороший PR – а то может сложиться впечатление, что TBB только для консоли ;)
-- Михаил (mt2).
|
|
| |
|
|
На: Как насчет графики для Жизни?
день добрый, Михаил.
подозреваю, что нет смысла повторять ответ Клэя. Идея отличная, но страшно представить как это может все усложнить :)
Спасибо за Новогодние поздравления!
-Марианна
Марианна Светлосанова Intel® Software Network
|
|
| |
-
mt2
-
-
-
Присоединился 10-19-2007
-
-
Объявления 88
-
-
|
На: Как насчет графики для Жизни?
Добрый вечер, Марианна!
Спасибо за ответ! между тем в ожидании Вашего ответа я сделал GUI-инструмент, вопреки опасениям Клэя это оказалось не столь сложно. В особенности на Delphi ;) Теперь вот не знаю что делать, прикладывать ли этот инструмент к решению, или отсылать решение без него. По логике, в отличие от всех предыдущих задач, данная задача очень незаметно может быть испорчена оптимизацией - в итоге мы получим некий работающий клеточный автомат, но в точности не соответствующий правилам "Жизни". Тут уже жалели судей по поводу сложностей проверки предыдущей задачи, их участь в данной задаче будет еще хуже - в условиях практически не предусмотрено средств проверки соответствия правилам "Жизни". В своем инструменте я реализовал средства вплоть до сравнения для каждого поколения с результатами работы процедуры, реализующей примитивный алгоритм "Жизни" с последовательным перебором всех клеток. Для упрощения судейства нужно, чтобы подобное сделали и другие участники. Для этого нужно пообещать им (т.е. нам :) бонус, собственно об этом и был мой вопрос.
Еще раз спасибо,
-- Михаил (mt2).
|
|
| |
|
|
На: Как насчет графики для Жизни?
Привет, Как сказал Клэй, судейство будет проходить по принципу "кто быстрее подсчитает N поколений". Таким образом, насколько я понимаю, проверка правильности результата будет заключаться в простом сравнении выходных файлов. В идеале, результат должен полностью совпасть с результатом исходного нераспараллеленного алгоритма. Разницу легко посмотреть любым дифом, либо в Excel, либо написать что-то свое. Поэтому особых проблем с судейством наверное все-таки не будет. А GUI посмотреть любопытно, так что шлите - лично мне интересно. Удачи,
Дмитрий ОганезовIntel® Software Network
|
|
| |
-
mt2
-
-
-
Присоединился 10-19-2007
-
-
Объявления 88
-
-
|
На: Как насчет графики для Жизни?
MAD\doganezo:Привет,
Как сказал Клэй, судейство будет проходить по принципу "кто быстрее подсчитает N поколений". Таким образом, насколько я понимаю, проверка правильности результата будет заключаться в простом сравнении выходных файлов. В идеале, результат должен полностью совпасть с результатом исходного нераспараллеленного алгоритма. Разницу легко посмотреть любым дифом, либо в Excel, либо написать что-то свое. Поэтому особых проблем с судейством наверное все-таки не будет.
А GUI посмотреть любопытно, так что шлите - лично мне интересно.
Удачи,
Привет! Спасибо за пожелания!!!
С теоретической точки зрения, совпадение небольшого, пусть и основного участка, всего поля с эталоном не гарантирует правильность. Возможны всякие пограничные явления и т.д. (Можно подумать, как слегка уменьшить поле ;) Кроме того, у нас ведь будут многопоточные решения, и тут много чего можно исследовать с помощью GUI. Например, в одной процедуре массив соседей увеличивается, в другой уменьшается, если мы запустим эти процедуры параллельно, нужно ли синхронизировать изменения в этом массиве? Если процедуры всегда обращаются к разным элементам, то можно и не синхронизировать и выиграть изрядное время в скорости, а если иногда элементы и совпадают, то насколько часто? Может, вероятность того, что потоки обратятся в одно и то же время к одному и тому же элементу, ничтожно мала? Так что и в этом случае решению без синхронизации скорее всего повезет, хотя оно и будет потенциально неверным. Отследить подобные проблемы анализом только кода будет непросто.
Я пришлю GUI-инструмент, а не снизят ли мне за это очки? Раз не одобрено. Хотелось бы надеятся на обратное;) Может, выложить отдельно, напимер, в эту тему? Мне тоже будет интересно улышать мнения, кому и насколько этот инструмент представляется полезным для решения поставленной задачи.
И Вам удач,
Михаил (mt2).
|
|
| |
|
|
На: Как насчет графики для Жизни?
Чесно говоря, я глубоко в распараллеливании "жизни" не копался, но знаю что эта задача входит в примеры TBB. Поэтому анализ результатов, насколько я понимаю, интересен скорее команде TBB чем жюри конкурса - для жюри, предполагаю, достаточно будет проанализировать некоторое эталонное поле. Очевидно, что из всех заданий данное ("жизнь") наиболее интересно с т.з. графики. А может есть уже готовые симуляторы в интернете, не встречали?
Дмитрий ОганезовIntel® Software Network
|
|
| |
-
mt2
-
-
-
Присоединился 10-19-2007
-
-
Объявления 88
-
-
|
На: Как насчет графики для Жизни?
MAD\doganezo:Чесно говоря, я глубоко в распараллеливании "жизни" не копался, но знаю что эта задача входит в примеры TBB.
Цитирую задание:
"Типовой алгоритм моделирования проверяет все ячейки решетки, подсчитывает соседей для каждой ячейки, и определяет остается ли клетка живой, умрет или родится в данном поколении.
Альтернативный алгоритм хранит список клеток, которые могут потребовать внимания в следующем поколении. Таким образом, вычисления происходят только для ячеек, которые могут изменить статус или повлиять на его изменение. Данный алгоритм приведен в приложенном коде. Текстовый файл с более детальным описанием ключен в архив кода."
Алгоритм Жизни, описанный, в частности, в рекомендуемой на сайте TBB книге (TBB's O'Reilly Book: Intel® Threading Building Blocks: Outfitting C++ for Multi-core Processor Parallelism, by James Reinders) - это "типовой", а в задании предложен "Альтернативный".
Поэтому анализ результатов, насколько я понимаю, интересен скорее команде TBB чем жюри конкурса - для жюри, предполагаю, достаточно будет проанализировать некоторое эталонное поле.
Да, только распечатывается это поле далеко не полностью. А если полностью: 5 тысяч строк по 5 тысяч символов (и на выводе ничто "не скусит"), то может быть верны уже высказанные опасения на американском форуме, что мы вернулись к ситуации 1ой задачи, где значительную часть времени занимал I/O ;)
Очевидно, что из всех заданий данное ("жизнь") наиболее интересно с т.з. графики. А может есть уже готовые симуляторы в интернете, не встречали?
Одну из свежих ссылок подсказал Клэй на американском форуме, кстати, там рашено на TBB.
-- Михаил (mt2).
|
|
| |
-
mt2
-
-
-
Присоединился 10-19-2007
-
-
Объявления 88
-
-
|
На: Как насчет графики для Жизни?
|
| |
-
mt2
-
-
-
Присоединился 10-19-2007
-
-
Объявления 88
-
-
|
На: Как насчет графики для Жизни?
mt2:
А выложить сюда не получилось, сервер обругал :-(
-- Михаил.
|
|
| |
|
|
На: Как насчет графики для Жизни?
Прикольно! Надо подобрать красивые исходные данные. Разбираюсь с форумом, завтра отвечу поподробнее (и на Ваш e-mail тоже)
Дмитрий ОганезовIntel® Software Network
|
|
| |