Prestasi Unggul BLAS dalam Pendaraban Matriks
Anda telah menyaksikan perbezaan yang ketara dalam prestasi fungsi pendaraban matriks anda sendiri berbanding dengan BLAS. Ini menimbulkan dua soalan:
1. Bagaimanakah BLAS mencapai prestasi melampau?
BLAS dibahagikan kepada tiga peringkat berdasarkan kerumitan dan teknik pengoptimuman:
2. Mengapakah pelaksanaan anda lebih perlahan?
Pelaksanaan anda tidak mempunyai pengoptimuman cache yang digunakan oleh BLAS. Operasi O(N^3) dalam pendaraban matriks-matriks menghasilkan pergerakan data yang ketara antara memori dan cache. Dengan melaksanakan algoritma khusus yang meminimumkan konflik cache, BLAS mempercepatkan proses ini dengan ketara.
Walaupun penyusun moden membantu mengoptimumkan kod, mereka tidak dapat mengimbangi sepenuhnya teknik khusus yang digunakan dalam pelaksanaan BLAS seperti ATLAS, GotoBLAS dan OpenBLAS.
Algoritma yang Digunakan oleh BLAS
BLAS tidak menggunakan algoritma kompleks seperti Coppersmith–Winograd atau Strassen disebabkan oleh:
Atas ialah kandungan terperinci Mengapa BLAS jauh lebih pantas daripada pelaksanaan pendaraban matriks saya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!