Правильно ли я понял, что ускорение происходит не за счёт качества процессора, а за счёт количества ядер?
В последнее время много шумихи о том чтобы использовать более энергоэффективные процессоры. Но в целом так больше вычислительных блоков более эффективные вычисления.
И если да -- то для получения ускорения надо распараллеливать прогу?
Да. Причем на нескольких уровнях.
Правильно ли пишут, что за счёт многоядерности всё ускоряется в миллион (1 000 000) раз?
![:lol: :lol:](./images/smilies/icon_lol.gif)
Ускорение зависит от числа вычислительных блоков.
Есть формула Амдала, из которой видно, что может существовать насыщение.
Правда она основана на предположение, что не всякий алгоритм можно распределить. А вот доказательство этого предположения я не видел.
На самом деле это узкий класс задач которые не поддаются распараллеливанию.
Современный компьютер имеет производительность 20*10^9 flops на ядро.
В списке top500 самый высокопроизводительный компьютер имеет производительность порядка
![$10 *10^15$ $10 *10^15$](https://dxdy-02.korotkov.co.uk/f/1/6/2/162189b0c62eac14fd4c69f68e429fe682.png)
flops. Так что быстрее 50 000 ну никак не получится.
В-третьих, не всякая задача хорошо распараллеливания. Есть такие в которых на 2 двух кратное ускорение нужно 4 кратное увеличение вычислительных блоков.
И насколько быстрым будет процесс, если работать с целыми числами, а не с дробными?
Зависит от архитектуры. Современные процессоры заточены на плавающую точку и с плавающей точкой вычисления быстрее.
Обычно ускорение достигается за счёт снижения точности вычислений.
Есть ли вычислительный центр в Москве, чтобы при необходимости можно было сходить туда?
Да. И не один. На сайте top500.org можно найти расположения и далее по ссылкам выйдете на контакты.
Распараллелить может и видеокарта.
В top500 много гибридных систем, как раз на видеокартах.
36 000 процессоров AMD, имеющих доступ к общей памяти.
Не имеет. Доступа там нет. Обычно для высоко производительного компьютера архитектуры памяти такова: локальный процессор имеет доступ к своей памяти и конвейерная передача данных от одного процессора к другому через ЛВС.