CUDA là từ viết tắt trong tiếng Anh của thuật ngữ Compute Unified Device Architecture, tạm dịch là kiến trúc thiết bị hợp nhất cho tính toán. CUDA bắt đầu cuộc sống của mình từ tháng Bảy năm 2007 với vai trò ban đầu là một bộ công cụ phát triển phần mềm dựa trên ngôn ngữ lập trình C, và giờ đây ở năm 2010, sau hơn hai năm rưỡi phát triển, CUDA đang tiến hóa thành kiến trúc điện toán GPU, hay còn gọi là GPGPU, của NVIDIA. CUDA có mặt trên hầu hết các GPU đời mới của NVIDIA, từ dòng GeForce giành cho giải trí, đến Quadro giành cho điện toán hình ảnh chuyên nghiệp, và mới nhất là dòng Tesla cho tính toán hiệu năng cao.
CUDA trên các GPU đời mới của NVIDIA
Danh sách các GPU chạy được CUDA có thể tìm thấy ở trang sau đây: http://www.nvidia.com/object/cuda_got_cuda.html
Các GPU của NVIDIA được trang bị kiến trúc tính toán song song CUDA, bao gồm cả trình điều khiển thiết bị CUDA vốn được nhúng bên trong trình điều khiển thiết bị đồ họa do NVIDIA cung cấp.
Điện toán GPU được tăng cường bởi kiến trúc CUDA
Trình điều khiển thiết bị CUDA này giữ nhiệm vụ chuyển đổi mã PTX (viết tắt của thuật ngữ Parallel Thread Execution, tạm dịch là mã thực thi tiểu trình song song) được sinh ra bởi các trình biên dịch của từng ngôn ngữ lập trình – ví dụ như C/C++, Fortran, Java, Python, v.v… – sang dạng mã máy thật sự của GPU được dùng để thực thi ứng dụng. Nhờ cách tiếp cận thống nhất này cho mọi ngôn ngữ lập trình mà các nhà phát triển phần mềm chỉ cần sử dụng ngôn ngữ lập trình quen thuộc với mình để tạo ra các ứng dụng mới chạy được trên GPU. Lớp thứ hai kể từ dưới lên trong hình 2 cho chúng ta thấy một số ngôn ngữ lập trình như C/C++, Fortran, Java, Python, … và giao diện lập trình như OpenCL, Direct Compute, .NET, … mà hiện tại lập trình viên có thể dùng để tạo ra một làn sóng mới những phần mềm tuyệt vời.
Lớp thấp nhất chúng ta sẽ có kiến trúc CUDA. Ngay phía trên nó là môi trường phát triển phần mềm nhất thiết phải có, bao gồm ngôn ngữ lập trình, giao diện ứng dụng lập trình thiết bị, trình biên dịch, bộ gỡ rối, bộ đo đạc hiệu năng, v.v… Với môi trường cơ bản này, từ quan điểm của một nhà phát triển phần mềm thông thường, vẫn còn rất nhiều khó khăn trong việc nhanh chóng tạo ra những ứng dụng hữu ích, và do vậy trên lớp này chúng ta có ngay lớp các thư viện nền tảng, với các đoạn mã chương trình cơ bản, hữu dụng, phổ biến, và có thể dùng lại ngay trong phần mềm của riêng nhà phát triển. Dựa trên lớp thư viện này, NVIDIA và nhiều đối tác của mình đã và đang tiếp tục cung cấp cho cộng đồng phát triển phần mềm vô số middleware, module, và plug-in, ví dụ như các engine tăng tốc ứng dụng hết sức lý thú gọi là AXE cho môi trường điện toán hình ảnh chuyên nghiệp.
Mô hình phần mềm hỗ trợ phát triển ứng dụng điện toán GPU dựa trên CUDA
Bài liên quan:
– CUDA cho nghành công nghiệp Game
– CUDA cho các ứng dụng video số