Tujuan dari skrip spiral adalah untuk membuat gambar yang dihasilkan komputer. Gambar memetakan GPU dengan dukungan CUDA.
Berikut ini adalah contoh gambar yang dibuat dengan skrip Python. Detail konfigurasi mereka dapat ditemukan di folder contoh dengan contoh lain.
Untuk menjalankan skrip Python, dependensi berikut perlu diinstal:
Ketika berlari secara berurutan pada Intel I7-9700K, setiap gambar membutuhkan sekitar 23.5877081 detik.
Langkah pertama untuk mengoptimalkan algoritma CGI adalah merekonstruksi algoritma untuk penggunaan paralel pada GPU. Ini dilakukan dengan menggunakan dekorator @cuda.jit , yang membutuhkan doa kernel. Sebelum algoritma dijalankan, kode menentukan cara memetakan array piksel ke perangkat keras GPU. Dalam algoritma, loop untuk menghitung setiap piksel diganti dengan i, j = cuda.grid(2) . Jika i dan j berada dalam batas gambar, fungsi menghitung warna piksel indeks. Tidak ada loop. Speedup paralelisasi adalah sekitar 1.072, memakan waktu sekitar 22,1124 milidetik.
Menurut nvprof CLI Tool (di Optimizations.txt), [CUDA memcpy HtoD] menyumbang sekitar 36.09% dari eksekusi. Untuk memotong ini, array piksel dapat dibuat dan diinisialisasi pada perangkat tanpa pernah ditambahkan dalam memori sisi CPU. numba.cuda menyediakan fungsi device_array untuk melakukannya. Percepat meminimalkan transfer host-ke-perangkat adalah sekitar 1,38, memakan waktu sekitar 15,9563 milidetik.
Optimalisasi berikutnya menggunakan memori bersama, memori yang dibagikan oleh blok utas. Karena memori spesifik blok, kecepatan baca dan tulis lebih cepat. Oleh karena itu, operasi akses memori dapat dihitung pada memori bersama. Operasi berikut, satu akses lambat ke array Pixel global menyelesaikan perhitungan paralel. Percepat penggunaan memori bersama adalah sekitar 1,068, memakan waktu sekitar 14,9425 milidetik.
Total speedup dari algoritma CPU ke algoritma GPU yang dioptimalkan adalah sekitar 1.578.