Цитата: _taras_ от 29.01.2022 14:09:15А в Этой статье рассмотрено нюансы создания кода для Эльбрус-ов. Читается как хороший детектив.
Жить это как процессор общего назначения не будет. Несколько лет назад я написал здесь, что единственное, что эльбрус будет хорошо крутить, так это аналог "шейдеров" на GLSL - маленькие блоки кода, без сайд эффектов, с линейным кодом, выполняемые многократно и независимо.
Скрытый текст
for (int i = start_i; i domain_n + 2) + j;
double wij = src[idx];
double wipj = src[(i + 1) * (run_config-domain_n + 2) + j];
double wimj = src[(i - 1) * (run_config-domain_n + 2) + j];
double wijp = src[i * (run_config-domain_n + 2) + j + 1];
double wijm = src[i * (run_config-domain_n + 2) + j - 1];
double x = (run_config-start_i + i - 1) * run_config-h1;
double y = (run_config-start_j + j - 1) * run_config-h2;
double laplacian = (wipj + wimj - 2 * wij) * run_config-sqinv_h1 + (wijp + wijm - 2 * wij) * run_config-sqinv_h2;
dst[idx] = q(x, y) * wij - laplacian - alpha * F(x, y);
}
}
Смотрим на содержимое внутреннего фора - вот это оно и есть. И все пляски в статье, дабы разложить это на широкие команды и задействовать параллельное вычисление в ее рамках. Отсюда борьба с условными и безусловными переходами, inline функций, независимые итерации и прочее.
Любой же реальный софт основан на вызове подпрограмм и ветвлении, то есть на переходе к тому или иному адресу. Это базовый принцип построения софта - разбиение его на повторно используемые блоки инструкций и переход на них (от функций пользовательских библиотек и до системных вызов ядра ОС - это все адреса для перехода). И да, заинлайнить системный вызов на этапе компиляции не получится, да и с библиотеками линковка обычно идет не статичная.
Отсюда "атомная" производительность на реальном ПО где дажмп на джампе сидит (но да, 16 ядер - это все-таки 16 ядер, оно быстрее чем
. И это не потому, что код индусский - ОНО ВСЕ ТАКОЕ, построенное на передаче управления туда-сюда, иногда еще и в зависимости от действий пользователя.
Но это уже прогресс: в 22 году начали открываться детали и начали задаваться вопросы. И главный вопрос все тот же: способен ли МЦСТ в принципе сделать суперскаляр с конвейером и предсказанием переходов, чтобы непотребством из статьи занимался сам ЦПУ хотя бы на средненьком уровне набивая свою широкую команду?
------
Это не значит, что им нельзя пользоваться - эльбрус просто не то, чем его пытаются представить, вопя про аналговнонет и сравнивая со вполне бытовым i7. Был у PS3, в свое время, такой мега крутой и прогрессивный процессор Cell, в теории, а потом практика внесла свои коррективы.
Отредактировано: mrt789 - 05 фев 2022 00:45:39
Все - яд, все - лекарство...