MAX
Подпишись
стань автором. присоединяйся к сообществу!
01 января 36
204

Фото дня! Материнская плата с процессором Эльбрус-8С

Поздравление с Новым Годом от директора компании МЦСТ Александра Кима.

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

Компания АО «МЦСТ» в кооперации с ПАО «ИНЭУМ им. И.С.Брука» в течение года вела активную работу по созданию отечественной вычислительной техники различных классов.

[читать статью полностью...]

Кстати, а вы знали, что на «Сделано у нас» статьи публикуют посетители, такие же как и вы? И никакой премодерации, согласований и разрешений! Любой может добавить новость. А лучшие попадут в наш Телеграм @sdelanounas_ru. Подробнее о том как работает наш сайт здесь👈

Источник: mcst.ru

Комментарии 0

Для комментирования необходимо войти на сайт

  • 1
    Нет аватара Neptus02.01.16 16:07:53

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

    Пользователю это не видно и не нужно видеть. Он берёт уже готовые кирпичики и строит из них свою программу.

    И к сведению, AVX/SSE/MMX не имеют никакого отношения к параллельности. Это массированные однотипные вычисления.

    • 0
      Нет аватара guest02.01.16 23:55:51

      AVX/SSE/MMX не имеют никакого отношения к параллельности

      мде?

      Отредактировано: Антон Смоленский~01:01 03.01.16
    • 0
      Нет аватара guest03.01.16 10:03:08

      Как бе вам сказать. AVX — это SIMD.

      SIMD (англ. single instruction, multiple data — одиночный поток команд, множественный поток данных, ОКМД) — принцип компьютерных вычислений, позволяющий обеспечить параллелизм на уровне данных.

      Кому интересно, это происходит так.

      Я могу выполнить одновременно операцию над группой данных.

      Компиляторы даже весьма явно этот параллелизм используют.

      К примеру

      for(int ind=0; ind < 4; ind++)

      {

      a[ind]=b[ind]*c[ind]; //int 64 bit

      }

      В обычном случае это вычисления будут выполнены 4 раза.

      Но компилятор может этот цикл векторизовать.

      Сначала для наглядности разворачиваем цикл.

      a[0]=b[0]*c[0];

      a[1]=b[1]*c[1];

      a[2]=b[2]*c[2];

      a[3]=b[3]*c[3];

      теперь векторизуем, регистры AVX называются YMM0-YMM15, как видно их 16, каждый по 256 bit. Нам нужно 3. В каждый регистр влазит четыре числа по 64 бит.(у нас как раз такие для примера)

      В первый пихаем a[ind]

      YMM0 a[0] a[1] a[2] a[3]

      Во второй пихаем b[ind]

      YMM1 b[0] b[1] b[2] b[3]

      В третий с[ind]

      YMM2 с[0] с[1] с[2] с[3]

      Теперь компилятор выполняет что-то вроде

      vmul ymm1,ymm2,ymm0 (векторное умножение второго на третий регистр и результат кладёт в первый).

      В итоге мы параллельно выполнили 4 умножения над разными данными.

      В Эльбрус же ситуация заканчивается на первой стадии — развёртке цикла. Эльбрус может выполнять параллельно «до десяти арифметико-логических операций» если использую 64 битные данные. Если же 32 бит к примеру, происходит векторизация, как и на интел, то есть в один 64-битный регистр запихивают два 32 битных числа. Именно с помощью векторизации и получаются эти 50 Гфлопс одинарной точности, которые неправильно сравнивают интеловскими гигафлопсами двойной точности.

      Отредактировано: Tuck Trucker~11:06 03.01.16
      • 0
        RadiantConfessor RadiantConfessor04.01.16 01:50:19

        AVX в плане термина SIMD ни чем не отличается от сложения двух упакованных 32-х разрядных чисел. Т. е. то, что вы называете параллельностью применялось даже в одноядерных процессорах. Но ваш оппонент очевидно имел ввиду параллельное исполнение команд.

        Отредактировано: Zveruga~04:12 04.01.16