


Bolehkah Arahan SIMD pada CPU Intel Meningkatkan Prestasi Algoritma Jumlah Awalan dengan ketara?
Jumlah Awalan SIMD pada Pemproses Intel
Pengenalan
Algoritma jumlah awalan mencari jumlah terkumpul daripada tatasusunan yang diberikan. Operasi ini dihadapi dalam pelbagai masalah pengiraan dan memerlukan prestasi tinggi untuk pemprosesan yang cekap. Dalam artikel ini, kami membincangkan sama ada arahan SIMD pada CPU Intel boleh meningkatkan prestasi algoritma jumlah awalan.
Jumlah Awalan Selari dengan SIMD
Satu algoritma jumlah awalan selari melibatkan melakukan operasi dalam dua hantaran. Dalam hantaran pertama, jumlah separa dikira secara selari, diikuti dengan pengumpulan jumlah keseluruhan bagi setiap jumlah separa. Hantaran kedua menambah jumlah keseluruhan jumlah separa kepada yang seterusnya. Menggunakan berbilang benang melalui OpenMP untuk selari dan arahan SIMD untuk hantaran kedua boleh meningkatkan kecekapan.
Kod untuk Jumlah Awalan SIMD
Berikut ialah contoh kod untuk di atas algoritma:
__m128 scan_SSE(__m128 x) { x = _mm_add_ps(x, _mm_castsi128_ps(_mm_slli_si128(_mm_castps_si128(x), 4))); x = _mm_add_ps(x, _mm_shuffle_ps(_mm_setzero_ps(), x, 0x40)); return x; } void pass1_SSE(float *a, float *s, const int n) { __m128 offset = _mm_setzero_ps(); #pragma omp for schedule(static) nowait for (int i = 0; i < n / 4; i++) { __m128 x = _mm_load_ps(&a[4 * i]); __m128 out = scan_SSE(x); out = _mm_add_ps(out, offset); _mm_store_ps(&s[4 * i], out); offset = _mm_shuffle_ps(out, out, _MM_SHUFFLE(3, 3, 3, 3)); } float tmp[4]; _mm_store_ps(tmp, offset); return tmp[3]; } void pass2_SSE(float *s, __m128 offset, const int n) { #pragma omp for schedule(static) for (int i = 0; i<n/4; i++) { __m128 tmp1 = _mm_load_ps(&s[4 * i]); tmp1 = _mm_add_ps(tmp1, offset); _mm_store_ps(&s[4 * i], tmp1); } }
Perbincangan
Pengoptimuman ini membolehkan peningkatan prestasi yang ketara untuk operasi jumlah awalan pada tatasusunan besar. Menggunakan SIMD untuk kedua-dua pas meningkatkan lagi kecekapan, mengurangkan masa pengiraan. Kod yang disediakan menggunakan SIMD untuk hantaran kedua dan mencapai peningkatan prestasi kira-kira 7x pada sistem empat teras.
Atas ialah kandungan terperinci Bolehkah Arahan SIMD pada CPU Intel Meningkatkan Prestasi Algoritma Jumlah Awalan dengan ketara?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Apakah jenis nilai yang dikembalikan oleh fungsi bahasa C? Apa yang menentukan nilai pulangan?

Gulc: Perpustakaan C dibina dari awal

Langkah Format Fungsi Fungsi C Langkah Penukaran Kes

Apakah definisi dan peraturan panggilan fungsi bahasa C dan apakah itu

Di manakah nilai pulangan fungsi bahasa C yang disimpan dalam ingatan?

Penggunaan dan perkongsian frasa yang berbeza

Bagaimanakah saya menggunakan algoritma dari STL (jenis, mencari, mengubah, dll) dengan cekap?

Bagaimana Perpustakaan Templat St Standard (STL) berfungsi?
