?

Log in

No account? Create an account
 

Геймификация скучных процессов - swizard — ЖЖ

About Геймификация скучных процессов

Previous Entry Геймификация скучных процессов 25 апр, 2016 @ 23:18 Next Entry
Оставить комментарий
[User Picture Icon]
From:thesz
Date:Апрель, 26, 2016 12:25 (UTC)
(Link)
Это заслуживает отдельного поста, как и моё решение.
From:(Anonymous)
Date:Апрель, 27, 2016 00:03 (UTC)
(Link)
Если я не ошибаюсь, то у Вас в третьей задаче получилось лучшее решение по Вашим словам, чем у автора swizard. Вы говорите, что получили расписание в 25 секунд на двух процессорах для примера номер 6.

Если не ошибаюсь, то после подсчета всех задержек операций для примера номер 6 получается 56 секунд. Но 2 процессора по 25 секунд дают только 50 секунд в сумме. Как так получается?

То есть уже глядя на это можно сказать, что решение третье й задачи некорректнное и не удивительно, что не последовало предложения от трудоустройстве. Странно, что swizard это не озвучил
[User Picture Icon]
From:nponeccop
Date:Апрель, 27, 2016 00:20 (UTC)
(Link)
Тонко!
[User Picture Icon]
From:worm_ii
Date:Апрель, 27, 2016 07:46 (UTC)
(Link)
Может быть, там оптимизация: встречающиеся по два раза подвыражения (- 3 (* 2 1)) и (- 10 9) вычисляются только один раз?
From:(Anonymous)
Date:Апрель, 27, 2016 08:39 (UTC)
(Link)
Не похоже, поскольку там еще два умножения остается по 10 секунд. И вроде в условиях задачи про оптимизации вычислений не говорится, только планирование. Да и чего останавливаться на анализе общих подвыражений тогда. Может сразу константный результат подсчитать и подставить?
[User Picture Icon]
From:thesz
Date:Апрель, 27, 2016 10:01 (UTC)
(Link)
Так и есть. Общение со swizard не запретило использование CSE.
[User Picture Icon]
From:thesz
Date:Апрель, 27, 2016 09:50 (UTC)
(Link)
Потрудитесь прочитать все коммментарии к записи с задачами.
From:(Anonymous)
Date:Апрель, 27, 2016 10:07 (UTC)
(Link)
Я видел только Ваш комментарий про использование CSE там или что-то еще было? Ну так вот предположим CSE "бесплатное" для интерпретатора, хотя это не так. Там как минимум одно умножение внутри общего подвыражения, а еще два последовательных умножения, возведение в квадрат и умножение на 2, итого 30 сек. Вы может выложить распланированные операции примера 6 для двух процессоров?
[User Picture Icon]
From:thesz
Date:Апрель, 27, 2016 10:11 (UTC)
(Link)
Мой код показывает расписание.
From:(Anonymous)
Date:Апрель, 27, 2016 11:01 (UTC)
(Link)
Вот упрощу пример номер 6. убрав операции сложения и вычитания, чтобы было ясно, на что я обращаю внимание

a*(b*c)*(b*c)

В этом примере получается 3 последовательных операции умножения, их нельзя выполнять параллельно, потому что операнд следующей операции умножения вычисляется на предыдущем шаге, кроме самого первого. Получается 3*10=30 секунд. А в Вашем планировщике получилось грубо говоря 20 секунд на вычисление умножений потрачено.

Вообще это задачка даже не для студентов первого курса, а для школьников, которая считается в уме. Тут даже не надо запускать код на Хаскелле, чтобы процесс поиска истины шел побыстрее. Неужто верификацию нельзя провести простыми вычислениями в уме?

Вот есть у Вас какие-то гипотезы хотя бы как такой код распланировать за 20 сек на двух-трех-десяти процессорах? Или в Вашей реализации все-таки ошибка?
[User Picture Icon]
From:thesz
Date:Апрель, 27, 2016 11:07 (UTC)
(Link)
Вы неправы.

Прочитайте внимательно задание.

То, что вы описали, записывается, как (* a (* b c) (* b c)). В правильной префиксной записи это *(a,*(b,c),*(b,c)). То есть, умножение здесь тернарное, выполняется сразу над тремя аргументами и не превращается в *(a,*(*(b,c),*(b,c))).

По крайней мере, только из такой интерпретации получаются расписания swizard. Это лисповая интерпретация, не обычная.
From:(Anonymous)
Date:Апрель, 27, 2016 12:24 (UTC)
(Link)
Тут тогда речь идет не о правости/неправости кого-либо, а о некорректной постановке задачи, в условиях которой нет оптимальных решений, потому что нет критериев.

Например нет зависимости вычисления операций от количества операндов или ограничений на операнды, то есть нет никакой связи задачи с реальным миром. На умножение с парой триллионов операндов тратится столько же времени сколько на два операнда.

Далее, если считать, что swizard ни где строго не ограничивает ускорение вычислений (насколько я вижу он прямо не разрешал /запрещал использование СSE). Т.е. анализ считается как бы "бесплатным" для процессора. то тогда к примеру можно выполнить свертку констант "бесплатно" по таблице и будет 0 секунд результат. Или даже не сворачивать константы, а провести перегруппировку дерева операндов и получится в примере 6 уже 23 секунды работы на двух ядрах вместо 25. И тогда 23 секунды это лучшее решение.

В целом, в условиях некорректной постановки задачи, когда можно нафантазировать разные "бесплатные" оптимизации, не приходится говорить о лучшем или худшем решении. И результат в 25 секунд не повод считать решение лучшим и брать человека на работу только поэтому. Нужны другие критерии


[User Picture Icon]
From:thesz
Date:Апрель, 27, 2016 12:39 (UTC)
(Link)
Их хватает, этих критериев. Присмотритесь повнимательней.
From:(Anonymous)
Date:Апрель, 27, 2016 12:44 (UTC)
(Link)
Так какие ограничения на ускорение вычислений? СSE ведь не бесплатное

А так можно и в 23 секунды уложиться при планировании, ежели манипулировать выичслениями
From:(Anonymous)
Date:Апрель, 27, 2016 14:26 (UTC)
(Link)
Тут тогда речь идет не о правости/неправости кого-либо, а о некорректной постановке задачи, в условиях которой нет оптимальных решений, потому что нет критериев.

Например нет зависимости вычисления операций от количества операндов или ограничений на операнды, то есть нет никакой связи задачи с реальным миром. На умножение с парой триллионов операндов тратится столько же времени сколько на два операнда.

Далее, если считать, что swizard ни где строго не ограничивает ускорение вычислений (насколько я вижу он прямо не разрешал /запрещал использование СSE). Т.е. анализ считается как бы "бесплатным" для процессора. то тогда к примеру можно выполнить свертку констант "бесплатно" по таблице и будет 0 секунд результат. Или даже не сворачивать константы, а провести перегруппировку дерева операндов и получится в примере 6 уже 23 секунды работы на двух ядрах вместо 25. И тогда 23 секунды это лучшее решение.

В целом, в условиях некорректной постановки задачи, когда можно нафантазировать разные "бесплатные" оптимизации, не приходится говорить о лучшем или худшем решении. И результат в 25 секунд не повод считать решение лучшим и брать человека на работу только поэтому. Нужны другие критерии


(Оставить комментарий)
Top of Page Разработано LiveJournal.com