Memori manakah yang cocok untuk Kernel OpenCL ini?

Saya telah mencoba melakukan FFT di OpenCL. Ini berhasil bagi saya dengan Kernel seperti ini,

     __kernel void butterfly(__global float2* twid, __global float2* X,
                    const int n,}
     {

        /* Butterfly structure*/
     }

Saya menyebutnya Kernel ribuan kali. Jadi BACA/TULIS ke memori global memakan waktu terlalu lama. Array twid(float2) hanya dibaca, tidak pernah dimanipulasi dan array X adalah tipe array READ & WRITE.

1.Jenis memori manakah yang paling cocok untuk ini? 2. Jika saya menggunakan memori lokal, apakah saya dapat meneruskannya ke Kernel lain sebagai argumen tanpa menyalinnya ke memori global?

Saya seorang pemula di OpenCL.


person Karthik Hegde    schedule 24.03.2014    source sumber


Jawaban (2)


Memori lokal hanya dapat digunakan dalam kelompok kerja; itu tidak dapat dilihat oleh kelompok kerja lain dan tidak dapat digunakan oleh kernel lain. Hanya memori dan gambar global dan melakukan hal-hal itu.

Bayangkan memori lokal sebagai cache yang dikelola pengguna yang digunakan untuk mempercepat akses ganda ke memori global yang sama dalam kelompok kerja.

person Dithermaster    schedule 25.03.2014

Jika Anda melakukan FFT untuk blok kecil, Anda mungkin masuk ke dalam memori pribadi. Jika tidak, seperti kata Dithermaster, gunakan memori lokal.

Selain itu, saya telah menerapkan beberapa kernel FFT dan sangat menyarankan Anda untuk menghindari penggunaan skema kupu-kupu kecuali Anda 100% yakin akan hal itu. Skema sederhana (bahkan perkalian matriks) mungkin menunjukkan hasil yang lebih baik karena vektorisasi & pola akses memori yang baik. Skema kupu-kupu dioptimalkan untuk pemrosesan sekuensial. Pada GPU mungkin menunjukkan kinerja yang buruk.

person Roman Arzumanyan    schedule 25.03.2014
comment
Dengan kupu-kupu yang dioptimalkan, kinerja bahkan melampaui CUDAFFT! Ini berjalan lebih cepat dari OpenCL-PyFFT standar! - person Karthik Hegde; 25.03.2014
comment
Bukankah memori pribadi sama dengan memori konstan? - person Karthik Hegde; 25.03.2014