Обновить
2
0

Пользователь

Отправить сообщение

С ним то же самое что с полковником МВД который закупил 10k терминалов "Таволга" для МВД.

Насколько я помню был проведен тендер, требованиям которого ни байкал-Т1 ни эльбрус 1С+ не соответствовали, гаишникам нужен был дотнет и java так как на них написано ПО с экзаменом ПДД. Эльбрус отлетел сразу, а байкал по известным неизвестным причинам тендер выйграл. А когда им предъявили что компы требованиям не соответствуют, байкал электроникс (тогда им руководил еще не Евдокимов, а какой то неприятный дед похожий на Чемезова) включал дурака и заявлял что можно же в гнездо SO-DIMM и 8гб модули вставить, а в PCIe слот какую нибудь видеокарту, и значит они всем требованиям соответствуют. А то что у них там 32битный mips (купленый кстати за деньги РОСНАНО) который больше адресовать не может, нет никаких дров на pcie и дискретные видеокарты не поддерживаются это остапа бендера не волнует, лишь бы впарить и умыть руки.

Во всем мире уже вовсю используются сети 5G

Чукча писатель, а не писатель? В статье речь про планы на разработку своего чипа, а не про развертывание LTE/5G на процессорах Qualcomm как "во всем мире".

позволяет компилировать ядро Linux в промежуточный код WebAssembly для последующего прямого выполнения в веб‑браузере без задействования эмуляторов.

все таки wasm это что-то типа байткода виртуальной машины, и исполняется оно в js-рантайме ( как джава опять таки). Браузер это все таки нативное приложение которое старается безопасно увязать свой контекст где все нативные библиотеки и апи вызовы живут с js-контекстами. А многим раньше еще и пытались примотать сюда на скотч флеш, джава и другие сторонние плагины. А потом появился emscripten который показал что нужно не чужой рантайм пытаться встраивать, а конкретное приложение. Так и пришли к wasm.

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

Глядя на это можно спросить то же самое - какие могут быть перспективы на десктопе у этих блобоколясок на risc-v когда на рынке есть нормальные селероны с amd-apu?

Я еще мог понять когда были аргументы за свободное железо, но тут тот же самый огороженый одноплатник просто вместо aarch64 теперь riscv64

JavaScript Canvas

Мог бы вот этими двумя ограничиться. Пистон то с луа зачем?

А, так это нейросеть писала, тогда понятно.
Ютуб загажен этими нейромусором с новостями из параллельной вселенной, теперь еще и статьи на швабре и дзене. Интернет умер.

Архитектурные инновации:

  • Первая массово применённая в коммерческих вычислительных системах суперскалярная архитектура (возможность выполнения до 23 операций за такт).

Суперскалярные эльбрус-1/2 делали 2 (две) операции за такт.
Ко всему остальному в статье лучше тоже следует относится настороженно, автор явно не понимает о чем пишет.

Два руководителя из мцст в двух прошлогодних видео сказали что "да, возможно" (про 25й год и Э32)

Я с -O1 что-то не наблюдаю такого:

Обычный mulsd
Обычный mulsd

Продублировал на Compiler Explorer:
matmul C
matmul C++
Оба по времени исполнения выдают практически идентичный результат, правда на C++ куда то целая часть из результата пропадает и нету желания разбираться.

Upd:
с плюсами разобрался забыл что там линии по несколько раз проходятся и надо += (суммировать).
Закономерно производительность упала в 4 раза по сравнению с Си. Только с -O3 код на плюсах становится на ровне с Си, вот вам и двумерные массивы.

На xmm регистрах интел считает плавучку, это не векторизация.

JIT компиляторы так и делают, а сишный компилятор у него нет рантайм-информации он скомпилировал и выдал, какие еще проверки? Я поэтому и говорю что если нет понимания или желания понимать что статик-тайм-компаил и особенно с ручным управлением памятью требует активного участия со стороны программиста в построении оптимального потока данных и кода для их обработки, то лучше отложить си в сторону и идти писать на питоне с jit компилятором или хотя бы на расте где фронтенд и safe-семантика контролируют все еще на этапе написания кода.

В конкретном примере matmul.c предполагается что размер матрицы может быть определен из аргументов командной строки (что в данной реализации приводит к непредсказуемому поведению в случае запуска через time ./matmul):

int main(int argc, char *argv[])
{
	int n = 1500;
	double **a, **b, **c;
	if (argc > 1) n = atoi(argv[1]);
}

То есть двумерный массив никак не оптимизировать, и вместо того что бы написать макрос который вычисляет сдвиг по оси Х подкинули еще цикл который режет массив на куски. Потом какой нибудь студент вася заметит что вконце очищается только mat[0] подумает непорядок и засунет цикл который "все" отрезки чистит, программа сегфолт выкидывает ну и ладно главное результат печатет.

В matmul -е есть, вот этот код:

double **mat_alloc(int n_row, int n_col)
{
	double **mat, *a;
	int i;
	a = (double*)calloc(n_row * n_col, sizeof(double));
	mat = (double**)malloc(n_row * sizeof(void*));
	for (i = 0; i < n_row; ++i)
		mat[i] = &a[i * n_col];
	return mat;
}

выделяется массив матрицы, выделяется память под массив указателей, массив матрицы записывается указателями построчно и возвращается из функции.

Как вот это компилятору оптимизировать? Сказано выделить память через malloc, если этого не делать программа может быть неработоспособной. Никаких прагм и статиков никаких подсказок компилятору нет, он исходит из пессимистичного сценария.

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

Там проблема не в плавучке а в обработке массива. там длинный массив разрезают на небольшие учаски и кладут в массив указателей. Компилятор Си не может превратить это в обработку линейного массива так как у него нет понимания куда в рантайме все это будет указывать, а процессор не может использовать быструю подкачку для каких то рандомно разбросанных в памяти данных ни префетчем аля интел, ни array-префетчем аля эльбрус. Как минимум надо собирать с профилировкой что бы компилятор увидел, что на самом деле массив линейный, просто его разбивают что бы типа удобнее было обращаться к его элементам. А как максимум придется компилятор дорабатывать что бы он научился выявлять такие вещи с ходу.

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

Вот так: https://ce.mentality.rip/z/84r59E
Сишный matmul становится побыстрее

$ gcc -O1  matmul_old.c 
$ time $(./a.out)
-143.500167: команда не найдена

real    0m6,309s
user    0m6,229s
sys     0m0,075s
$ gcc -O1  matmul_new.c 
$ time ./a.out 

matrix size: 1500x1500

result:  -143.500167

real    0m2,394s
user    0m2,350s
sys     0m0,044s

Наверняка если в функции mat_mul сделать проход по матрицам более линейным (то есть убрать вот этот промежуточный цикл), то можно еще в несколько раз быстрее сделать примерно на уровне функции mat_gen.

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

Хотя в данном случае (заглянул таки в код) бенчмарк лишний раз подтверждает что в НИИ и вузах надо убирать си и вообще низкий уровень, там только и делают что плодят тормозной код и UB

У них фортран просто транслируется в Си лапшу с goto и компилируется как си. Все силы они вкладывают как раз в С/С++ ну и вот на Rust с LLVM тоже в последнее время ресурсы бросили.

Скорость обращения к памяти тоже надо мерить, так что наверное нужная.

кроссплатформенная реализация корутин с поддержкой Эльбруса.

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

Но, если я правильно понял предысторию, никакой корутинной библиотеки изначально небыло, была просто реализация ucоntext для разных архитектур в коде игры TaiseyProject. И именно из за того что контекст свитч на эльбрусе устроен иначе, грамотным выходом из ситуации было написание высокоуровневого api, что портировавший и сделал. Ну и ее в итоге приняли в менлайн

В целом я со всем согласен, самому приходили в голову мысли что Qt на фоне современных плюсов выглядит довольно таки устаревшим, а QML дико неудобным на фоне современных CSS+HTML. И я тоже мечтаю вот бы кто нибудь запили фреймворк как Qt только на чистых плюсах + HTML.

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

1
23 ...

Информация

В рейтинге
5 697-й
Зарегистрирован
Активность