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) соответственно.