main(N,F) ->
statistics(runtime),
S = self(),
[spawn(fun () -> io:format("Х=~p Y=~p~n ", [1+F*(Z-1),F*Z]),S ! {i_am_ready,sum(1+F*(Z-1),F*Z,0)} end)||
Z <- lists:seq(1, N)],
wait_n(N,0).
При smp 2
testSMP3:main(2, 50000000).
выдает Time: 61937 то есть получаем что время вычислений около 62 сек.
timer:tc(testSMP3, main, [2,50000000]).
выдает 31338 то есть время вычислений 31 сек. исходя из таймера виндоус устанавливаем что при smp врет statistics!!!
Замеры
timer:tc(testSMP3, main, [2,50000000]).
Без и smp timer:tc и statistics выдают одинаковый результат 45 сек.
Таким образом получаем
1) что доверять statistics при smp нельзя.
2) при включаном smp таки наблюдается ускорение на 35% даже на гипертрендинге.
SMP 2 — 33835 ускорение 36%.
SMP 0 — 45911
На четырех процесорном результаты такие
SMP 4 6641 ускорение 121%.
SMP 3 7468 ускорение 97%.
SMP 2 9776 ускорение 51%.
SMP 0 14716
testSMP3- это тотже пример tut18.
Извеняюсь за свою предыдущую тему !!!
Если кто потвердит или опровергет то что я написал буду благодарен.
Re: [Erlang] замеры времени при smp timer:tc или statistics?
Здравствуйте, Аноним, Вы писали:
А>Есть код: А>... А>Без и smp timer:tc и statistics выдают одинаковый результат 45 сек. А>Таким образом получаем А>1) что доверять statistics при smp нельзя. А>2) при включаном smp таки наблюдается ускорение на 35% даже на гипертрендинге. А>... А>Если кто потвердит или опровергет то что я написал буду благодарен.
Тут нет ничего удивительного. statistics(runtime) замеряет процессное время, а timer:tc реальное.
Соответсвенно при увеличении числа процессоров процессное время может увеличиваться, а реальное уменьшаться.
Проблема была в том что statistics(runtime) использовалась для сравнения запуска с разным числом процессоров,
доверять ей при запуске на одной конфигурации вполне можно.
Кроме того есть statistics(wall_clock), которая также измеряет реальное время.
--
Mikl
Re: [Erlang] замеры времени при smp timer:tc или statistics?
Здравствуйте, Аноним, Вы писали:
А>Таким образом получаем А>1) что доверять statistics при smp нельзя. А>2) при включаном smp таки наблюдается ускорение на 35% даже на гипертрендинге.
Ну слава тебе хосподи! . Аж от сердца отлегло. Спасибо, что написал, а то я б и дальше думал, что все плохо — своей SMP-машины у меня нет чтобы протестить .
Re: [Erlang] замеры времени при smp timer:tc или statistics?
Здравствуйте, Аноним, Вы писали:
А>SMP 2 — 33835 ускорение 36%. А>SMP 0 — 45911 А>На четырех процесорном результаты такие А>SMP 4 6641 ускорение 121%. А>SMP 3 7468 ускорение 97%. А>SMP 2 9776 ускорение 51%. А>SMP 0 14716
Это все хорошо, но как насчет SMP vs N nodes?
Re[2]: [Erlang] замеры времени при smp timer:tc или statisti
От:
Аноним
Дата:
25.06.08 17:21
Оценка:
Здравствуйте, Mikl Kurkov, Вы писали:
MK>Здравствуйте, Аноним, Вы писали:
А>>Есть код: А>>... А>>Без и smp timer:tc и statistics выдают одинаковый результат 45 сек. А>>Таким образом получаем А>>1) что доверять statistics при smp нельзя. А>>2) при включаном smp таки наблюдается ускорение на 35% даже на гипертрендинге. А>>... А>>Если кто потвердит или опровергет то что я написал буду благодарен.
MK>Тут нет ничего удивительного. statistics(runtime) замеряет процессное время, а timer:tc реальное. MK>Соответсвенно при увеличении числа процессоров процессное время может увеличиваться, а реальное уменьшаться. MK>Проблема была в том что statistics(runtime) использовалась для сравнения запуска с разным числом процессоров, MK>доверять ей при запуске на одной конфигурации вполне можно.
MK>Кроме того есть statistics(wall_clock), которая также измеряет реальное время. MK>-- MK>Mikl
Почемуто у меня statistics(wall_clock)
выдает то же что и что и statistics(runtime)
Если скажете почему буду благадарен.
Кто нибуть сравнивал statistics(wall_clock) с statistics(runtime)
на smp 2?
Здравствуйте, DoubleSlash, Вы писали:
DS>Здравствуйте, Аноним, Вы писали: А>>SMP 2 — 33835 ускорение 36%. А>>SMP 0 — 45911 А>>На четырех процесорном результаты такие А>>SMP 4 6641 ускорение 121%. А>>SMP 3 7468 ускорение 97%. А>>SMP 2 9776 ускорение 51%. А>>SMP 0 14716
DS>Это все хорошо, но как насчет SMP vs N nodes?
smp 0 smp 2 smp 2 с двумя нодами
13,979 11,657 9,328
14,076 11,797 9,344
Средние
14,0275 11,727 9,336
smp 2 по сравнению с smp 0 выигрыш 20%
smp 2 с двумя нодами по сравнению с smp 2 выигрыш 25%
smp 2 с двумя нодами по сравнению с smp 0 выигрыш 50%
Завтра попробую сравнить тоже для 4 процессоров (2 проца с хипертренинг).
Re[3]: [Erlang] замеры времени при smp timer:tc или statisti
Здравствуйте, Аноним, Вы писали:
А>... А>Почемуто у меня statistics(wall_clock) А>выдает то же что и что и statistics(runtime) А>Если скажете почему буду благадарен.
А оба процесса грузятся? Если да, то странно. У меня они разные и именно так как я описывал.
При одном процессоре runtime немного меньше wall_clock, а при двух существенно больше.
А>Кто нибуть сравнивал statistics(wall_clock) с statistics(runtime) А>на smp 2?
При запуске кода ниже (10000 вычислений 20-го числа Фибоначчи) с выключенным и включенным smp имеем:
MK>-- MK>Mikl
Спасибо получилось.
Проблема была в том что я изменил только в одном месте
statistics(wall_clock),
а во втором не изменил:
{_, RunTime} = statistics(runtime).
Замеры smp — vs Nod для 4 процессорного РС(2 проц. с гипертренингом).
smp 0 smp 2 smp 3 smp 4
14,61 9,375 7,794 7,297
14,954 9,156 7,5 7,266
среднее 14,782 9,2655 7,647 7,2815
выигр с пред 1,595380713 1,211651628 1,050195701
выигр срав с нач 1,933045639 2,030076221