Rumah > pembangunan bahagian belakang > C++ > 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
Lepaskan: 2024-11-03 15:52:02
asal
269 orang telah melayarinya

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
Salin selepas log masuk

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.
Salin selepas log masuk

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.
Salin selepas log masuk

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 Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan