Pengiraan logaritma adalah penting dalam pelbagai aplikasi saintifik dan kejuruteraan. Artikel ini meneroka pelaksanaan fungsi log2() yang cekap untuk vektor titik terapung berketepatan dua elemen 4 menggunakan Sambungan Vektor Lanjutan 2 (AVX2).
Intel's Perpustakaan Matematik Vektor Berskala (SVML) menyediakan fungsi intrinsik __m256d _mm256_log2_pd (__m256d a) untuk melaksanakan operasi log2 pada vektor 4-bit. Walau bagaimanapun, intrinsik ini hanya tersedia dalam pengkompil Intel dan dilaporkan mempunyai kelemahan prestasi pada pemproses AMD.
Untuk melaksanakan log2() tanpa bergantung pada intrinsik khusus pengkompil, kita boleh memanfaatkan anggaran polinomial. Kita boleh menyatakan log2(x) sebagai siri Taylor berkembang di sekitar x = 1, atau lebih khusus, kita boleh menggunakan berbilang istilah polinomial untuk menganggarkan log2(mantissa) dalam julat [1.0, 2.0].
Pelaksanaan C berikut menyediakan fungsi log2() yang sangat cekap untuk vektor berketepatan dwi 4-bit menggunakan AVX2 dan anggaran polinomial tersuai:
__m256d __vectorcall Log2(__m256d x) { // Extract exponent and normalize it // Calculate t=(y-1)/(y+1) and t**2 // Calculate log2(y) and add exponent return log2_x; }
Formula anggaran yang digunakan boleh digambarkan sebagai:
Pekali polinomial telah dipasang untuk meminimumkan ralat mutlak maksimum dalam julat [1.0, 2.0].
Tanda aras menunjukkan bahawa pelaksanaan ini mengatasi kedua-dua std::log2() dan std::log() dengan margin yang ketara, mencapai kira-kira 4 kali ganda prestasi std ::log2().
ketepatan pelaksanaan boleh disesuaikan dengan menambah lebih banyak istilah polinomial. Walau bagaimanapun, meningkatkan tertib polinomial akan meningkatkan bilangan operasi titik terapung dan berpotensi mengurangkan prestasi.
Pelaksanaan AVX2 log2() yang disediakan menawarkan kecekapan dan prestasi tinggi untuk pengiraan logaritma vektor . Dengan memanfaatkan anggaran polinomial tersuai, fungsi ini menyediakan penyelesaian mudah alih dan cekap untuk operasi log2 pada vektor titik terapung berketepatan dua kali ganda 4-bit.
Atas ialah kandungan terperinci Bagaimanakah AVX2 Boleh Digunakan untuk Melaksanakan log2(__m256d) dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!