«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как загрузить 8 чисел с плавающей запятой в переменную __m256 с помощью AVX Intrinsics?

Как загрузить 8 чисел с плавающей запятой в переменную __m256 с помощью AVX Intrinsics?

Опубликовано 17 ноября 2024 г.
Просматривать:199

How to Load 8 Floats into an __m256 Variable Using AVX Intrinsics?

Загрузка 8 чисел с плавающей запятой из памяти в переменную __m256

Ваша цель — заменить буфер с плавающей точкой[8] внутренней переменной __m256. Вот инструкции для достижения этой цели:

Инструкции AVX2:

  1. Используйте VPMOVZXBD ymm0, [rsi] для расширения байтов в памяти до нуля до 32- битовые целые числа.
  2. Преобразуйте целые числа в числа с плавающей запятой с помощью VCVTDQ2PS ymm0, ymm0.

AVX1 Инструкции:

  1. Используйте VPMOVZXBD xmm0, [rsi] для загрузки первых четырех байтов.
  2. Загрузить следующие четыре байта с помощью VPMOVZXBD xmm1, [rsi 4].
  3. Вставьте вторую загрузку в старшие 128 бит ymm0 с помощью VINSERTF128 ymm0, ymm0, xmm1, 1.
  4. Преобразуйте в числа с плавающей запятой с помощью VCVTDQ2PS ymm0, ymm0.

Оптимизация Советы:

  • Для AVX2 рассмотрите возможность использования 128-битной широковещательной загрузки и VPMOVZXBD для повышения производительности.
  • Избегайте использования VPMOVZXBD ymm, [mem] со встроенными функциями, поскольку это может приведет к пропущенной оптимизации.
  • Для AVX1 используйте _mm_loadl_epi64 для сложите загрузку в инструкцию VPMOVZXBD для оптимального кода.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3