Rumah > Artikel > pembangunan bahagian belakang > Cara Memuatkan 8 Aksara daripada Memori ke dalam Pembolehubah __m256: Tiga Pendekatan Cekap
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:
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!