эльбрус

Архиватор HA на «Эльбрусе»

Мы тут «Эльбрус» решили оживить, который был куплен несколько лет назад для одного из проектов. Проект закончился и компьютер с тех пор лежал на складе.

Внутри стоит восьмиядерный процессор «Эльбрус-8C» 1,3ГГц. Он тогда-то был экзотикой, а после санкций стал буквально раритетом.

Я, чтобы прикинуть его производительностью, решил попробовать повторить на нём свой недавний эксперимент — скомпилировать архиватор ha и засечь время, — за сколько он на этой машине сожмёт «Дум».

Там довольно старая операционка стоит с компилятором gcc 7.3.0 и нет cmake. Пришлось переписать компиляцию на make и компилировать тем, что есть. Наверное новый компилятор соптимизировал бы код лучше, но взять его некуда — надо переставлять операционную систему, а это целая история.

Скриншот консоли программы HA 0.999β (1995, Harri Hirvola) — создание архива doom.ha с упаковкой файлов doom.exe, doom.wad и др. методами HSC/ASC; завершено за 18.77 сек.

На «Эльбрусе» «Дум» сжался за 18,77 секунды против 4,3 секунды на моём ноутбуке с M3 Max. Разница более чем в четыре раза. Я даже не знаю — много это или мало. Надо, наверное, посмотреть на каком-нибудь среднем компьютере, чтобы оценить результат.

2 комментария

ИИ и «Эльбрус»

Прочитал свежую новость о том как ребята из «Гугла» при помощи алгоритмов искуственного интеллекта ускорили сортировку. На коротких последовательностях ускорение там достигает 70%:

AlphaDev’s newly discovered algorithm achieves a 70% increase in efficiency for sorting short sequences of elements and approximately 1.7% for sequences surpassing 250 000 elements, as compared to the algorithms in the C++ library.

Казалось бы слово «коротких» портит всю малину (на больших там не такие выдающиеся цифры), но это тоже полезно — в веб-сервисах, например, такая сортировка может совокупно дёргаться миллионы раз в секунду, если её ускорить, это приведёт к серьёзной экономии.

Отметим так же, что задачи сортировки очень широко распространены в программировании и естественный интеллект много сделал для того, чтобы их оптимизировать — эта область алгоритмов пользуется повышенным вниманием, но ИИ всё равно нашёл что тут улучшить.

В этой связи мне вспомнился многострадальный процессор «Эльбрус» со своей неоднозначной архитектурой VLIW, которую ещё недавно с удовольствием многие пинали.

Чёрный корпус компьютера с прозрачной боковой панелью, на которой крупными буквами написано «Эльбрус», стоит на гранитном подоконнике у окна с видом на деревья.
Компьютер на базе «Эльбруса», стоит у нас на подоконнике

Особенность такой архитектуры в том, что мы упрощаем процессор — убираем оттуда блоки динамического управления распараллеливанием кода. Предполагается, что для таких процессоров эта работа должна производится на этапе компиляции — код параллелится статически, раз и навсегда указывается как объединятся инструкции в каком порядке и где они будут выполняться.

Такой упрощённый процессор дешевле разрабатывать и производить, ну и компилятор дорабатывать проще процессора — новая версия не требует запуска новой производственной линии.

Проблема в том, что такой умный компилятор пока написать не удаётся и вряд ли удастся, если использовать традиционные методы, применяемые в разработке компиляторов. Слабое звено тут человек — с каждой итерацией всё сложнее придумывать и добавлять новые оптимизации, да ещё и так, чтобы не сломать всё остальное.

Но если привлечь к этому ИИ, наверняка станет веселее. Не вполне понятно пока когда, но однажды точно станет. Пока реализации алгоритмов искусственного интеллекта недостаточно проворны для этого, но может быть через несколько лет кожаные совместно с коваными достаточно всё оптимизируют, чтобы компилятор под такой процессор работал с достаточной скоростью.

Совсем не факт, конечно, что такая стратегия выгоднее традиционной, всё-таки характер нагрузки на код может поменяться в любую секунду. При этом традиционная архитектура подстроится, а VILW нет, но это вопрос баланса. Что лучше — дорогой (и потенциально более энергоёмкий) процессор, способный оптимизировать код сам или более дешёвый (и, возможно, более экономичный), у которого лапки. Возможно и VILW хорошо ляжет на какие-то задачи.

2 комментария

X Window

В начале года мы для работы купили «Эльбрус» — посмотреть, нельзя ли портировать серверную часть нашего продукта на отечественную платформу. Портировать оказалось можно, всё заработало, но недавно родилась мысль поднять там же интерфейсные тесты, чтобы убеждаться, что и клиентская браузерная часть там тоже работает.

Семья из трёх человек: девочка с кудрявыми волосами, женщина и мужчина в белой кепке с логотипом, на фоне розового воздушного шара.
Мой сайт в Файерфоксе, запущенном на «Эльбрусе» и проброшенным через ssh ко мне на «Мак»

Коллеги-тестеры в рабочее время до сих пор там что-то настраивают, а сегодня, в выходной день, мне тоже стрельнуло кое-что посмотреть в этих тестах, но незадача — как вывести себе на домашний ноут графическое приложение, которое запускается на офисном «Эльбрусе»?

Как выходят из положения наши тестеры, я не знаю, тревожить в субботу по такому пустяку никого не хочется, но посмотреть как-то надо. Вспомнил, что много лет назад я как-то пробрасывал графику через ssh и X Window — в Линуксе испокон веков была возможность передавать отрисовку на другую машину через сеть. Пришлось напрячься и вспомнить как это делается.

Всего три шага: на «Мак» ставим «XQuartz», запускаем его, потом логинимся на удалённую машину по ssh с каким-нибудь легковесным алгоритмом шифрования и ключами проброса графики и авторизации, я сделал так:

ssh -XYC -c chacha20-poly1305@openssh.com пользователь@сервер

и в командной строке на удалённой машине запускаем нужное графическое приложение (firefox в моём случае). То ещё слайд-шоу, но чтобы быстренько что-то посмотреть — пойдёт.

7 комментариев

«Эльбрус»

Судя по тому, что я слышу от коллег по айти, термин «импортозамещение» всем уже набил оскомину — настолько много публикуется в последнее время информации по тому что и как наша страна собралась импортозамещать. Долгое время у меня не было позиции по этому поводу, но недавно она появилась.

Хотя я по роду занятий сталкивался с импортозамещением софта, отечественное «железо» до недавних пор казалось понятием из мифов — чем-то вроде псоголовых людей, о которых рассказывают путешественники из дальних стран, но всем понятно, что они брешут.

Деревянный ящик с надписью «ВЫЧИСЛИТЕЛЬНЫЙ КОМПЛЕКС «ЭЛЬБРУС 801-РС»», заводской номер 210032, вес 7,9 кг, АО «МЦСТ», Москва.
«Эльбрус» собственный персоной, приехавший в деревянном ящике

Но вот недавно оказалось, что отечественные процессоры вполне можно пощупать. Да, пока за невменяемые деньги (по причине мелкосерийного производства), но если очень хочется, то вполне можно прикупить себе «Эльбрус» или «Байкал» по цене подержанного автомобиля.

Немного смешно, что «Эльбрус» нам прислали в деревянном ящике, но я так понял, это обрешётка транспортной компании. Вряд ли производитель отгружает свои компьютеры в таком виде. Учитывая сколько народу сомневается в самой идее отечественных процессоров и их существовании, выглядит как стёб.

Внутри присланного ящика обычный чёрный китайский корпус «Cooler Master» и куча бумажных инструкций, написанных отборнейшим канцеляритом. По всему видно, что писалось для армии, цитировать куски не буду, но но при чтении некоторых пассажей хочется вытянуться в струнку и отдать честь.

Скриншот меню «Настройки» Linux Эльбрус: выделен пункт «Настройки», видны подпункты «Диспетчер настроек», «Внешний вид», «Клавиатура» на фоне гор.
Интерфейс операционной системы «ЭльбрусОС», мы подключили первый попавшийся монитор, а у него что-то с центровкой картинки

Не знаю почему, но после включения я испытал почти детский восторг — оно работает! и даже неплохо! — тормозов не увидел, впрочем ничего особенно тяжёлого запустить пока не успел.

На борту «Линукс» — «ЭльбрусОС», с довольно обычным набором программ — браузеры, офисный пакет, компиляторы, привычные интерпретаторы и прочее. Из того, что успел заметить в командной строке, есть Постгрес, ПХП, Пайтон, Мемкэш, СупервизорДи и нету уже ставшего привычным systemd.

В общем, когда это импортозамещение наконец обрело физическое воплощение, мой скептический нейтралитет сменился каким-то удовольствием от того, что в плане аппаратной базе мы ещё что-то можем произвести. Пусть пока далеко не всё, что-то пока не на своих мощностях, но какой-то наш вклад в этом всё уже имеется.

На мой взгляд, такие сдвиги необходимы — запустить сразу производство всего мы не осилим, начинать придётся с малого, но если и этим не заниматься, считая такие шаги незначительным, то ничего своего никогда и не появится. А я хотел бы, чтобы появилось. Не могу точно сказать почему, надо над этим поразмыслить, но хотел бы — это точно.

12 комментариев

99 бутылок: Эль-76

65. Эль-76 — язык высокого уровня советских многопроцессорных вычислительных комплексов «Эльбрус». Разработан в Институте точной механики и вычислительной техники АН СССР имени С. А. Лебедева в 1972—73 годах.

Язык процедурный, как и следовало ожидать, но с обработкой исключений, который тут называются «ситуациями». Довольно необычно. Из-за задуманной авторами близости к железу, в языке разделено понятие представления и типа — то есть того как нечто хранится и что мы под ним понимаем. Ключевое слово «ф32», которое постоянно используется в программе — это 32-битный формат хранения.

Скриншот программы «Эль 76» с кодом на русском языке, реализующим песню «99 бутылок пива на стене», включая циклы и вывод строк в терминал.
Внешний вид интегрированной среды разработки языка программирования «Эль-76» в эмуляторе L76

Что-то написать на нём удалось благодаря найденному на «Вебархиве» эмулятору и документации с примерами кода. Эмулятор далеко не полный, поэтому некоторые вещи приходилось писать вовсе не так, как задумывали создатели языка.

% Песня о пиве 99.l76
программа
  процедура пиво = проц(ф32 бутылок)
  начало
    если бутылок = 0 то
      печатьмс(стр8 "no bottles")
    инес бутылок = 1 то
      печатьмс(стр8 "1 bottle")
    иначе
      печать(бутылок);
      печатьмс(стр8 " bottles")
    все
  конец;

  ф32 бутылок;
  для бутылок от 99 вниздо 1 цикл
    пиво(бутылок);
    печатьмс(стр8 " of beer on the wall, ");
    пиво(бутылок);
    печатьмс(стр8 " of beer.");
    печатькс();
    печатьмс(стр8 "Take one down and pass it around, ");
    пиво(бутылок - 1);
    печатьмс(стр8 " of beer on the wall.");
    печатькс();
    печатькс()
  повторить;

  печатьмс(стр8 "No more bottles of beer on the wall, no more bottles of beer.");
  печатькс();
  печатьмс(стр8 "Go to the store and buy some more, 99 bottles of beer on the wall.")
конец

Тем не менее, программа запускается и выводит задуманное, хотя могла бы выглядеть менее уродливо, будь у меня компилятор, реализующий «Эль-76» полностью.

6 комментариев