Temui Ian Buck dari Nvidia
Terima kasih telah meluangkan waktu untuk mengobrol hari ini. Mari kita mulai dengan beberapa dasar. Mengapa Anda tidak memberi tahu pembaca kami sedikit tentang diri Anda dan apa yang Anda lakukan saat ini di Nvidia?
Saya Direktur Perangkat Lunak untuk Komputasi GPU di Nvidia. Fokus utama saya adalah membangun dan mengembangkan platform komputasi GPU yang lengkap, yang mencakup perangkat lunak sistem, alat pengembang, arah bahasa dan kompiler, perpustakaan, serta aplikasi dan algoritme yang ditargetkan. Dengan bantuan tim yang hebat, kami mengembangkan perangkat lunak pengguna akhir serta menetapkan arah untuk komputasi GPU dalam Nvidia.
Kenapa tidak kita mulai dari awal? Saya membayangkan bahwa minat Anda pada GPGPU tidak dimulai ketika Anda berusia 5 tahun–apa peristiwa yang terjadi di Princeton atau Stanford yang benar-benar membuat Anda menemukan minat pada GPGPU?
Saya mencoba-coba komputasi GPU di masa Princeton saya, bereksperimen dengan konveksi termal dan simulasi fluida pada perangkat keras grafis, yang pada saat itu adalah SGI O2. Meskipun segala sesuatunya sangat dibatasi, sulit untuk membuat alasan untuk itu.
Saya serius mulai melihat komputasi GPU selama penelitian PhD saya di Stanford. Di Stanford, saya, bersama dengan orang lain dalam komunitas riset, menyadari bahwa perkembangan alami dari grafik yang dapat diprogram adalah evolusi GPU menjadi prosesor tujuan yang lebih umum. Kami menulis salah satu makalah SIGGRAPH pertama tentang ray tracing dengan perangkat keras GPU kelas DX9 untuk membantu membuktikan maksudnya. Apa yang sangat memotivasi tentang pekerjaan ini adalah bahwa prosesor komoditas ini, yang tersedia di PC semua orang, mengikuti tingkat pertumbuhan kinerja potong dadu hukum Moore, jauh lebih cepat daripada CPU. Ini menimbulkan pertanyaan: apa yang bisa dilakukan PC jika memiliki beberapa kali lipat lebih banyak tenaga komputasi daripada hari ini? Pengubah permainan total untuk ilmu komputasi serta visi komputer, AI, penambangan data, dan grafik.
Apa peran Anda dengan Brook?
Setelah bekerja pada kemampuan ray trace pada GPU, fokus penelitian saya di Stanford beralih ke pemahaman model pemrograman yang tepat untuk komputasi GPU. Pada saat itu, banyak orang lain telah menunjukkan bahwa GPU bagus dalam berbagai aplikasi yang berbeda, tetapi tidak ada kerangka kerja atau model pemrograman yang baik tentang bagaimana seseorang harus memikirkan GPU sebagai perangkat komputasi. Pada saat itu, diperlukan gelar PhD dalam grafik komputer untuk dapat mem-porting aplikasi ke GPU. Jadi saya memulai proyek Brook dengan tujuan mendefinisikan bahasa pemrograman untuk komputasi GPU, yang mengabstraksikan grafik-isme GPU menjadi konsep pemrograman yang lebih umum. Konsep dasar pemrograman Brook adalah “aliran”, yang merupakan kumpulan elemen data yang membutuhkan pekerjaan serupa. Brook akhirnya menjadi tesis PhD saya di Stanford.
Pekerjaan Anda dimulai dengan Merrimac, Komputer Super Streaming Stanford. Bagaimana ini berbeda dari sesuatu seperti Tesla?
Konsep model pemrograman Brook dapat diterapkan ke lebih dari sekadar GPU. Di Stanford kami mengerjakan dua implementasi berbeda dari model pemrograman Brook: satu untuk GPU, yang lain untuk Merrimac yang merupakan arsitektur penelitian yang dikembangkan di Stanford. Banyak ide yang dirintis sebagai bagian dari Merrimac memang memengaruhi bagaimana GPU dapat ditingkatkan untuk komputasi tujuan umum. Perlu juga dicatat bahwa Bill Dally yang merupakan peneliti utama Merrimac di Stanford, sekarang menjadi Kepala Ilmuwan di Nvidia.
Apakah CUDA memiliki akar di Gelato? Apa eksplorasi akademik pertama GPGPU? Bagaimana dengan penggunaan komersial pertama?
Saya memulai CUDA saat menyelesaikan penelitian saya di Stanford. Nvidia sudah sangat mendukung penelitian saya dan dengan jelas melihat potensi untuk mengaktifkan komputasi GPU dengan lebih baik di sisi perangkat keras. Saya bergabung dengan Nvidia untuk memulai proyek CUDA pada tahun 2005. Saat itu, hanya saya sendiri dan seorang insinyur lainnya. Kami sekarang telah mengembangkan proyek menjadi organisasi seperti sekarang ini, dan komponen utama untuk GPU Nvidia hari ini.
www.gpgpu.org menyediakan sejarah komputasi GPU yang bagus, sejak tahun 2002.
Saat ini, AMD mendorong Brook sebagai bahasa pemrograman pilihan untuk GPGPU, sedangkan Nvidia memiliki C dengan ekstensi CUDA. Bagaimana Anda membandingkan kekuatan/kelemahan keduanya?
Mulai dari Nvidia, kami memiliki kesempatan untuk meninjau kembali beberapa keputusan desain dasar Brook, yang sebagian besar didasarkan pada apa yang dapat dicapai oleh perangkat keras kelas DX9. Salah satu batasan utama adalah batasan model memori, yang mengharuskan pemrogram untuk memetakan algoritme mereka di sekitar pola akses memori yang cukup terbatas. Dengan ekstensi C dengan CUDA kami, kami melonggarkan kendala tersebut. Pada dasarnya, programmer hanya diberi kumpulan besar utas dan dapat mengakses memori dengan cara apa pun yang dia inginkan. Peningkatan ini, serta beberapa lainnya, memungkinkan kami untuk mengimplementasikan semantik bahasa C penuh pada GPU.