Temui Ian Buck dari Nvidia
Terima kasih kerana meluangkan masa untuk bersembang hari ini. Mari kita mulakan dengan beberapa asas. Mengapa anda tidak memberitahu pembaca kami sedikit tentang diri anda dan perkara yang anda lakukan pada masa ini di Nvidia?
Saya Pengarah Perisian untuk Pengkomputeran GPU di Nvidia. Fokus utama saya ialah untuk membina dan mengembangkan platform pengkomputeran GPU yang lengkap, yang merangkumi perisian sistem, alatan pembangun, bahasa dan arahan pengkompil, perpustakaan serta aplikasi dan algoritma yang disasarkan. Dengan bantuan pasukan yang hebat, kami membangunkan kedua-dua perisian pengguna akhir serta menetapkan hala tuju untuk pengkomputeran GPU dalam Nvidia.
Kenapa kita tidak mulakan dari awal? Saya bayangkan bahawa minat anda terhadap GPGPU tidak bermula semasa anda berumur 5 tahun–apakah peristiwa yang berlaku di Princeton atau Stanford yang benar-benar membawa anda menemui minat dalam GPGPU?
Saya telah mencuba pengkomputeran GPU pada zaman Princeton saya, bereksperimen dengan perolakan terma dan simulasi bendalir pada perkakasan grafik, yang pada masa itu ialah SGI O2. Walaupun keadaan sangat terhad, sukar untuk membuat kes untuknya.
Saya serius mula melihat pengkomputeran GPU semasa penyelidikan PhD saya di Stanford. Di Stanford, saya, bersama yang lain dalam komuniti penyelidikan menyedari bahawa perkembangan semula jadi grafik boleh atur cara ialah evolusi GPU menjadi pemproses tujuan yang lebih umum. Kami menulis salah satu kertas SIGGRAPH pertama tentang pengesanan sinar dengan perkakasan GPU kelas DX9 untuk membantu membuktikan perkara itu. Apa yang sangat memotivasikan kerja itu ialah pemproses komoditi ini, yang tersedia dalam PC semua orang, mengikuti kadar pertumbuhan prestasi yang dicubitkan undang-undang Moore, jauh lebih cepat daripada CPU. Ini menimbulkan persoalan: apakah yang boleh dilakukan oleh PC jika ia mempunyai beberapa pesanan magnitud lebih kuasa kuda pengkomputeran daripada hari ini? Pengubah permainan total untuk sains pengiraan serta penglihatan komputer, AI, perlombongan data dan grafik.
Apakah peranan anda dengan Brook?
Selepas mengusahakan keupayaan untuk mengesan sinar pada GPU, tumpuan penyelidikan saya di Stanford beralih kepada memahami model pengaturcaraan yang betul untuk pengkomputeran GPU. Pada masa itu, ramai yang lain telah menunjukkan bahawa GPU bagus dalam pelbagai aplikasi yang berbeza, tetapi tidak ada rangka kerja atau model pengaturcaraan yang baik tentang cara seseorang itu harus memikirkan GPU sebagai peranti pengiraan. Pada masa itu, ia memerlukan PhD dalam grafik komputer untuk dapat memindahkan aplikasi ke GPU. Jadi saya memulakan projek Brook dengan matlamat untuk mentakrifkan bahasa pengaturcaraan untuk pengkomputeran GPU, yang mengabstraksikan isme grafik GPU ke dalam konsep pengaturcaraan yang lebih umum. Konsep pengaturcaraan asas Brook ialah “strim”, yang merupakan koleksi elemen data yang memerlukan kerja yang serupa. Brook akhirnya menjadi tesis PhD saya di Stanford.
Kerja anda bermula dengan Merrimac, Stanford Streaming Super Computer. Bagaimanakah ini berbeza daripada sesuatu seperti Tesla?
Konsep model pengaturcaraan Brook boleh digunakan untuk lebih daripada sekadar GPU. Di Stanford kami mengusahakan dua pelaksanaan berbeza model pengaturcaraan Brook: satu untuk GPU, satu lagi untuk Merrimac yang merupakan seni bina penyelidikan yang dibangunkan di Stanford. Banyak idea yang dipelopori sebagai sebahagian daripada Merrimac telah mempengaruhi cara GPU boleh dipertingkatkan untuk pengkomputeran tujuan umum. Perlu juga diperhatikan bahawa Bill Dally yang merupakan penyiasat utama Merrimac di Stanford, kini merupakan Ketua Saintis di Nvidia.
Adakah CUDA mempunyai akar dalam Gelato? Apakah penerokaan akademik pertama GPGPU? Bagaimana dengan penggunaan komersial pertama?
Saya memulakan CUDA semasa menyelesaikan penyelidikan saya di Stanford. Nvidia sudah pun sangat menyokong penyelidikan saya dan jelas melihat potensi untuk membolehkan pengkomputeran GPU dengan lebih baik pada bahagian perkakasan. Saya menyertai Nvidia untuk memulakan projek CUDA pada tahun 2005. Pada masa itu, ia hanya saya dan seorang jurutera lain. Kami kini telah mengembangkan projek itu ke dalam organisasi seperti sekarang, dan komponen utama kepada GPU Nvidia hari ini.
www.gpgpu.org menyediakan sejarah pengkomputeran GPU yang bagus, sejak tahun 2002.
Pada masa ini, AMD menolak Brook sebagai bahasa pengaturcaraan pilihan untuk GPGPU, manakala Nvidia mempunyai C dengan sambungan CUDA. Bagaimanakah anda membandingkan kekuatan/kelemahan kedua-duanya?
Bermula di Nvidia, kami mempunyai peluang untuk menyemak semula beberapa keputusan reka bentuk asas Brook, yang sebahagian besarnya berdasarkan perkara yang boleh dicapai oleh perkakasan kelas DX9. Salah satu batasan utama ialah kekangan model memori, yang memerlukan pengaturcara untuk memetakan algoritma mereka di sekitar corak capaian memori yang agak terhad. Dengan C kami dengan sambungan CUDA, kami melonggarkan kekangan tersebut. Pada asasnya, pengaturcara hanya diberi sekumpulan besar benang dan boleh mengakses memori dengan cara yang dia mahu. Peningkatan ini, serta beberapa yang lain, membolehkan kami melaksanakan semantik bahasa C penuh pada GPU.