Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara Memuatkan 8 Aksara daripada Memori ke dalam Pembolehubah __m256: Tiga Pendekatan Cekap

Cara Memuatkan 8 Aksara daripada Memori ke dalam Pembolehubah __m256: Tiga Pendekatan Cekap

Barbara Streisand
Barbara Streisandasal
2024-11-03 15:52:02160semak imbas

How to Load 8 Characters from Memory into an __m256 Variable: Three Efficient Approaches

Memuatkan 8 Aksara daripada Memori ke dalam Pembolehubah __m256: Satu Analisis

Masalah:

Anda mahu mengoptimumkan algoritma untuk kabur Gaussian pada imej dengan menggantikan penimbal terapung[8] dengan pembolehubah __m256 intrinsik untuk meningkatkan prestasi.

Penyelesaian 1: Menggunakan PMOVZX dan VCVTDQ2PS AVX2

Ini pendekatan menggunakan PMOVZX untuk memanjangkan aksara 8-bit kepada integer 32-bit dan kemudian menukarnya kepada nilai titik terapung melalui VCVTDQ2PS. Khususnya:

VPMOVZXBD   ymm0,  [rsi]   ; Byte to DWord
VCVTDQ2PS   ymm0, ymm0     ; convert to packed float

Penyelesaian 2: Menggabungkan Beban Siaran dan Kocok

Strategi ini melibatkan melaksanakan beban siaran 128-bit untuk menghasilkan vektor kawalan shuffle 64-bit untuk vpshufb, membenarkan sambungan sifar dan penukaran apungan yang dibungkus. Ia menawarkan daya pemprosesan yang tinggi dengan menghapuskan keperluan untuk arahan shuffle tambahan.

VPMOVSXBD   xmm0,  [rsi]   ; Byte to DWord
VPMOVSXBD   xmm1,  [rsi+4] 
VINSERTF128 ymm0, ymm0, xmm1, 1   
VCVTDQ2PS   ymm0, ymm0     ; convert to packed float.

Penyelesaian 3: Mengendalikan Had AVX1

Jika tiada AVX2, langkah berikut boleh diambil bekerja:

VPMOVZXBD   xmm0,  [rsi]
VPMOVZXBD   xmm1,  [rsi+4]
VINSERTF128 ymm0, ymm0, xmm1, 1   ; put the 2nd load of data into the high128 of ymm0
VCVTDQ2PS   ymm0, ymm0     ; convert to packed float.

Nota Tambahan:

  • Pertimbangkan untuk menggunakan VPADDQ dan bukannya VCVTDQ2PS untuk peningkatan prestasi selanjutnya.
  • Berhati-hati pengoptimuman pengkompil berpotensi dalam bahasa yang berbeza.
  • Rujuk sumber khusus yang dipautkan dalam penyelesaian untuk mendapatkan cerapan tambahan.

Atas ialah kandungan terperinci Cara Memuatkan 8 Aksara daripada Memori ke dalam Pembolehubah __m256: Tiga Pendekatan Cekap. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn