У меня есть массив 8-битных целых чисел, который я хочу обработать с помощью SIMD-инструкций.
Поскольку эти целые числа будут использоваться вместе с числами с плавающей запятой одинарной точности, я фактически хочу загрузить их в 32-битные полосы вместо более «естественные» 8-битные линии.
Предполагая AVX512, если у меня есть следующий массив:
Примечание. В качестве примера я использовал AVX512. В идеале мне нужна «универсальная» стратегия, которую можно абстрагировать от нескольких наборов инструкций, используя, например, Google Шоссе.
У меня есть массив 8-битных целых чисел, который я хочу обработать с помощью SIMD-инструкций. Поскольку эти целые числа будут использоваться вместе с числами с плавающей запятой одинарной точности, я фактически хочу загрузить их в 32-битные полосы вместо более «естественные» 8-битные линии. Предполагая AVX512, если у меня есть следующий массив: [code]std::array< std::uint8_t, 16 > i{ i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15 }; [/code] Я хочу получить регистр __m512i, заполненный следующими байтами: [code][ 0, 0, 0, i0, 0, 0, 0, i2, 0, 0, 0, i3, 0, 0, 0, i4, 0, 0, 0, i5, 0, 0, 0, i6, 0, 0, 0, i7, 0, 0, 0, i8, 0, 0, 0, i9, 0, 0, 0, i10, 0, 0, 0, i11, 0, 0, 0, i12, 0, 0, 0, i13, 0, 0, 0, i14, 0, 0, 0, i15 ] [/code] Как лучше всего этого добиться? В настоящее время я выполняю его, используя: [code]_mm512_set_epi32( a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], a[13], a[14], a[15]); [/code] Примечание. В качестве примера я использовал AVX512. В идеале мне нужна «универсальная» стратегия, которую можно абстрагировать от нескольких наборов инструкций, используя, например, Google Шоссе.
У меня есть массив 8-битных целых чисел, который я хочу обработать с помощью SIMD-инструкций.
Поскольку эти целые числа будут использоваться вместе с числами с плавающей запятой одинарной точности, я фактически хочу загрузить их в 32-битные полосы...
Я пишу код DSP, который выполняет волновое искажение входного сигнала. Этот код применяет усиление амплитуды (умножает входные данные на значение усиления), затем wave складывает входные данные таким образом, чтобы конечный диапазон амплитуды...
Я пишу код DSP, который выполняет волновое искажение входного сигнала. Этот код применяет усиление амплитуды (умножает входные данные на значение усиления), затем wave складывает входные данные таким образом, чтобы конечный диапазон амплитуды...
Я пишу код DSP, который выполняет волновое искажение входного сигнала. Этот код применяет усиление амплитуды (умножает входные данные на значение усиления), затем wave складывает входные данные таким образом, чтобы конечный диапазон амплитуды...