Рассмотрим бит-бит из N
бит в нем (N
большой), а массив из M
чисел (M
умерен, обычно намного меньше N
), каждый в диапазоне 0..N-1
, указывающий, какой бит вектора должен быть установлен на 1
. Последний массив не отсортирован. Битовый вектор - это всего лишь массив целых чисел, в частности __m256i
, где 256 бит упаковываются в каждую структуру __m256i
.
Как эта работа может быть эффективно разделена на несколько потоков?
Предпочтительным языком является С++ (MSVС++ 2017 toolset v141), сборка также отличная. Предпочтительным процессором является x86_64 (intrinsics в порядке). AVX2 желателен, если какой-либо выигрыш от него.