CUDA Academy · Pelajaran

Mengalirkan Tile untuk Gambar Besar

Menjalankan I/O dan komputasi secara tumpang tindih

Pelajaran 3 dari 413 langkah

Mengalirkan Tile untuk Gambar Besar adalah pelajaran CUDA Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar CUDA Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus CUDA Academy mencakup 4 pelajaran total.

Saat Citra Terlalu Besar

Citra yang sangat besar mungkin tidak muat di memori GPU, atau penyalinan seluruh citra dapat menghentikan alur pemrosesan. Solusinya adalah membaginya menjadi ubin dan memprosesnya secara bergantian. 🖼️

Potong Menjadi Bagian-Bagian

Potong citra menjadi pita baris atau ubin berbentuk persegi panjang. Setiap ubin cukup kecil untuk diunggah, diproses, dan diunduh tanpa membebani memori perangkat.

Tiga Langkah untuk Setiap Ubin

Setiap ubin mengikuti urutan yang sama: salin ke perangkat, jalankan kernel, lalu salin hasilnya kembali. Ulangi hingga seluruh citra selesai diproses.

Ubin Berurutan Membuang Waktu

Jika dikerjakan satu per satu, GPU menganggur selama setiap penyalinan. Untuk memperoleh manfaatnya, Anda harus menindih transfer satu ubin dengan perhitungan ubin lainnya.

Aliran Memungkinkan Penindihan

Masukkan pekerjaan setiap ubin ke dalam alirannya sendiri. Dengan demikian, pengandar dapat menjalankan kernel satu ubin sementara penyalinan ubin lain masih berlangsung.

cudaStream_t s;
cudaStreamCreate(&s);

Penyalinan Asinkron Diperlukan

cudaMemcpy biasa memblokir host dan menghilangkan penindihan. Gunakan cudaMemcpyAsync pada sebuah aliran agar penyalinan masuk antrean tanpa menghentikan semuanya.

cudaMemcpyAsync(d_tile, h_tile, bytes, cudaMemcpyHostToDevice, s);

Kunci Buffer Host

Transfer asinkron memerlukan memori host yang terkunci agar dapat menggunakan DMA. Alokasikan buffer penampungan ubin dengan cudaMallocHost, atau penindihan akan diam-diam beralih ke operasi pemblokiran.

cudaMallocHost(&h_tile, bytes);

Gunakan Dua Buffer untuk Alur Pemrosesan

Sediakan dua buffer ubin dan gunakan aliran secara bergantian. Saat ubin N dihitung, ubin N+1 diunggah, sehingga transfer tersembunyi di balik pekerjaan dalam alur pemrosesan yang lancar.

Piksel Halo di Tepi Ubin

Pengaburan di dekat batas ubin memerlukan piksel dari ubin tetangga. Sertakan margin tumpang tindih berupa halo agar hasil di tepi tetap benar.

Sinkronkan Sebelum Menyimpan

Pekerjaan asinkron belum selesai saat pemanggilan mengembalikan hasil. Panggil cudaStreamSynchronize pada setiap aliran sebelum membaca kembali hasil ubin di host.

cudaStreamSynchronize(s);

Citra Besar, GPU Tetap Stabil

Dengan ubin yang dialirkan dan menggunakan dua buffer, GPU tetap memperoleh pekerjaan berapa pun ukuran citranya. Transfer menghilang di balik perhitungan dan laju pemrosesan tetap tinggi. ⚡

Pemeriksaan Cepat

Anda mengalirkan ubin melalui aliran yang terpisah, tetapi tidak melihat adanya penindihan. Kesalahan apa yang paling mungkin terjadi?

Rangkuman

Anda telah membagi citra besar menjadi ubin, menggunakan aliran dengan penyalinan asinkron dan memori terkunci untuk melakukan penindihan, menggunakan dua buffer pada alur pemrosesan, serta menambahkan halo agar tepi tetap benar. 🎯

Gratis untuk memulai

Belajar C++ dengan tutor AI — gratis

Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.

Kursus
30
Pelajaran
120

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Mengalirkan Tile untuk Gambar Besar” gratis?

Ya — teks lengkap “Mengalirkan Tile untuk Gambar Besar” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus CUDA Academy, upgrade ke CoddyKit PRO. Kursus CUDA Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Mengalirkan Tile untuk Gambar Besar”?

Menjalankan I/O dan komputasi secara tumpang tindih Kamu berlatih CUDA Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai CUDA Academy?

Tidak diperlukan pengalaman sebelumnya. CUDA Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “Mengalirkan Tile untuk Gambar Besar” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran CUDA Academy ini?

Ya. Setiap pelajaran CUDA Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Merancang Alur Pemrosesan
  2. Menggabungkan Filter ke dalam Satu Kernel
  3. Mengalirkan Tile untuk Gambar Besar
  4. Membuat Profil, Mengoptimalkan, Mengirimkan
← Kembali ke CUDA Academy