0Pricing
CUDA Academy · Pelajaran

Pemuatan Tervektorisasi dengan float4

Transaksi yang lebih lebar untuk bandwidth yang lebih besar

Pemuatan Tervektorisasi dengan float4 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.

Pindahkan Lebih Banyak per Instruksi

Pemuatan biasa mengambil satu nilai setiap kali. vectorized load mengambil beberapa nilai yang bersebelahan dalam satu instruksi yang lebih lebar, sehingga lebih banyak pekerjaan dilakukan per permintaan.

Mengenal float4

CUDA menyediakan tipe vektor bawaan. float4 mengemas empat float menjadi satu paket 16 byte yang dapat Anda muat atau simpan bersama-sama.

float4 v = make_float4(1, 2, 3, 4);
float first = v.x; // also .y .z .w

Satu Pemuatan, Empat Float

Membaca float4 dari memori mengambil empat float dalam satu transaksi. Hal ini mengurangi jumlah memory instructions yang harus diterbitkan thread sebanyak empat kali.

float4 a = reinterpret_cast<float4*>(in)[i];

Tafsirkan Ulang Pointer

Untuk menggunakan pemuatan vektor pada larik float biasa, Anda perlu melakukan cast pada pointer. reinterpret_cast memungkinkan Anda membaca byte yang sama sebagai elemen float4.

float4* in4 = reinterpret_cast<float4*>(in);
float4 chunk = in4[idx];

Penyelarasan Diperlukan

float4 harus berada pada batas 16 byte. Jika data tidak aligned dengan benar, pemuatan tersebut ilegal dan kernel Anda dapat mengalami kerusakan atau membaca data sampah.

cudaMalloc Menyelaraskan untuk Anda

Kabar baik: buffer dari cudaMalloc diselaraskan setidaknya hingga 256 byte. Jadi, larik perangkat yang baru dialokasikan aman dibaca sebagai float4 sejak awal.

Lebih Sedikit Permintaan, Lebih Banyak Bandwidth

Pemuatan yang lebih lebar berarti lebih sedikit permintaan tertunda untuk data yang sama. Hal ini dapat meningkatkan bandwidth yang dicapai ketika kernel dibatasi oleh memori, bukan matematika.

Indekskan dengan Vektor, Bukan Float

Dengan float4, setiap thread kini mencakup empat elemen. index global Anda melangkah melalui slot float4, sehingga jumlah thread total berkurang empat kali.

int i = blockIdx.x * blockDim.x + threadIdx.x;
float4 d = in4[i]; // covers 4 floats

Lebar Vektor Lainnya

float4 bukan satu-satunya pilihan. Tipe seperti float2 dan int4 memberi Anda pemuatan berukuran 8 atau 16 byte, sehingga Anda dapat memilih lebar yang sesuai dengan data Anda.

Tangani Sisa Elemen

Jika panjang array bukan kelipatan empat, tangani elemen sisa dengan perulangan skalar biasa setelah bagian yang divektorisasi.

Register yang Digunakan Bertambah

float4 menampung empat nilai, sehingga menggunakan lebih banyak register per utas. Seperti biasa, pastikan peningkatan bandwidth lebih besar daripada penurunan okupansi.

Pemeriksaan Cepat

Anda menafsirkan ulang array float sebagai float4, tetapi kernel mengalami kerusakan. Mengapa?

Ringkasan: Lebih Lebar Lebih Cepat

Anda telah mempelajari bahwa pemuatan float4 memuat empat float sekaligus, sehingga mengurangi instruksi dan meningkatkan bandwidth. Pastikan data tetap selaras dan tangani elemen yang tersisa. 📦

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Pemuatan Tervektorisasi dengan float4” gratis?

Ya — teks lengkap “Pemuatan Tervektorisasi dengan float4” 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 “Pemuatan Tervektorisasi dengan float4”?

Transaksi yang lebih lebar untuk bandwidth yang lebih besar 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 “Pemuatan Tervektorisasi dengan float4” 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. Paralelisme Tingkat Instruksi
  2. Uraikan Perulangan dengan #pragma unroll
  3. Pemuatan Tervektorisasi dengan float4
  4. Tekanan Register dan Spill
← Kembali ke CUDA Academy