CUDA

Bách khoa toàn thư mở Wikipedia
Bước tới: menu, tìm kiếm
CUDA
Phát triển bởi Tập đoàn NVIDIA
Bản mới nhất 3.2
17 tháng 9, 2010
Hệ điều hành Windows 7, Windows Vista, Windows XP, Windows Server 2008, Windows Server 2003, Linux, Mac OS X
Thể loại GPGPU
Giấy phép Proprietary, Freeware
Website Nvidia's CUDA zone

CUDA (Compute Unified Device Architecture - Kiến trúc thiết bị tính toán hợp nhất) là một kiến trúc tính toán song song do NVIDIA phát triển. Nói một cách ngắn gọn, CUDA là động cơ tính toán trong các GPU (Graphics Processing Unit - Đơn vị xử lý đồ họa) của NVIDIA, nhưng lập trình viên có thể sử dụng nó thông qua các ngôn ngữ lập trình phổ biến. Lập trình viên dùng ngôn ngữ C for CUDA, dùng trình biên dịch PathScale Open64 C[1], để cài đặt các thuật toán chạy trên GPU. Kiến trúc CUDA hỗ trợ mọi chức năng tính toán thông qua ngôn ngữ C. Các bên thứ ba cũng đã phát triển để hỗ trợ CUDA trong Python, Fortran, JavaMATLAB.

CUDA cho phép các nhà phát triển truy nhập vào tập các chỉ lệnh ảo và bộ nhớ của các phần tử tính toán song song trong đơn vị xử lý đồ họa của CUDA (CUDA GPU). Sử dụng CUDA, các GPU mới nhất do NVIDIA sản xuất có thể dễ dàng thực hiện các tính toán như những CPU. Tuy nhiên, không giống như các CPU, các GPU có kiến trúc song song trên toàn bộ giúp cho sự tập trung vào khả năng thực thi một cách chậm rãi nhiều luồng dữ liệu một lúc, hơn là thực thi rất nhanh một luồng dữ liệu. Cách tiếp cận giải quyết các vấn đề có mục đích tổng quát này trên các GPU được gọi là GPGPU.

Trong công nghiệp trò chơi trên máy tính, ngoài nhiệm vụ làm trơn hình ảnh, GPU cũng được sử dụng để tính toán các hiệu ứng vật lý trong game (như mảnh vụn, khói, lửa, dòng chảy...); ví dụ các phần mềm đơn vị xử lý vật lý trong GPU bao gồm PhysXBullet. CUDA cũng được sử dụng để gia tốc các ứng dụng ngoài đồ họa như sinh học tính toán, xử lý khối lượng dữ liệu lớn cùng với CPU, trong mật mã học và nhiều lĩnh vực khác.[2][3][4][5] Một ví dụ đó là hạ tầng tính toán phân tán BOINC.[6]

CUDA cung cấp cả giao diện chương trình ứng dụng (API) bậc thấp và bậc cao. Kiến trúc CUDA SDK đầu tiên được phát hành vào ngày 15 tháng 2 năm 2007, cho cả hai hệ điều hành Microsoft WindowsLinux. Nó hỗ trợ cho Mac OS X ở phiên bản thứ 2.0[7], thay thế cho phiên bản beta vào ngày 14 tháng 2, 2008.[8] CUDA có trong mọi GPU NVIDIA bắt đầu từ seri G8X về sau, bao gồm các dòng sản phẩm GeForce, QuadroTesla. Tập đoàn NVIDIA nói rằng các chương trình phát triển cho seri GeForce 8 cũng sẽ vẫn chạy được mà không cần thay đổi trên mọi video card trong tương lai của NVIDIA, nhờ vào tính tương thích nhị phân.

Ví dụ luồng xử lý của CUDA
1. Sao chép dữ liệu từ bộ nhớ chính vào bộ nhớ GPU
2. CPU chỉ lệnh để xử lý tại GPU
3. GPU thực thi song song ở mỗi nhân
4. Sao chép kết quả từ bộ nhớ GPU sang bộ nhớ chính.

Tham khảo[sửa | sửa mã nguồn]

  1. ^ NVIDIA Clears Water Muddied by Larrabee Shane McGlaun (Blog) - 5 tháng 8 năm 2008 - DailyTech
  2. ^ Giorgos Vasiliadis, Spiros Antonatos, Michalis Polychronakis, Evangelos P. Markatos and Sotiris Ioannidis (September 2008, Boston, MA, USA). “Gnort: High Performance Network Intrusion Detection Using Graphics Processors” (PDF). Proceedings of the 11th International Symposium on Recent Advances in Intrusion Detection (RAID). 
  3. ^ Schatz, M.C., Trapnell, C., Delcher, A.L., Varshney, A. (2007). “High-throughput sequence alignment using Graphics Processing Units.”. BMC Bioinformatics. 8:474: 474. doi:10.1186/1471-2105-8-474. PMC 2222658. PMID 18070356. 
  4. ^ Manavski, Svetlin A.; Giorgio Valle (2008). “CUDA compatible GPU cards as efficient hardware accelerators for Smith-Waterman sequence alignment”. BMC Bioinformatics. 9(Suppl 2):S10: S10. doi:10.1186/1471-2105-9-S2-S10. PMC 2323659. PMID 18387198. 
  5. ^ Pyrit - Google Code http://code.google.com/p/pyrit/
  6. ^ Use your NVIDIA GPU for scientific computing, BOINC official site (December 18, 2008)
  7. ^ NVIDIA CUDA Software Development Kit (CUDA SDK) - Release Notes Version 2.0 for MAC OSX
  8. ^ CUDA 1.1 - Now on Mac OS X- (Posted on Feb 14, 2008)