Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Melaksanakan log2(__m256d) dengan Cekap dalam AVX2 tanpa Ketergantungan Pengkompil Intel?
Dalam konteks AVX2, fungsi __m256d _mm256_log2_pd (__m256d a) Intel dan tidak serasi dengan Intel yang lain dilaporkan mempamerkan prestasi berkurangan pada pemproses AMD. Untuk menangani perkara ini, mari kita terokai pelaksanaan alternatif yang menawarkan kecekapan dan keserasian yang luas.
Lazimnya, log2(ab) dikira sebagai log2(a) log2 (b). Memandangkan a diwakili oleh 2^eksponen mantissa, pengiraan dipermudahkan kepada eksponen log2(mantissa). Julat terhad mantissa (1.0 hingga 2.0) membolehkan penghampiran polinomial yang disesuaikan untuk mengira log2(mantissa).
Peluasan siri Taylor biasanya digunakan sebagai titik permulaan untuk pekali, tetapi pemasangan minimax disyorkan untuk meminimumkan ralat pada julat sasaran. Untuk ketepatan yang lebih tinggi di sekitar nilai hampir 1.0, mantissa-1.0 boleh digunakan sebagai input polinomial, menghapuskan keperluan untuk istilah tetap.
Tahap ketepatan yang diingini akan mempengaruhi pilihan pelaksanaan . Ketepatan yang lebih tinggi biasanya datang pada kos kelajuan kerana langkah pengiraan tambahan. Pustaka VCL Agner Fog menyediakan fungsi yang sangat tepat tetapi menggunakan teknik kompleks yang mungkin tidak penting untuk semua aplikasi.
Fungsi log2 VCL melibatkan langkah berikut:
Untuk meningkatkan ketepatan:
Untuk mengoptimumkan kelajuan:
Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan log2(__m256d) dengan Cekap dalam AVX2 tanpa Ketergantungan Pengkompil Intel?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!