LINUX.ORG.RU
ФорумTalks

Продолжение статей про обзор и тестирование ПЭВМ Эльбрус 401‑PC

 ,


0

2

Сотрудник МЦСТ отвечает на насущные вопросы https://geektimes.ru/post/271974/

Линукс тут при том что в статье рассказывают и про ОС Эльбрус и про планы вовсе слиться с пакетной базой дебиан.

Так же в статье есть и про двоичный транслятор, как он работает и немного устных рекомендаций про написание кода под архитектуры с широким коммандным словом:

Избавляться от лишних зависимостей между итерациями цикла и между отдельными шагами одной итерации, — тогда у компилятора появляется шанс ещё и утрамбовать широкие команды, а также заменить скалярные вычисления на векторные. (Этот совет справедлив в любой ситуации, но в случае с циклами зачастую вмешивается ограничение на количество анализируемых итераций.)

И есть вот такой вот пример: До / После

В сваязи с чем у меня тогда есть вопрос - если у меня на каждой итерации цыкла парсится текст, то есть строка разбивается на несколько частей и обрабатывается, например:

var textMatches = {
   lines: [],
   words: [],
   chars: {}
}

for (var i = 0, lm = someText.match(/.+/g); i < lm.length; i++) {
    textMatches.lines.push(lm[i])
    for (var j = 0, wm = lm[i].match(/[A-zА-я]+/g); j < wm.length; j++) {
        textMatches.words.push(wm[j]);
        for (var y = 0, cm = wm[j]; y < cm.length; y++) {
            if (cm[y] in textMatches.chars) {
               textMatches.chars[cm[y]] += 1;
            } else {
               textMatches.chars[cm[y]] = 1;
            }
        }
    }
}

Как это вот оптимизовать что бы то же в один цикл уместить? Просто частенько такое вот писать приходится, а это даже наверно для штеуда дико не оптимально с его то векторными инструкциями которые к каждому поколению процессоров новые (зачем то) приделывают.

★★★

коммандным
цыкла
что бы
его то
зачем то
И горсть запятых.

А что у тебя в примере за язык такой? Они там не осилили Си и решили свой велосипед придумать?

Stahl ★★☆
()

Лучше пусть напишут, сколько есть коммерчески успешных EPIC и VLIW процессоров, и зачем они всем мозги пудрят! :)

robot12 ★★★★★
()
Ответ на: комментарий от Stahl

У меня в примере JavaScript, а их рабочий пример как раз на Си (или Си++ точно не разбираюсь).

И горсть запятых.

На то они и талксы, специально для таких неграмотных как я.

uin ★★★
() автор топика
Ответ на: комментарий от robot12

коммерчески успешных EPIC и VLIW процессоров

Коммерчески успешным чаще всего становится всякое костыльное и глючное говно (x86, USB, Windows, PC), так что не стоит считать коммерческий успех мерилом верности того или иного направления.

uin ★★★
() автор топика
Последнее исправление: uin (всего исправлений: 1)
Ответ на: комментарий от uin

Ой давайте уж не надо так толсто, чем vliw не является настоящим костыльным говном, например с точки зрения рядового программиста или даже инженера?

Фантазии сферических инженеров можете оставить им, причём железных инженеров. А вот в реальной работе программист пишет программу, состоящую из команд, следующих друг за другом. Попытка изобрести супер-умный способ все эти команды упаковать фейлит раз за разом потому, что зачем это надо делать? Не лучше просто научится как следует отрабатывать команды? Поэтому risc стал успешным, даже внутри x86.

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

Вот наш организм по вашим меркам есть глючное костыльное говно. Однако любой человек может жить хотя бы 100 лет. Учитывая тираж людей, это очень неплохой показатель технологии.

ixrws ★★★
()

Сейчас МЦСТ очень хочет выйти на гражданский рынок — сначала в корпоративный сектор, который всё-таки ближе к текущему опыту, а затем и в потребительский сегмент, то есть к самым широким массам.

Вот только архитектура как была закрыта так и осталась, и физлицам они как не продавали так и не продают

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

Как я слышал, документация у них есть. Но они ее не публикуют из-за того, что там часть прав у минобороны, который против.

cvs-255 ★★★★★
()
Последнее исправление: cvs-255 (всего исправлений: 1)

По ссылке:

Для каких целей позиционируется имеющаяся сейчас версия Firefox 3.6

Вот это поворот :)

true_admin ★★★★★
()

планы вовсе слиться с пакетной базой дебиан

Вот это поворот.

Сейчас МЦСТ очень хочет выйти на гражданский рынок

ВОТ ЭТО ПОВОРОТ.

tailgunner ★★★★★
()
Ответ на: комментарий от uin

Коммерчески успешным чаще всего становится всякое костыльное и глючное говно (x86, USB, Windows, PC), так что не стоит считать коммерческий успех мерилом верности того или иного направления.

Вы этот пост писали с VLIW ? :) Только честно ! И наверное не с PC ? :)

robot12 ★★★★★
()
Ответ на: комментарий от ixrws

не дает особо преимуществ в целочисленке - это значит что не может выдать результата лучше скалярных на таких вычислениях. Ты же верещишь так как будто он вообще их выполнять не может и ведет себя на них будто и не процессор общего назначения вовсе а GPGPU какое нибудь.

По поводу костылей - под интел что бы он красиво и быстро работал надо пилить везде ассемблерные вставки, под vliw - оптимизировать циклы и лучше понимать работу компилятора, а не железки с регистрами и прочим.
На мой субъективный взгляд второе гораздо предпочтительнее.

uin ★★★
() автор топика
Ответ на: комментарий от tailgunner

Если бы не заоблачная цена, то шанс у МЦСТ есть. Намедни на одном из форумов был очередной холивар на тему «так ли защищён Эльбрус». В общем, одному апологету Эльбрусов удалось убедить значительную часть общественности что механизмы защиты Эльбрусов (железо+ОС) весьма недурственны. Но изредка ломают совместимость с программами, которые работают «на честном слове».

alman ★★★
()
Ответ на: комментарий от robot12

Конечно же с ПК на интел, просто потому что ничего другого не купить.

И кстати точно то ведь никто не знает что у штеуда там внутри их процессоров, есть например мнение что там никакой не risc а vliw уже давно.

uin ★★★
() автор топика
Ответ на: комментарий от alman

В общем, одному апологету Эльбрусов удалось убедить

Интересно, у какой из сторон имелся практический опыт работы на Эльбрусе.

tailgunner ★★★★★
()
Ответ на: комментарий от alman

холивар на тему «так ли защищён Эльбрус»

Ссылку то дай хоть какую нибудь, интересно же.

uin ★★★
() автор топика
Ответ на: комментарий от uin

И кстати точно то ведь никто не знает что у штеуда там внутри

Вероятно, внутренности «Эльбруса» Вам показали ?

robot12 ★★★★★
()
Ответ на: комментарий от uin

под интел что бы он красиво и быстро работал надо пилить везде ассемблерные вставки

Я ассемблерных вставок за пределами кодеков, криптографии и ядра не видел уже лет 15

hateyoufeel ★★★★★
()
Ответ на: комментарий от tailgunner

Интересно, у какой из сторон имелся практический опыт работы на Эльбрусе.

У сторонника архитектуры Эльбрусов. Сначала ему удалось убедить в надёжности архитектуры на однопоточных приложениях, потом, со скрипом, удалось и для многопоточных.

alman ★★★
()
Ответ на: комментарий от uin

под интел что бы он красиво и быстро работал надо пилить везде ассемблерные вставки

Ну мягко выражаясь - Вы бредите.

Для VLIW задачка номер 1: У Вас поменялась разрядность слова в VLIW что делать с ПО от которого нет (не рассматриваем причины) исходников ?

Задачка номер 2: Каким образом, рантайме, «Эльбрус» будет собирать потоки из различных, не взаимосвязанных, процессов ?

robot12 ★★★★★
()
Ответ на: комментарий от uin

Обсуждение идёт несколько лет на форуме IXBT в разделе «Процессоры». Если в пресс-службе и отделе маркетинга МЦСТ сидят не дураки, то будут вскоре будут упирать на защищённость в своих статьях и обзорах.

alman ★★★
()
Ответ на: комментарий от alman

Интересно, у какой из сторон имелся практический опыт работы на Эльбрусе.

У сторонника архитектуры Эльбрусов

Это сильно облегчило его задачу.

tailgunner ★★★★★
()
Ответ на: комментарий от alman

будут упирать на защищённость в своих статьях и обзорах.

Просто любопытно, как эти маркетологи смогут проверить что «доложили» им в кирпичи на фабрике TSMC.

robot12 ★★★★★
()
Ответ на: комментарий от uin

У меня в примере JavaScript

тогда очевидно, что никак..

просто подумайте какой путь проделывает JS от текста до исполнения команд на CPU..

MKuznetsov ★★★★★
()
Ответ на: комментарий от robot12

Просто любопытно, как эти маркетологи смогут проверить что «доложили» им в кирпичи на фабрике TSMC

И об этом речь тоже была. Пиарить надо не отсутствие закладок, а особенности архитектуры. Архитектурная фишка защищённого режима Эльбрус это тегированная адресация. Наворотили они там «чёрте-что», но оно (вроде бы) работает. Суть в том, что в указателях они хранят некоторую информацию о типе данных. Получилось неэффективно, но вполне надёжно - любая нештатная ситуация тут же перехватывается железом и ОС.

alman ★★★
()
Ответ на: комментарий от robot12

Стрелки давай не переводи, ты намекаешь что идея широкой команды не работает а идея простых операций давно и широко используется, а между тем:

Small comment about your Haswell vs Elbrus comparison. Intel Haswell can execute up to 8 floating point FMA instructions per cycle (that is, 16 DP FLOPs/cycle). But for Elbrus 23 is the maximum number of all instructions per cycle. Quote from one of the abstracts of 2013 Russian Supercomputing conference (my translation): «The current implementation of Elbrus architecture allows you to execute 4 independent DP FLOPs every cycle(including 4-operand FMA) while performing integer calculations, fetching operands from memory, checking logical conditions and executing branch instructions - up to 18 (in linear programs) or 23 (in loops) operations in one instruction.» ( http://2013.nscf.ru/TesisAll/Section 1/09_2430_TrushkinKA_S1.pdf )

That is, 4 DP FMA in Elbrus vs 8 DP FMA in Haswell. Looks impressive, but as you noted, compiler optimization is the most crucial thing for VLIW architecture. Performance of real applications could be awful.

Интелы суперскалярные, но вот RISC ли они внутри - большой вопрос.

uin ★★★
() автор топика
Ответ на: комментарий от robot12

Для VLIW задачка номер 1: У Вас поменялась разрядность слова в VLIW что делать с ПО от которого нет (не рассматриваем причины) исходников ?

Бинарная перекомпиляция старых кодов в новые, нет?

Задачка номер 2: Каким образом, рантайме, «Эльбрус» будет собирать потоки из различных, не взаимосвязанных, процессов ?

Не знаю, а как сейчас работает?

uin ★★★
() автор топика
Ответ на: комментарий от MKuznetsov

hateyoufeel

Я ассемблерных вставок за пределами кодеков, криптографии и ядра не видел уже лет 15

А как тогда еще векторизацию и все вот это вот рекламируемое интелом использовать? Никак получается?

alman

Обсуждение идёт несколько лет на форуме IXBT в разделе «Процессоры»

Ах это на хоботе, ну тогда понятно.

MKuznetsov
Понятия не имею но какая разница же, работа то же с массивами в которой на каждую итерацию цикла приходится еще несколько циклов в которых еще несколько циклов и все это последовательно - во что другое он может это интерпритировать?

uin ★★★
() автор топика
Последнее исправление: uin (всего исправлений: 1)
Ответ на: комментарий от uin

работа то же с массивами в которой на каждую итерацию цикла приходится еще несколько циклов в которых еще несколько циклов и все это последовательно - во что другое он может это интерпритировать?

у вас там ещё JIT компилер и повезёт если он собирает native-code, а не бросает в JVM у которой ещё и свои издержки с извратами. Они совместно могут такого накрутить..не учитывая накладных расходов JS в виде сборки мусора, поддержки среды, парсинга, промежуточной генерации и микрооптимизаций.

MKuznetsov ★★★★★
()

как человек, который для штеуда сделал таки парсер http запроса, скажу что вот эти regexи вообще хз как оптимизировать.

более того, вангую что какая-нибудь упрощённая альтернатива regexу будет удобнее, проще и эффективнее.

процессору же тут делать нечего в принципе. код порождаемый вот этими regexами говно по определению

ckotinko ☆☆☆
()
Ответ на: комментарий от MKuznetsov

Ну это уже гадание на кофейной гуще.

Я же спрашиваю как, и можно ли вообще записать такой вот каскад циклов как у меня в такой же вид как на втором скрипе с оптимизированным кодом на Си (наверное) ++, а будет от этого какой то эффект или нет - легко засечь на время исполнения.

uin ★★★
() автор топика

тогда у компилятора появляется шанс ещё и утрамбовать широкие команды, а также заменить скалярные вычисления на векторные

-funroll-loops, -fvectorize, оно?

ckotinko ☆☆☆
()
Ответ на: комментарий от ckotinko

Нет, ну тут регекспы вспомогательную роль играют. Можно в принципе забабахать один большой громадный цикл который будет перебирать строку побуквенно и на каждой итерации будет складывать и в строку и в слово и символ посчитает вообще без регекспов, но только это катит для этого частного конкретного случая, а в реале мне нужно будет какую нибудь markdown разметку разбирать - слова заключенные в символы, да несколько их разных типов сочетаний (например ***первый вариант*** !== **второй вариант**) уже так просто не получится и без регекспов не прокатит.

uin ★★★
() автор топика
Ответ на: комментарий от uin

Ну это уже гадание на кофейной гуще.

гадание на кофейной гуще - это попытка JS кодом попасть в конкретный физический процессор.

в принципе такое позволительно для конкретного JS, конкретной ОС и конкретной семейки процессоров на совместной рекламной конференции... Но сдаётся мне что к этим компаниям вы отношений не имеете

а вот когда речь про С/С++ то другой коленкор - этож «визуальный ассемблер». Тут вполне оправданно учитывать что «используя вот такую организацию кода облегчаете работу процессора и всё работает быстрее».

ps/ при обработке regexp внутри вложенных циклов вообще мало что из аппаратуры может помочь. Разве что молоток ?

MKuznetsov ★★★★★
()
Ответ на: комментарий от robot12

Использовать семантически подходящие конструкции: компилятор скорее попытается оптимизировать цикл for, чем while, особенно если в нём замечен досрочный выход через break.

Oh shi... нахардкодили, чо.

потому что вызов подпрограмм и возврат управления обратно являются весьма дорогими операциями на «Эльбрусе»

то есть тормозить он будет всегда. привет теоретику бабаяну от суровой реальности.

ckotinko ☆☆☆
()

Как это вот оптимизовать

Этот код выполняется ровно ноль времени. js-рантайм потратит больше ресурсов на подготовку к исполнению этого кода, чем этот код отъест.

Если хочешь писать эффективный код, прочитай «what every programmer should know about memory», «алгоритмы: построение и анализ». Ну и три вложенных цикла — это уровень спортивного программирования, в реальном продакшене за такую оптимальность по голове не погладят.

shahid ★★★★★
()
Ответ на: комментарий от uin

Бинарная перекомпиляция

А с операндами что делать ?

Не знаю

А Вы у архитекторов этого чуда поинтересуйтесь.

robot12 ★★★★★
()
Ответ на: комментарий от uin

Интелы суперскалярные, но вот RISC ли они внутри - большой вопрос.

Вопрос не в том ЧТО внутри, а в том КАК это работает.

robot12 ★★★★★
()
Ответ на: комментарий от uin

ну тут регекспы вспомогательную роль играют.

А как быть с интерпретируемыми языками ???

robot12 ★★★★★
()

тогда у компилятора появляется шанс ещё и утрамбовать широкие команды,

Странно как-то, сколько не сидел на лекциях по техникам оптимизации - так там половину времени мозги луп анроллингами разными полоскали.

А тут предлагают самому делать. Странно.

lgbt
()
Ответ на: комментарий от robot12

Штеуд решил первую задачку в итанике.
Задачка номер два не решается)

Deleted
()
Ответ на: комментарий от uin

Бинарная перекомпиляция старых кодов в новые, нет?

Бинарная перекомпиляция это как? Транслировать и джитовать натив в натив? А как узнать формат старого натива или таскать его за собой постоянно?

Не знаю, а как сейчас работает?

А сейчас оно не работает, на каждый процесс свой контекст.

Deleted
()
Ответ на: комментарий от alman

В прямом: не осилили запилить поддержку большей части хардварных фич в софт(компилятор и ось). В итоге работают какие-то базовые хелловорлды и на этом все.

Deleted
()
Ответ на: комментарий от Vit

Эльбрус ОС - форк дебиана5, а, может, уже и на более позднинй переехали.

Deleted
()
Ответ на: СМОТРИТЕ!!! от lgbt

А чем еще его парсить?

SMD

Бинарная перекомпиляция это как?

Это как запускают сейчас на нем приложения и ОС для x86

Транслировать и джитовать натив в натив?

Это ты тоесть подразумеваешь что будет такое же наслоение легаси говна как в интеле? Нет, совместимость ломается и достигается путем трансляции старых кодов в новые. Там же по моему даже в статье показателен момент с вопросом про средства кросскомпиляции на эльбрусе под x86, ответ был «зачем? Есть бинарный транслятор из под него запускается gcc/VS/шланг и компиляется все что нужно».

uin ★★★
() автор топика
Ответ на: комментарий от uin

Речь шла про другое: у тебя меняется таргет архитектура(теперь у нее командное слово в 2 раза шире и соотвествтенно в нем больше команд влезает для исполнительных устройств) и у тебя есть некоторый бинарник, коотрый собрали под старую нативную архитектуру и продолбали сорцы.
Ты сейчас говоришь, что это не проблема, тк старый бинарь оттранслируют и заджитуют и все станет хорошо?

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.