Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Kami Boleh Melaksanakan log2(__m256d) dengan Cekap dalam AVX2 untuk Kedua-dua Pemproses Intel dan AMD?
SVML __m256d _mm256_log2_pd (__m256d a) terhad kepada pengkompil Intel pada AMD dan dilaporkan perlahan. Pelaksanaan alternatif wujud, tetapi ia sering menumpukan pada SSE dan bukannya AVX2. Perbincangan ini bertujuan untuk menyediakan pelaksanaan log2() yang cekap untuk vektor empat nombor berganda yang serasi dengan pelbagai penyusun dan berfungsi dengan baik pada kedua-dua pemproses AMD dan Intel.
Strategi Tradisional
Pendekatan biasa memanfaatkan formula log2(a*b) = log2(a) log2(b), yang memudahkan kepada eksponen log2(mantissa) untuk nombor berganda. Mantissa mempunyai julat terhad 1.0 hingga 2.0, menjadikannya sesuai untuk anggaran polinomial untuk mendapatkan log2(mantissa).
Ketepatan dan Ketepatan
Ketepatan dan yang diingini julat input mempengaruhi pelaksanaan. VCL Agner Fog bertujuan untuk ketepatan tinggi menggunakan teknik mengelakkan ralat. Walau bagaimanapun, untuk log apungan anggaran yang lebih pantas(), pertimbangkan pelaksanaan polinomial JRF (didapati di sini: http://jrfonseca.blogspot.ca/2008/09/fast-sse2-pow-tables-or-polynomials.html).
Algoritma VCL
Fungsi log dan berganda VCL mengikuti a pendekatan dua bahagian:
Keputusan akhir diperoleh dengan menambahkan eksponen pada penghampiran polinomial. VCL termasuk langkah tambahan untuk meminimumkan ralat pembundaran.
Penghampiran Polinomial Alternatif
Untuk meningkatkan ketepatan, anda boleh menggunakan VCL secara terus. Walau bagaimanapun, untuk pelaksanaan log2() anggaran yang lebih pantas untuk apungan, pertimbangkan untuk mengalihkan fungsi SSE2 JRF ke AVX2 dengan FMA.
Mengelakkan Ralat Pembundaran
VCL menggunakan pelbagai teknik untuk mengurangkan ralat pembundaran. Ini termasuk:
Melucutkan Langkah yang Tidak Perlu
Jika nilai anda diketahui terhingga dan positif, anda boleh meningkatkan prestasi dengan ketara dengan mengulas semakan untuk aliran bawah, limpahan atau denormal.
Selanjutnya Membaca
Atas ialah kandungan terperinci Bagaimanakah Kami Boleh Melaksanakan log2(__m256d) dengan Cekap dalam AVX2 untuk Kedua-dua Pemproses Intel dan AMD?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!