Рубрика «arm neon»

Задача

Даны массивы a и out. Нужно записать в out подряд, без пробелов, только те элементы a, которые удовлетворяют заданному условию. В статье — условие a[i] > threshold, a[i] ∈ (0, 1), threshold ∈ {0, 0.5, 1}.

Почему компилятор сдается

Один if внутри цикла копирования роняет скорость с 112 до 2.6 GB/s. Компилятор не может векторизовать — в NEON нет подходящей для этого инструкции. Статья о том, как собрать ее.

auto copy_if(const float* a, float* out, size_t n) {
    size_t j = 0;
    for (size_t i = 0; i < n; ++i) {
        if (a[i] > 0) out[j++] = a[i];
    }
    return j;
}

В задаче copy_if выходной курсор (в коде - jЧитать полностью »

Процессоры ARM: смешиваем NEON с SVE — и забава, и польза - 1

Большинство мобильных устройств используют 64‑битные ARM‑процессоры. Однако они все заметнее и на серверах. Их число неуклонно растет, и все больше компаний, включая таких гигантов, как Amazon и Microsoft, также переходят на 64‑битные ARM.

У этих процессоров есть специальные инструкции — ARM NEON. Они обеспечивают параллелизм, известный как SIMD — Single Instruction, Multiple Data, то есть «Инструкция одна, данных множество». Например, можно сравнить шестнадцать одних значений с шестнадцатью других с помощью всего одной такой инструкции.

Некоторые из самых последних процессоров ARM также поддерживают еще более продвинутый набор команд — SVE, Scalable Vector Extension, или «Масштабируемое векторное расширение». Прогресс не останавливается — и вот уже появились спецификации SVE 2 и SVE 2.1.Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js