"Penggabungan" juga bisa merujuk pada penggabungan pola akses memori . Dalam penggunaan ini, penggabungan digunakan untuk memastikan bahwa utas berjalan secara bersamaan, cobalah untuk mengakses memori yang ada di dekatnya. Ini biasanya karena:
- Memori biasanya diambil dalam blok besar dari RAM.
- Beberapa unit pemrosesan akan mencoba untuk memprediksi akses memori dan cache yang akan datang, sementara masih memproses bagian memori yang lebih lama.
- Memori di-cache dalam hierarki cache yang lebih besar namun lebih lambat.
Oleh karena itu, membuat program yang dapat menggunakan pola memori yang dapat diprediksi sangat penting. Ini bahkan lebih penting dengan program berulir, sehingga permintaan memori tidak melompati semuanya; jika tidak, unit pemrosesan akan menunggu permintaan memori dipenuhi.
Diagram yang terinspirasi oleh Pengantar Pemrograman Paralel: Pelajaran 2 Perangkat Keras GPU dan Pola Komunikasi Paralel :
Bawah: Empat utas, dengan akses memori yang seragam. Kotak hitam putus-putus mewakili permintaan memori 4 kata tunggal.
Akses memori dekat, dan dapat diambil dalam satu go / blok (atau jumlah permintaan paling sedikit).
Namun, jika kita meningkatkan " langkah " akses antara utas, itu akan membutuhkan lebih banyak akses memori. Bawah: empat utas lagi, dengan dua langkah.
Di sini Anda dapat melihat bahwa 4 utas ini membutuhkan 2 permintaan blok memori. Semakin kecil langkah semakin baik. Semakin lebar langkahnya, semakin banyak permintaan yang berpotensi diperlukan.
Tentu saja, lebih buruk daripada langkah memori besar adalah pola akses memori acak. Ini hampir tidak mungkin untuk disalurkan, disimpan, atau diprediksi.
Sumber TikZ: