PSAUXWW Telegram 1338
В современных процессорах, кроме операций над числами, есть операции над массивами (векторами). В современных Intel за это отвечает технология AVX, а в ARM есть NEON. Называется это SIMD - Single instruction/Multiple data, тоесть процессор всего за один такт может обработать (прибавить-отнять-умножить, их много) вместо одного числа, целый массив, который влазит в векторный регистр.

SIMD - очень крутая штука, например для мультимедии, где нужно на ходу увеличить-уменьшить громкость потока, изменить яркость картинки или наложить какой-то хитрый фильтр. Мультимедией, конечно, задачи не ограничиваются - тут уже зависит только от вашей фантазии.

Для использования SIMD не нужно писать на ассемблере. В Rust есть std::Simd, который пока unstable и доступен только в nightly, зато дает абстракцию над всеми процессорами. Или инструкции для конкретного процессора, которые stable, но доступны только под конкретную платформу. По опыту, Simd оверхеда не дает.

Векторные регистры относительно огромны - вы можете совать до 512 бит информации и процессить, например сразу 64 значения u8, 32 значения u16, 16 значений u32 или f32 и т.д. Например, поиск максимального значения в слайсе выглядит так:

use std::simd::num::SimdUint;
use std::simd::Simd;

let s: Simd<u8, 64> = Simd::from_slice(somedata);
let max = s.reduce_max();


Теоретически, если побить Vec<u8> на слайсы по 64 элемента, вы сможете найти максимальное значение в 64 раза быстрее. Но практически всё еще лучше - поскольку производители процессоров стараются максимально оптимизировать именно мультимедиа и подобные задачи, выигрыш будет исчисляться сотнями раз.



tgoop.com/psauxww/1338
Create:
Last Update:

В современных процессорах, кроме операций над числами, есть операции над массивами (векторами). В современных Intel за это отвечает технология AVX, а в ARM есть NEON. Называется это SIMD - Single instruction/Multiple data, тоесть процессор всего за один такт может обработать (прибавить-отнять-умножить, их много) вместо одного числа, целый массив, который влазит в векторный регистр.

SIMD - очень крутая штука, например для мультимедии, где нужно на ходу увеличить-уменьшить громкость потока, изменить яркость картинки или наложить какой-то хитрый фильтр. Мультимедией, конечно, задачи не ограничиваются - тут уже зависит только от вашей фантазии.

Для использования SIMD не нужно писать на ассемблере. В Rust есть std::Simd, который пока unstable и доступен только в nightly, зато дает абстракцию над всеми процессорами. Или инструкции для конкретного процессора, которые stable, но доступны только под конкретную платформу. По опыту, Simd оверхеда не дает.

Векторные регистры относительно огромны - вы можете совать до 512 бит информации и процессить, например сразу 64 значения u8, 32 значения u16, 16 значений u32 или f32 и т.д. Например, поиск максимального значения в слайсе выглядит так:

use std::simd::num::SimdUint;
use std::simd::Simd;

let s: Simd<u8, 64> = Simd::from_slice(somedata);
let max = s.reduce_max();


Теоретически, если побить Vec<u8> на слайсы по 64 элемента, вы сможете найти максимальное значение в 64 раза быстрее. Но практически всё еще лучше - поскольку производители процессоров стараются максимально оптимизировать именно мультимедиа и подобные задачи, выигрыш будет исчисляться сотнями раз.

BY Segment@tion fault


Share with your friend now:
tgoop.com/psauxww/1338

View MORE
Open in Telegram


Telegram News

Date: |

Each account can create up to 10 public channels Matt Hussey, editorial director of NEAR Protocol (and former editor-in-chief of Decrypt) responded to the news of the Telegram group with “#meIRL.” Private channels are only accessible to subscribers and don’t appear in public searches. To join a private channel, you need to receive a link from the owner (administrator). A private channel is an excellent solution for companies and teams. You can also use this type of channel to write down personal notes, reflections, etc. By the way, you can make your private channel public at any moment. When choosing the right name for your Telegram channel, use the language of your target audience. The name must sum up the essence of your channel in 1-3 words. If you’re planning to expand your Telegram audience, it makes sense to incorporate keywords into your name. During the meeting with TSE Minister Edson Fachin, Perekopsky also mentioned the TSE channel on the platform as one of the firm's key success stories. Launched as part of the company's commitments to tackle the spread of fake news in Brazil, the verified channel has attracted more than 184,000 members in less than a month.
from us


Telegram Segment@tion fault
FROM American