Gặp Ian Buck của Nvidia
Cảm ơn vì đã dành thời gian trò chuyện ngày hôm nay. Hãy bắt đầu với một số điều cơ bản. Tại sao bạn không cho độc giả của chúng tôi biết một chút về bản thân và những gì bạn hiện đang làm tại Nvidia?
Tôi là Giám đốc phần mềm về Máy tính GPU tại Nvidia. Trọng tâm chính của tôi là xây dựng và phát triển một nền tảng tính toán GPU hoàn chỉnh, bao gồm phần mềm hệ thống, công cụ dành cho nhà phát triển, hướng ngôn ngữ và trình biên dịch, thư viện cũng như các ứng dụng và thuật toán được nhắm mục tiêu. Với sự giúp đỡ của một đội ngũ tuyệt vời, chúng tôi phát triển cả phần mềm dành cho người dùng cuối cũng như định hướng cho tính toán GPU trong Nvidia.
Tại sao chúng ta không bắt đầu lại từ đầu? Tôi tưởng tượng rằng mối quan tâm của bạn đến GPGPU không bắt đầu khi bạn 5 tuổi – những sự kiện nào đang diễn ra tại Princeton hoặc Stanford đã thực sự khiến bạn phát hiện ra sự quan tâm đến GPGPU?
Những ngày còn ở Princeton, tôi đã thử nghiệm tính toán GPU, thử nghiệm đối lưu nhiệt và mô phỏng chất lỏng trên phần cứng đồ họa, vào thời điểm đó là SGI O2. Mặc dù mọi thứ rất hạn chế, nhưng rất khó để tạo ra một trường hợp cho nó.
Tôi nghiêm túc bắt đầu xem xét tính toán GPU trong quá trình nghiên cứu Tiến sĩ của tôi tại Stanford. Tại Stanford, tôi cùng với những người khác trong cộng đồng nghiên cứu nhận ra rằng sự phát triển tự nhiên của đồ họa lập trình được là sự phát triển của GPU thành một bộ xử lý đa năng hơn. Chúng tôi đã viết một trong những bài báo SIGGRAPH đầu tiên về dò tia bằng phần cứng GPU lớp DX9 để giúp chứng minh quan điểm. Điều gì thúc đẩy công việc này là bộ xử lý hàng hóa này, có sẵn trong PC của mọi người, đang tuân theo tốc độ tăng trưởng hiệu suất theo định luật Moore, nhanh hơn cả CPU. Điều này đặt ra câu hỏi: một chiếc PC có thể làm được gì nếu nó có nhiều đơn đặt hàng có cường độ điện toán lớn hơn ngày nay? Một công cụ thay đổi hoàn toàn trò chơi cho khoa học tính toán cũng như thị giác máy tính, AI, khai thác dữ liệu và đồ họa.
Vai trò của bạn với Brook là gì?
Sau khi nghiên cứu khả năng dò tia trên GPU, trọng tâm nghiên cứu của tôi tại Stanford chuyển sang tìm hiểu mô hình lập trình phù hợp cho điện toán GPU. Vào thời điểm đó, nhiều người khác đã chứng minh rằng GPU hoạt động tốt với nhiều ứng dụng khác nhau, nhưng không có khuôn khổ hoặc mô hình lập trình tốt về cách người ta nên nghĩ về GPU như một thiết bị máy tính. Vào thời điểm đó, yêu cầu phải có bằng tiến sĩ về đồ họa máy tính để có thể chuyển một ứng dụng sang GPU. Vì vậy, tôi bắt đầu dự án Brook với mục tiêu xác định một ngôn ngữ lập trình cho tính toán GPU, nó đã trừu tượng hóa các cấu trúc đồ họa của GPU thành các khái niệm lập trình tổng quát hơn. Khái niệm lập trình cơ bản của Brook là “luồng”, là tập hợp các phần tử dữ liệu yêu cầu công việc tương tự. Brook cuối cùng đã trở thành luận án Tiến sĩ của tôi tại Stanford.
Công việc của bạn bắt đầu với Merrimac, Siêu máy tính truyền trực tuyến Stanford. Điều này khác với một thứ như Tesla như thế nào?
Các khái niệm mô hình lập trình của Brook có thể áp dụng cho không chỉ GPU. Tại Stanford, chúng tôi đã làm việc trên hai cách triển khai khác nhau của mô hình lập trình Brook: một cho GPU, một cho Merrimac, một kiến trúc nghiên cứu được phát triển tại Stanford. Nhiều ý tưởng đi tiên phong như một phần của Merrimac đã ảnh hưởng đến cách GPU có thể được cải thiện cho mục đích điện toán chung. Cũng cần lưu ý rằng Bill Dally, người từng là nhà điều tra nguyên tắc của Merrimac tại Stanford, hiện là Nhà khoa học trưởng tại Nvidia.
CUDA có bắt nguồn từ Gelato không? Khám phá học thuật đầu tiên của GPGPU là gì? Điều gì về việc sử dụng thương mại hóa đầu tiên?
Tôi bắt đầu CUDA trong khi hoàn thành nghiên cứu của mình tại Stanford. Nvidia đã rất ủng hộ nghiên cứu của tôi và thấy rõ tiềm năng có thể kích hoạt tốt hơn tính toán GPU về mặt phần cứng của mọi thứ. Tôi gia nhập Nvidia để bắt đầu dự án CUDA vào năm 2005. Vào thời điểm đó, chỉ có tôi và một kỹ sư khác. Hiện chúng tôi đã phát triển dự án thành tổ chức như ngày nay và là thành phần trung tâm của GPU Nvidia ngày nay.
www.gpgpu.org cung cấp một lịch sử tốt đẹp của điện toán GPU, ra đời từ năm 2002.
Hiện tại, AMD đẩy Brook làm ngôn ngữ lập trình được lựa chọn cho GPGPU, trong khi Nvidia có C với phần mở rộng CUDA. Bạn sẽ so sánh điểm mạnh / điểm yếu của cả hai như thế nào?
Bắt đầu từ Nvidia, chúng tôi đã có cơ hội xem lại một số quyết định thiết kế cơ bản của Brook, phần lớn dựa trên những gì phần cứng lớp DX9 có thể đạt được. Một trong những hạn chế chính là các hạn chế của mô hình bộ nhớ, yêu cầu lập trình viên phải ánh xạ thuật toán của họ xung quanh một mô hình truy cập bộ nhớ khá hạn chế. Với phần mở rộng C với CUDA của chúng tôi, chúng tôi đã giảm bớt những hạn chế đó. Về cơ bản, lập trình viên chỉ đơn giản là được cung cấp một lượng lớn các luồng và có thể truy cập bộ nhớ theo bất kỳ cách nào họ muốn. Cải tiến này, cũng như một số cải tiến khác, cho phép chúng tôi triển khai ngữ nghĩa ngôn ngữ C đầy đủ trên GPU.