Русский Процессор Эльбрус в распределенных вычислениях на благо науки…
А теперь - про производительность Эльбруса!
Несколько дней назад, благодаря Игорю, был получен доступ к машине с 4(!) Эльбрус-8C, что позволило оценить производительность подобной системы в рамках нашего проекта не косвенным, а прямым методом. И это очень интересно! В том числе и потому что очень большое число прикладных задач из коммерческого сектора, связанных с базами данных, web-серверамии т.п. в основном выполняют операции не с плавающей точкой (хотя и их бывает немало), а с целыми числами. И вот теперь, у нас уже есть первые проверенные результаты - компьютера № 9991. https://rake.boincfast.ru/rakesearch/show_host_detail.php?ho...
Для начала однопоточная производительность. Сама по себе она мало что значит, но можно сделать некоторые выводы.
Что мы видим - с одной стороны, скорость вычислений "на одном потоке" в Эльбрус-8C проигрывает современным десктопным процессорам (они отмечены зелёным цветом) в 2-3 раза, в некоторых случаях - до 4-х (только у этого Core i7-8700K - отключен Hyper-Threading!). Однако при сравнении с серверными процессорами (выделены синим цветом), разрыв уменьшается - до 1.5 - 2 раз, так как их частоты - значительно ниже. Но в них - больше ядер и потоков. А в Эльбрусе - частота ещё ниже - всего 1.30 ГГц, и если мы это учтём, то увидим, что производительность на такт у него как минимум не хуже, чем у лучших десктопных и серверных процессоров.
И, самое интересное - валовая производительность (в квадратных скобках после модели CPU идёт число потоков, опознанных BOINC-клиентом):
Смотря на эту диаграмму, надо понимать, что вы видите. Это не производительность отдельно взятого(ых) процессора(ов), это производительность систем, которые были сделаны на их основе. В случае с десктопными процессорами (также отмечены зелёным) - в системе может быть только 1 CPU. В случае серверных систем на основе Xeon E5 - до двух CPU. А вот в случае с Эльбрус-8С в сервер можно поставить и 4 процессора! И это существенно уменьшает отставание в ситуации, когда у того же Xeon E5-2683 v3 на один сокет приходится 14 ядер (и 28 потоков), а у Эльбруса - 8. Двусокетной машине с 28 ядрами, уже сейчас можно сопоставить машину на Эльбрусе с 32!
Из диаграммы ясно видно, что, хотя существующие модели не смогут конкурировать с десктопными системами ни по производительности ни, скорее всего, по цене (официальных цен нет, но по интернету гуляют примерные цены). В этом нет никакой интриги. А вот в серверном сегменте ситуация - куда интереснее - система, аналогичная серверу с 2 x Xeon E5-2683 v3 будет стоить где-то $10 000. $12 000 и, возможно, что в отдельных секторах этого рынка Эльбрусы могут составить конкуренцию уже сейчас. В случае же, реализации планов по наращиванию числа ядер (в Wiki говорят о вариантах с 16 и 32 ядрами) и частот, ситуация может стать ещё лучше.
По мере работы системы статистика будет накапливаться и, будем надеется, мы увидим ещё немало интересного!
Думаю, что к диаграммам выше стоит добавить ещё одно пояснение - про параллельность внутри потока. Если мы посмотрим на любую программу, то скорее всего увидим, то даже в "исключительно однопоточном" в силу алгоритма коде, далеко не все операции (или строки кода) процессор обязан выполнять строго последовательно. Например, в одной из двух основных по времени работы функций в расчётном модуле R10 есть вот такие строчки:
...
<Начало цикла>
rowId = path[cellId][0];
columnId = path[cellId][1];
isGet = 0;
cellValue = Square::Empty;
freeValuesMask = (1u << Rank) - 1;
freeValuesMask &= flagsColumns[columnId] & flagsRows[rowId] & flagsCellsHistory[rowId][columnId];
...
Первые четыре из этих строк - описывают действия, полностью независимые друг от друга!
Шестая - зависит от пятой, но, по сути, они могут быть склеены в одну строку, состоящую из нескольких операций, часть из которых также может быть выполнена параллельно! То есть, в рамках нашего алгоритма есть возможность распараллеливания на уровне отдельных инструкций. Но, в тоже время, число подобных действий - невелико, в пределах 5-10, что, скорее всего, позволяет неплохо задействовать эти возможности в современных процессорах от AMD и Intel, которые могут выполнять как раз где-то около 5-8 инструкций одновременно, но лишь частично задействует возможность Эльбрус-8C в котором число одновременно выполняемых инструкций может достигать 25! А это значит, что в задачах с более высокой степенью "внутреннего параллелизма" соотношение может изменяться в пользу Эльбрус-8C до 3-5 раз и, даже системы, существующие сейчас, в ряде задач могут выходить в лидеры и по однопоточной производительности, и по валовой производительности CPU, и по валовой производителности системы. Результат в RakeSearch, по сути - это результат в самых неподходящих условиях. И это делает данные результаты ещё интереснее.