Яка основна структура виконання наукового коду?


11

Розглянемо два комп’ютери з різною апаратною та програмною конфігурацією. Під час виконання точно такого ж серійного коду Navier-Stokes на кожній платформі потрібно x і y час для виконання однієї ітерації для комп'ютерів 1 і 2 відповідно. У цьому випадку - різниця в ітерації між комп'ютером 1 та комп'ютером 2.Δ=х-у

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


4
Звичайно, ваш - це лише один зразок. Ви також повинні дослідити, як Δ залежить від розміру та структури проблеми. По-друге, я б запропонував проаналізувати код, намагаючись розділити x і y на суму різних внесків і проаналізувавши працездатність різних частин коду щодо конфігурацій hw і sw. ΔΔху
Стефано М

4
КАШЕ ЛІНІСНІ МИСИ . Це перше, що слід врахувати. Пам'ять - це вузьке місце для багатьох алгоритмів.
Мисливець на оленів

Відповіді:


13

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

Програмне забезпечення

  • Стандартне виконання бібліотеки
  • Лін. Алг. Продуктивність бібліотеки (якщо програмне забезпечення посилається на сторонні бібліотеки)
  • Вибір компілятора
  • Оптимізація компілятора
  • Прапори компілятора
  • Фонові процеси (можуть значно відрізнятися, якщо ОС відрізняються)

Обладнання

ЦП

  • Тактова швидкість
  • Архітектура (одна і та ж інструкція може зайняти різну кількість циклів у різних архітектурах)
  • Розмір кешу
  • Затримка кешу
  • Можливість SIMD (одна інструкція, кілька даних)

Пам'ять

  • Кількість каналів
  • Швидкість

Жорсткий диск

  • Швидкість читання / запису (в основному важлива лише для запису результатів, тому це залежить від того, як часто ви пишете вихідний файл для вирішення NS, але це може бути важливо для інших програм, які роблять такі речі, як обробка зображень)

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


Я б додав до процесора як кількість ядер, так і його можливості SIMD.
Педро

@Pedro Я залишив сердечники з часу, коли питання сказав серійний вирішувач, але я додам SIMD. Дякую.
Годрик Провидник

1
@GodricSeer Я склав на одній машині і потім запустив її. Потім, використовуючи той же складений виконуваний файл, я запустив його на другу машину. З вашого пояснення, здається, було б краще перекомпілювати з джерела на другий комп'ютер. Це так?
Ізопікальні коливання

1
@IsopycnalOscillation Під час компіляції на / для певної машини ви можете використовувати опцію gcc / gfortran -march=nativeабо опцію icc / ifort, -xHOSTяка застосовуватиме оптимізацію, характерну для базової архітектури.
Педро

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

2

х/ух-у

По-друге, ваше запитання спеціально виключає відмінності в програмному забезпеченні. На мій досвід, винагорода за ефективність за ретельну настройку може бути великим фактором, тому, обмірковуючи проблеми з обладнанням, не забувайте про проблеми із програмним забезпеченням. Зрештою, апаратне забезпечення може виконувати лише ті інструкції, які ви їм даєте, і якщо ви дасте менше, воно закінчиться швидше.

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

Це посилання детально пояснює неортодоксальний метод, який я використовую.

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