LINUX.ORG.RU
Ответ на: комментарий от krasnh

Когда там до домашнего потребителя дело дойдет, вопрос второстепенной важности.

При желании, проблем купить нет. Под желанием подразумевается предоплата магазину или знакомому юрлицу, чтобы тот купил компьютер и продал. Я так себе купил. Основная проблема в цене. У домашнего потребителя редко бывает настолько важная информация в компьютере (или оборудование, управляемое компьютером).

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

Вы бы хоть сами читали свои ссылки. Во-первых, дата «13 Декабря 2021», с тех пор многое, знаете ли, прошло и прозошло. Во-вторых,

В предположении Жбанкова, чтобы соблюсти большую часть требований нужно просто переупаковать сервер, не трогая сам процессор и ОС.

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

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

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

Очередная ложь и попытка манипуляции. В вики доступно написано кто и какие усилия приложил.

lomaster
()
Ответ на: комментарий от Shadow

А оно правда лучше Risc-V в не-военных задачах?

Насколько, я понимаю Risc-V — это примерно ARM на стероидах. Очень сложная логика в процессоре, очень длинный конвейер. Сделать, чтобы такая штука работала эффективно - крайне сложно.

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

А вообще есть рабочие станции на Risc-V?

monk ★★★★★
()

сообщает CNews со ссылкой на собственные источники

Смешно

sn4il
()
Ответ на: комментарий от monk

Программируется на том же Си, на котором и все остальные.

Вот вам пример «того же Си, что и все остальные». Как думаете, сколько стоит строчка этого кода?

void Step10_asm( int count1, float xxi, float yyi, float zzi, float fsrrmax2, float mp_rsm2, float *xx1, float *yy1, float *zz1, float *mass1, float *ax, float *ay, float *az )
{
    int i = 0, j, k;
    const int offset = 32; 
    
    vector4double b0, b1, b2, b3, b4, b5, b6;
    vector4double c0, c1, c2, c3, c4, c5, c6;
    vector4double a0 = (vector4double){ 0.5, 0.5, 0.5, 0.5 };
    vector4double a1 = (vector4double){ (double)xxi, (double)xxi, (double)xxi, (double)xxi };
    vector4double a2 = (vector4double){ (double)yyi, (double)yyi, (double)yyi, (double)yyi };
    vector4double a3 = (vector4double){ (double)zzi, (double)zzi, (double)zzi, (double)zzi };
    vector4double a4 = (vector4double){ (double)fsrrmax2, (double)fsrrmax2, (double)fsrrmax2, (double)fsrrmax2 };
    vector4double a5 = (vector4double){ (double)mp_rsm2, (double)mp_rsm2, (double)mp_rsm2, (double)mp_rsm2 };
    vector4double a6 = (vector4double){ 0., 0., 0., 0. };
    vector4double a7 = (vector4double){ 0., 0., 0., 0. };
    vector4double a8 = (vector4double){ 0., 0., 0., 0. };
    vector4double a9 = (vector4double){ 0., 0., 0., 0. };
    vector4double a10 = (vector4double){ 0.269327, 0.269327, 0.269327, 0.269327 };
    vector4double a11 = (vector4double){ -0.0750978, -0.0750978, -0.0750978, -0.0750978 };
    vector4double a12 = (vector4double){ 0.0114808, 0.0114808, 0.0114808, 0.0114808 };
    vector4double a13 = (vector4double){ -0.00109313, -0.00109313, -0.00109313, -0.00109313 };
    vector4double a14 = (vector4double){ 0.0000605491, 0.0000605491, 0.0000605491, 0.0000605491 };
    vector4double a15 = (vector4double){ -0.00000147177, -0.00000147177, -0.00000147177, -0.00000147177 };

    /*
    int32_t depth = 3;
    L1P_SetStreamPolicy( L1P_stream_confirmed );
    L1P_SetStreamDepth(depth);
    */

    for ( i = 0, j = 0; i < count1-7; i = i + 8, j = j + 32 ) 
    { 
    
        __dcbt( (void *)&xx1  [i+offset] );
        __dcbt( (void *)&yy1  [i+offset] );
        __dcbt( (void *)&zz1  [i+offset] );
        __dcbt( (void *)&mass1[i+offset] );
    

        b0 = vec_ld( j   , xx1 );
        c0 = vec_ld( j+16, xx1 );
        
        b1 = vec_ld( j   , yy1 );
        c1 = vec_ld( j+16, yy1 );

        b2 = vec_ld( j   , zz1 );
        c2 = vec_ld( j+16, zz1 );

        b3 = vec_sub( b0, a1 );
        c3 = vec_sub( c0, a1 );

        b4 = vec_sub( b1, a2 );
        c4 = vec_sub( c1, a2 );

        b5 = vec_sub( b2, a3 );
        c5 = vec_sub( c2, a3 );

        b0 = vec_madd( b3, b3, a6 );
        c0 = vec_madd( c3, c3, a6 );

        b0 = vec_madd( b4, b4, b0 );
        c0 = vec_madd( c4, c4, c0 );

        // Ну и так далее... за продолжением обращайтесь к автору. 
VIT ★★
()
Ответ на: комментарий от doomer

Они уже сейчас никому не нужны ,а через n лет и подавно

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

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

Просто нужен опытный в этой области специалист и все.

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

Так что этот код не про уникальность какую то.

Меня в этом плане математики больше изумляют. Которые хорошо разбираютс именно в математике и применят ее по делу в программировании. Именно специалисты. Вот они создают действително волшебные вещи. Если не понимаешь, конечно, как это работает.

LightDiver ★★★★★
()
Последнее исправление: LightDiver (всего исправлений: 1)
Ответ на: комментарий от VIT
  1. Доля такого кода очень мала.

  2. Такой код писать хоть под Intel, хоть под Эльбрус - сложность одинакова.

Вот для Эльбруса:

float *pX = x;
float *pY = y;
__m128 Sum = _mm_setzero_ps();
int num = n / 4;
for (int i = 0; i < num; ++i, pX += 4, pY += 4)
{
  Sum = _mm_add_ps(Sum, _mm_mul_ps(_mm_load_ps(pX), _mm_load_ps(pY)));
}
float result = _mm_extract_ps(Sum, 0) + _mm_extract_ps(Sum, 1) + _mm_extract_ps(Sum, 2) + _mm_extract_ps(Sum, 3);
monk ★★★★★
()
Ответ на: комментарий от LightDiver

Хотите посмотреть оригинал? Это три года работы специалиста, профессионально занимавшегося векторизацией кода на тот момент (2010-2012 годы). И код этот уникальный много чем, но мы с вами это здесь обсуждать не будем, для этого другие форумы есть. «Просто Си» - да не совсем просто. Грубо говоря это перенос вычислительной схемы с машины RoadRunner на машину Sequoia.

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

Доля такого кода очень мала.

И заказчиков для того кода тоже очень не много. Об чём и речь!

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

Я довольно плохоо понимаю си, но даже мне примерно понятно о чем код. Я к тому, что сложной работа специалиста может показаться непосвященному и только по началу. И самому специалисту тоже, пока он не войдет плотно в работу. А вот потом все скатывается к банальщине и рутине - привыкаешь ко всему.

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

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

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

Ну что, обычный dot product. Мой код посложнее будет порядка на три. Там сильное взаимодействие считается.

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

А вообще есть рабочие станции на Risc-V?

Да я гуглил, процы есть. Я думал, тут как раньше Sparc в российской военке использовался, так же можно внедрить. А под общего назначения RISC в любом случае что-нибудь делать проще...

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

Меня в этом плане математики больше изумляют. Которые хорошо разбираютс именно в математике и применят ее по делу в программировании. Именно специалисты. Вот они создают действително волшебные вещи. Если не понимаешь, конечно, как это работает.

Ага. Типа такого (вычисление обратного квадратного корня)

float Q_rsqrt( float number )
{
    long i;
    float x2, y;
    const float threehalfs = 1.5F;

    x2 = number * 0.5F;
    y  = number;
    i  = * ( long * ) &y;
    i  = 0x5f3759df - ( i >> 1 );
    y  = * ( float * ) &i;
    y  = y * ( threehalfs - ( x2 * y * y ) );
    y  = y * ( threehalfs - ( x2 * y * y ) );
    return y;
}
monk ★★★★★
()
Ответ на: комментарий от LightDiver

А вот потом все скатывается к банальщине и рутине - привыкаешь ко всему.

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

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

Вот! Вот об этом я и говорю! А представь вариант с таблично-интерполяционным подходом вычисления? Математика в программировании - величайшая вещь. А само программирование не такое сложное, как кажется.

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

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

Ты привык к старому, но никто не говорит, что прекращаешь учиться новому. Но заметь, изученное и давно отработанное старое у тебя явно выходит на автомате.

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

Но зачем?

Обычно ответ на этот вопрос: «потому что заказчик платит». А заказчик с помощью такого кода уже решает свои коммерческие или военные задачи.

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

Круто конечно. Но сколько NOP'ов в средней инструкции на обычном, не оптимизированном коде? Как компилятор может предсказать кэш-мисс?

vazgen05 ★★★
()

«Эльбрусы» снова делают.

А «Спарки»? К процессору «Эльбрусу» еще микросхема подключения внешних устройств требуется, а «Спарки» самодостаточны в одной микросхеме, поддерживаются свежим открытым компилятором «ГЦЦ» и на них вполне можно создавать современные бортовые вычислители.

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

Да, но у нас разные заказчики. Диаметрально разные.

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

Интересно, а им тогда что мешает попасть в магазины? Понятно, почему нет Эльбрусов: очень дорого. Понятно, почему нет Лунсонов: КНР запрещает экспорт. Но что мешает тому же SiFive?

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

Но заметь, изученное и давно отработанное старое у тебя явно выходит на автомате.

Кстати мы сейчас с одним моим студентом (точнее с группой под его руководством) работаем над проектом формализации этого знания. Пока плохо получается.

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

А без опыта никакое знание не приживется. Оно должно быть отработано многократно, осознано на уровне подсознания и полностью впитано. И только потом как прорывает и становится предельно понятным.

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

А как же ML? Шучу, шучу. «Мужики всё равно собирались выпить, но тут кто-то вспомнил про день шахтёра».

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

Круто конечно. Но сколько NOP’ов в средней инструкции на обычном, не оптимизированном коде?

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

Или если вызвать что-то вроде x->f()->g()->k(). Тогда после возврата из функции может до 6 NOP быть (если нечего больше вычислять). Но если есть доступ к телу функций, тогда компилятор оптимизирует.

Как компилятор может предсказать кэш-мисс?

Предсказать не может. Сделать в этом случае полезную работу, в том числе спекулятивно, может. Есть rbranch = переход, если случился кэш-мисс.

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

Как компилятор может предсказать кэш-мисс?

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

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

В-четвёртых, от людей, которые в этом эксперименте участвовали (я читал у Горшенина): там большая часть претензий к комплектации ИНУЭМ-овского сервера, чем, собственно, к процессору (в формате «ручек нет», стартовую программу (типа BIOS) подшаманить-бы и вот это всё).

По производительности много чего решили буквально сразу после отчёта, например пересобрав и оптимально перенастроив java-машину. Да, в Сбере много кода на Джаве и на Эльбрус её, насколько я помню, пилили и пилят отдельная контора.

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

Как компилятор может предсказать кэш-мисс?

Никак, как правило.

sabacs
()
Ответ на: комментарий от monk

А есть сравнительный анализ с IA64, какие ошибки IA64 были учтены? Ладно, пойду ИИ спрошу...

Говорит, что IA64 был сферическим конём в вакууме, на котором решили скакать. А у Эльбруса много костылей в хорошом смысле и сразу поднимался вопрос - «а как мы на нём...»

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

А есть сравнительный анализ с IA64, какие ошибки IA64 были учтены?

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

https://www.usenix.org/legacy/event/usenix05/tech/general/gray/gray.pdf

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

Были бы ресурсы, никто с компилятором возиться не стал бы.

Спорно. Компилятор дешевле, чем микропроцессорные навороты. Или «ресурсы» = готовая схема процессора уровня Intel Core i9?

Хотя Интел именно поэтому и профукал свой IA-64. С компилятором возиться не стал.

monk ★★★★★
()

Я вот удалил закладку этого сайта из браузера как и хабра

И снова здорово!

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

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

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

Были бы ресурсы, никто с компилятором возиться не стал бы.

Так у нас выбора особо нет. Мы уже до 3нм техпроцесса дошли. В опытах Дэвиссона и Джермера длина волны де Бройля сопостовима и меньше этого транзистор не сделать. А вот предела сложности в разработке компиляторов мы не то чтоб не достигли, а не факт что таковой предел вообще существует.

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

Ну хорошо наверное. Я вот все стесняюсь к ним сходить, так то можно биос писать…

А ведь они очень удобно размещаются, прямо рядом со мной.

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

Спорно. Компилятор дешевле, чем микропроцессорные навороты.

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

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

До сих пор технологию transistor all-around не освоила ни TSMC ни Intel ни Samsung. До сих пор никто из троих не делает трёхмерные структуры. Не торопитесь про 3 нм, хотя и 18A уже показаны.

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

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

может он уже типичную, специально не заточенную задачу успешно запилить с производительностью, близкой к теоретической?

Для типичных задач выдаёт производительность выше Интела в операциях на такт. Для заточенных выдает выше в разы.

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

По мере накопления капитала, самая большая ценность становятся люди, а не груда кремния.

И для суперскаляра и для компилятора нужны люди. В первом случае они проектируют процессор, во втором компилятор. Интел идёт по пути суперскаляров исключительно из-за инерции: у него огромные наработки по процессорной архитектуре, которые он просто перетаскивает из версии в версию. А при переходе на VLIW все эти наработки становятся лишними как коробка передач и турбонаддув на электромобиле. Поэтому затраты на IA-64 получились гораздо больше, чем на очередной Core и Интел пошёл проторенной тропой.

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

monk ★★★★★
()

Это на них чесали делать банкоматы? Вангую всю партию выкупит сбер для будущих ремонтов. :D

TheNewDragon
()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)