З точки зору суперкомп'ютерів, краще не думати навантаження CPU / GPU у відсотках, а скоріше визначити, скільки операцій потребує ваша проблема, а потім порівняти її з піковими показниками продуктивності системи.
Якщо ви отримуєте 100% використання процесора, це не обов'язково означає, що ви отримуєте всі продуктивність системи. Процесори часто можуть одночасно робити різні речі, скажімо, поділ та доповнення. Якщо ви можете розпочати поділ рано, можливо, це може бути перекрито додаванням. Швидше за все, на вашому настільному процесорі є блок поза замовлення, який буде впорядковувати заяви, щоб отримати користь від таких перекриттів. Або якщо у вас є така програма:
if (expr1)
expr2;
else
expr3;
CPU, що упорядковує, спробує обчислити три вирази одночасно, а потім викине результат одного з них. Це робить її швидшою в цілому. Якщо у вашій програмі є якийсь блокатор, і ви не можете переупорядкувати, то ви використовуєте менше процесорів у процесорі, але він, ймовірно, все ще показуватиме 100%.
Потім у вас є функції SIMD в процесорах, які є векторними операціями. Це як GPGPU-світло в тому сенсі, що зазвичай у вас є одночасно лише чотири-вісім операцій, GPU - це як 32 або 64. Тим не менш, ви повинні використовувати це, щоб викрутити FLOPS.
Такі речі, як помилковий обмін, можуть призвести до великої вартості синхронізації, яка зазвичай виявляється завантаженням ядра в Linux. Процесор повністю використовується, але у вас не дуже корисна пропускна здатність.
Я кілька програмував на машині IBM Blue Gene / Q. Він має багато рівнів ієрархії ( схема застарілої Blue Gene / L ), і тому важко ефективно програмувати. Вам доведеться використовувати повну ієрархію до SIMD та SMT (Intel називає це HyperThreading), щоб отримати продуктивність.
І тоді мережа часто вас обмежує. Тому виявляється, що швидше (настінний годинник) обчислювати речі в декількох процесорах одночасно, а не спілкуватися по мережі. Це дасть більше навантаження на процесори та змусить програму працювати швидше. Але реальна пропускна здатність програми не настільки хороша, як це здається із вихідних чисел.
Якщо ви додасте графічні процесори до суміші, буде ще важче оркеструвати все це для отримання продуктивності. Це буде однією з речей, які я почну робити через свою магістерську дисертацію з решітки QCD через пару місяців.
NO-OP
s, що призведе до того, що обоє мають навантаження 100%.