Разбрасывать/собирать в 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|

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


person user1715122    schedule 12.03.2013    source источник
comment
Да, я не думаю, что Ларраби — подходящее слово для этого. Я думаю, что ОП имеет в виду архитектуру Xeon Phi, которая была недавно выпущена. Я еще не видел много информации там. Вот ссылка на справку по набору инструкций. Похоже, у него есть довольно мощные возможности.   -  person Jason R    schedule 12.03.2013
comment
Это почти одно и то же.   -  person Jasper Bekkers    schedule 12.03.2013


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

person user1715122    schedule 14.03.2013