Page 38 - 6111
P. 38

Операція а + b в тексті програми завжди відповідає одній операції
                            додавання  в  коді  програми.  Користувач  знає  обчислювальну
                            складність  своєї  програми,  а  на  основі  цієї  характеристики  може
                            отримати  нижню  оцінку  часу  її  виконання.  Так,  на  жаль,  оцінка
                            буде  тільки  нижньою.  Взявши  за  орієнтир  пікову  продуктивність
                            комп'ютера,  користувач  розраховує  і  на  своїй  програмі  отримати
                            стільки  ж.  Зовсім  не  враховується  той  факт,  що  пікова
                            продуктивність  виходить  при  роботі  комп'ютера  в  ідеальних
                            умовах. Немає конфліктів при зверненні до пам'яті, все береться з
                            регістрів, всі пристрої постійно і рівномірно завантажені і т. п. Але
                            в житті так буває дуже рідко. У кожній програмі користувача є свої
                            особливості,  які  ці  ідеальні  умови  порушують,  оголюючи  вузькі
                            місця  архітектури.  Особливості  структури  процесора,  система
                            команд,  склад  функціональних  пристроїв,  будова  і  об'єм  кеш-
                            пам'яті,  архітектура  підсистеми  доступу  в  пам'ять,  реалізація
                            введення/виведення  -  все  це,  і  не  тільки  це,  може  вплинути  на
                            виконання  реальної  програми.  Причому  в  даний  момент
                            перечислено    тільки  частини  апаратури,  а  говорити  треба  про
                            програмно-апаратне середовище виконання програм в цілому. Якщо
                            для  комп'ютера  немає  ефективних  компіляторів,  то  пікова
                            продуктивність    буде    вводити   в    оману    ще    сильніше.
                            Значить  потрібно  відійти  від  характеристик  апаратури  і  оцінити
                            ефективність   роботи    програмно-апаратного    середовища    на
                            фіксованому наборі задач.
                                Розробники  без  складнощів  можуть  придумати  такі  програми,
                            на  яких  їх  комп'ютер  досягає  продуктивності,  яка  близька  до
                            пікової.  Такі  приклади  нікого  не  переконають.  Набір  тестових
                            програм повинен бути зафіксований. Ці програми мають грати роль
                            еталону,  за  яким  судитимуть  про  можливості  обчислювальної
                            системи.
                                Такі спроби неодноразово робилися. На основі різних критеріїв,
                            формувалися  тестові  набори  програм  або  фіксувалися  окремі
                            еталонні  програми.  Програми  запускалися  на  різних  системах,
                            замірялися ті чи інші параметри, на основі яких надалі проводилося
                            порівняння  комп'ютерів  між  собою.  У  подальшому  викладі  для
                            подібних  програм  ми  найчастіше  будемо  використовувати  слово
                            тест,  роблячи  акцент  не  на  перевірці  правильності  роботи  чого-
                            небудь,  а  на  тестуванні  ефективності  роботи  обчислювальної
                            системи.
                                В якості подібного тесту взяли нескладний і відомий всім тест
                            LINPACK.  Ця  програма  призначена  для  вирішення  системи
                            лінійних  алгебраїчних  рівнянь  з  щільною  матрицею  з  вибором
                            головного  елемента  по  рядку.  Простий  алгоритм,  регулярні
                                                              37
   33   34   35   36   37   38   39   40   41   42   43