Scatter/Gather in Xeon Phi

Я имел в виду руководство Intel по набору инструкций Xeon Phi и не смог понять, как работают инструкции разброса / сбора.

Предположим, если у меня есть следующий вектор двойных чисел:

A-> |b4|a4|b3|a3|b2|a2|b1|a1|

Можно ли создать 4 вектора следующим образом:

V1->|b1|a1|b1|a1|b1|a1|b1|a1|
V2->|b2|a2|b2|a2|b2|a2|b2|a2|
V3->|b3|a3|b3|a3|b3|a3|b3|a3|
V4->|b4|a4|b4|a4|b4|a4|b4|a4|

используя эти инструкции? Есть ли другой способ добиться этого?

1 ответ

Решение

Получил это от форумов Intel (ответил Евгений Петров):

__m512d V1 = (__m512d)_mm512_extload_epi32(&Addr, _MM_UPCONV_EPI32_NONE, _MM_BROADCAST_4X16, _MM_HINT_NONE);

где 'Addr' - адрес места в памяти, из которого мы загрузили двойные числа в вектор 'A'.

Мы можем сделать аналогичную операцию для V2,V3,V4, используя &(Addr+2), &(Addr+4) и &(Addr+6) соответственно.

Другие вопросы по тегам