Rumah > pembangunan bahagian belakang > C++ > Mengapa Pesanan Gelung Penting untuk Pemprosesan Cekap bagi Matriks 8192x8192?

Mengapa Pesanan Gelung Penting untuk Pemprosesan Cekap bagi Matriks 8192x8192?

DDD
Lepaskan: 2024-12-06 16:03:16
asal
224 orang telah melayarinya

Why is Loop Order Crucial for Efficient Processing of an 8192x8192 Matrix?

Gelung Lambat Lebih 8192 Elemen: Memahami Penalti Prestasi

Kod yang disediakan memproses matriks, img, dengan mengira purata sembilan sel sekeliling untuk setiap elemen bukan sempadan dan menyimpan hasilnya dalam res matriks. Apabila saiz matriks ialah 8192x8192, program ini menunjukkan penurunan prestasi yang ketara.

Perlambatan ini dikaitkan dengan isu pengurusan memori yang berkaitan dengan penjajaran super. Pengkompil menjajarkan struktur data dalam ingatan untuk meningkatkan prestasi, dan dalam kes ini, reka letak matriks boleh menyebabkan capaian memori tidak cekap.

Untuk menyelesaikan isu ini, susunan gelung dalam operasi purata harus ditukar ganti. Daripada melelakan mengikut lajur, gelung harus melelang mengikut baris.

Berikut ialah kod yang diubah suai:

for(j=1;j<SIZE-1;j++) {
    for(i=1;i<SIZE-1;i++) {
        res[j][i]=0;
        res[j][i] += img[j-1][i-1];
        res[j][i] += img[j  ][i-1];
        res[j][i] += img[j+1][i-1];
        res[j][i] += img[j-1][i  ];
        res[j][i] += img[j  ][i  ];
        res[j][i] += img[j+1][i  ];
        res[j][i] += img[j-1][i+1];
        res[j][i] += img[j  ][i+1];
        res[j][i] += img[j+1][i+1];
        res[j][i] /= 9;
    }
}
Salin selepas log masuk

Dengan menukar susunan gelung, memori berjujukan akses dikekalkan, menghapuskan penalti prestasi yang dikaitkan dengan akses tidak berurutan.

Prestasi Perbandingan:

Struktur gelung yang saling bertukar meningkatkan prestasi dengan ketara:

Kod Asal:

  • 8191: 1.499 saat
  • 8192: 2.122 saat
  • 8193: 1.582 saat

Gelung Bertukar:

  • 8191: 0.376 saat
  • 0.357 saat
  • 8193: 0.351 saat
Pengubahsuaian ini memastikan pengurusan memori yang cekap dan menyelesaikan prestasi perlahan apabila menggelungkan lebih 8192 elemen.

Atas ialah kandungan terperinci Mengapa Pesanan Gelung Penting untuk Pemprosesan Cekap bagi Matriks 8192x8192?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan