Правильна статистика для звітування про результати прискорення


12

Скажіть, у мене є повільні та швидкі версії якогось коду, і хочу повідомити про номер прискорення, порівнюючи два. Я запускаю повільну версію разів і швидку версію m разів, виробляючи рази ( s 1 , , s n ) і ( f 1 , , f m ) . Найпростіший спосіб зробити прискорення - це середня оцінка засобів: ˉ snm(s1,,sn)(f1,,fm) Однак це не враховує випускників.

s¯f¯=mi<nsinj<mfj

Питання : Яку найкращу статистику використовувати для повідомлення про числа прискорених?


3
Наскільки велике середнє відхилення порівняно із середнім? Що б ви не робили, вам слід повідомити про те, що ви зробили, і, ймовірно, поставити смужки помилок, якщо вони великі. Якщо вони дійсно великі, слід дослідити джерело. Більшість комп’ютерних кодів повинні працювати досить детерміновано в часі, якщо не існує випадкової складової самої програми або ви не обмінюєтесь комп’ютерними ресурсами з іншими (це може бути мережа або диск, а не лише вузли кластера). Якщо проблема з конкуренцією за дискові ресурси, ви можете розглянути можливість звітування про продуктивність з відключеним введенням-виведенням (досить часто) - просто зауважте.
Білл Барт

У Едісона (суперкомп'ютера Cray) у мене 2% різниці між двома зразками. На своєму ноутбуці я бачу 6-8% стандартне відхилення, виміряне на 10 зразках. Обидва призначені лише для обчислення ядра, без вводу / виводу.
Джеффрі Ірвінг

Щоб уточнити, чому я згадую людей, що відпадають, якщо розбіжності вже досить низькі: це достатньо фундаментальна статистична кількість, яку я хотів би знати ідеальним способом повідомляти про це, навіть у цьому конкретному випадку я не придатний.
Джеффрі Ірвінг

2
Питання в тому, що ви намагаєтеся спілкуватися, і формула, яка б найкраще спілкувалася? Я не думаю, що я ніколи не бачив статті, яка повідомляє про мінливість бігу до запуску, якщо причина не була головною у роботі. Зважаючи на те, що ми ставимо лінійну залежність між часом виконання та процесором / завданням / кількістю потоків, вам, ймовірно, добре використовувати співвідношення засобів, але потім смугу помилок, що відповідає співвідношенню max-to-min та min-to-max якщо ви думаєте, що показ діапазону важливий. Крім того, вам, мабуть, слід ознайомитись із варіантами масштабування частоти та задачі завдань, щоб зменшити вашу мінливість. :)
Білл Барт

У усуненні ІО може бути багато хитрощів. Між оптимізаціями компілятора до прийомів "Копіювати при записі" можуть бути дійсно неочевидні зв'язки вниз. Я зазвичай дотримуюся прототипу d1 = loadData (); d2 = копія (d1); r1 = algo (d2); r2 = algo (d1), і враховувати лише час другого запуску.
meawoppl

Відповіді:


9

Окрім усього, що Білл Барт вже сказав вище, дозвольте зазначити, що люди часто повідомляють про найшвидший з кількох пробіжок. Обґрунтування полягає в тому, що фактичний час запуску - ідеальний час запуску плюс будь-яка кількість уповільнених падінь, що виникають внаслідок інших запущених процесів, затримок ОС, мережевих затримок і т. Д. Оскільки це весь шум, який нас не цікавить, використовуючи найшвидший час запуску найближчий до того, кого ми насправді хочемо знати.


На жаль, цей принцип не допомагає при повідомленні про швидкість між двома алгоритмами.
Джеффрі Ірвінг

3
@GeoffreyIrving, чому б і ні? Обидва алгоритми мають теоретичне сподівання на ефективність та розмір проблеми (або кількість процесора чи інший нестатистичний параметр) з низьким рівнем та незалежними від параметрів термінами. Використання найшвидшого часу (і зазначення цього факту) просто допомагає вам ігнорувати ці додаткові умови. Це здається прекрасною стратегією. Якщо ви не скажете нам по-іншому, здається, що ви намагаєтеся розібратися, як передавати різницю між алгоритмами найефективніше, і пропозиція Вольфганга є звичайною та очікуваною, щоб вона могла передати цю інформацію найкраще.
Білл Барт

1
Ой, так, ти маєш рацію. Я із задоволенням відкликаю свою заяву.
Джеффрі Ірвінг

(+1) Побічне запитання: я закінчую ваше бачення щодо несиметричного розподілу шуму і т. Д. Скажімо, хоч я і зробив реалізацію A, і реалізацію B, і я порівняю їх, і після розумної кількості запусків, 25-й квантил, середня і середня величини ~ 4,5х швидші в А, ніж В, тоді як квантил 0% - ~ 3х. Якщо порівнювати реалізацію від A до B, незважаючи на те, що: yes A is theoretically only ~3x fasterчи не очікується ~ 3-кратне прискорення, що непредставляє прискорення при використанні реалізації A замість B? (До речі, це приклад із реального життя)
usεr11852

1
@ usεr11852: Все залежить від системи, в якій ви працюєте. Якщо ваша медіана або 25-й квантил настільки далеко одна від одної, що спотворює статистику у тому, як ви тут гіпотезуєте, то ви, ймовірно, в системі, яка має багато шуму. Наприклад, він може бути використаний іншими одночасно і т. Д. Можливо, це не є репрезентативними для систем, які мають інші для своїх повторних експериментів, і мені це би звучало так, ніби ви перепродаєте свої результати в такому випадку. Тож я все ж пропоную повідомити про найкращі пробіги. Що б ви не робили, ви повинні повідомити у статті, яку статистику ви використовуєте.
Вольфганг Бангерт

1

Я пропоную вам використовувати медіану, щоб дати статистичну оцінку. На відміну від середнього, медіана не пошкоджується сторонніми людьми.


1
Для даних, де весь шум позитивний (тобто з несиметричним розподілом шуму), медіана така ж погана, як і будь-яка інша статистика. Щоправда, це справді так, дивіться мою відповідь вище.
Вольфганг Бангерт

0

Якщо стандартне відхилення не є незначним, ви можете використовувати два графіки вікна поруч, побудовані на кожному з термінами одного з алгоритмів. Вони аж ніяк не є стандартними в числовому аналізі, але роблять велику роботу у відображенні такого роду інформації.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.