Vietnamen’s Weblog

Time, Chances, Diligence, Intelligence: which is the most important?

Phần 0: From GPU to GPGPU

leave a comment »

Các máy tính đời đầu không có màn hình. Sau này, khi màn hình ra đời, nhu cầu xử lí hình ảnh, video, đòi hỏi phải có một bộ xứ lí riêng, gọi là GPU, được gắn trên các card màn hình.
Graphic Processing Unit (GPU), ngày nay, đã có thể xử lí mạnh hơn các bộ vi xử lí trung tâm (Central Processing Unit – CPU) trong việc xử lí tính toán. Vai trò của GPU đã vượt ra ngoài phạm vi truyền thống với khái niệm mới General-Purpose computation on GPU (GPGPU) có thể phục vụ cho các ứng dụng cần tính toán nhiều, chứ không đơn thuần cho đồ họa.

GPGPU đầu tiên của AMD công bố (Nov. 2006) với tên gọi CTM (Close to Metal), về sau đổi tên là Stream. GPGPU đầu tiên của NVIDIA là nền tảng Geforces 8 series. Để cung cấp khả năng truy xuất các tập lệnh của các GPU này, NVIDIA cung cấp một Software Development Kit (SDK) và các Application Programming Interface (API) đi kèm viết cho ngôn ngữ lập trình C gọi là Compute Unified Device Architecture (CUDA). Các GPGPU của NVIDIA còn gọi là CUDA-capable GPU. Hãng AMD cũng đưa ra một SDK/API tương tự  cho các GPGPU dòng ATI của hãng, gọi là Brook+.

Gần đây, PGI cũng cho ra phiên bản Fortran compiler với CUDA-support. Với CUDA, các programmers có thể dùng ngôn ngữ C để viết các chương trình và dùng nvcc cùng gcc để biên dịch nó. Chương trình được biên dịch có thể sử dụng khả năng tính toán của GPGPU.

Tuy nhiên, vì các tập lệnh của các GPU được chuyên biệt hóa phục vụ cho đồ họa, phạm vi ứng dụng cho các ứng dụng tính toán cũng bị giới hạn. Bù lại, khả năng xử lí song song của GPU là cực kì mạnh. Trước đây, số lệnh được thực thi tròng vòng 1s (instructions per seconds) là đơn vị dùng để đo tốc độ của CPU. Ngày nay, trong lĩnh vực tính toán khoa học, với việc tập trung nhiều vào khả năng tính toán (có sử dụng dấu chấm động – floating-point calculations), đơn vị để đo lường sức mạnh tính toán là floating point operations per second (FLOPS). LINPACK benchmarks là công cụ thường dùng để đo lường hiệu năng theo FLOPS.

Sau đây là một vài so sánh

  • Tháng 5, 2008, một siêu máy tính của quân đội Mĩ do IBM chế tạo đạt tốc độ 1petaFLOPS = 1000 petaFLOPS ~ 1.026 quadrillion calculations per second
  • Dự kiến, có thể tạo ra máy tính đạt tốc độ 10 petaFLOPS năm 2012
  • Tháng 6, 2008, GPGPU của AMD (ATI Radeon HD4800 series) đạt tốc độ 1teraFLOPS = 1000 gigaFLOPS
  • Năm 2008, bộ vi xử lí quad-core của Intel (Intel Core i7 965 XE) chỉ mới đạt 70 gigaFLOPS = 10^9 FLOPS – độ chính xác kép
  • Bộ vi xử lí SPARC64 VIIIfx Venus CPU của Fujitsu (năm 2008)  đạt tốc độ 128 GigaFLOPS.

Hạn chế hiện nay của GPGPU (chip G80 cho NVIDIA, chip … cho AMD) là nó chỉ hiệu quả với các phép toán độ chính xác đơn.

  1. với single precision calculations
  • nVidia’s Tesla C1060 GPU: 933 GFLOPS
  • AMD’s FireStream 9270: 1200 GFLOPS
  1. với double precision calculations
  • Nvidia Tesla C1060: 78 GFLOPS
  • AMD FireStream 9270: 240 GFLOPS

Hiện nay, CUDA được ưa chuộng hơn vì ngôn ngữ dùng là C/C++ thay vì dùng ngôn ngữ cấp thấp (assembly) như đối với CMI. Vì thế, các bài viết của tôi sẽ tập trung vào công nghệ CUDA.

Tăng trưởng về tốc độ so sánh giữa CPU và GPU

Tăng trưởng về tốc độ so sánh giữa CPU và GPU

Các thế hệ tiếp theo của CUDA-capable GPU là NVIDIA 9 series, 100 series, 200 series, Quadro. Tuy nhiên, phải đợi đến khi NVIDIA Tesla ra đời mới có 1 GPGPU đúng nghĩa. Đây là dòng GPU không có ngõ ra video, do đó, nó được thiết kế thuần túy cho tính toán. Các models hiện nay của Tesla là C870, D870, S870, C1060, S1070; đi theo 3 dạng: dạng card, dạng “external box” và dạng rack-mount server form, i.e. “C” viết tắt của “Card”, “D” viết tắt của “Desktop” và “S” viết tắt của “Server”. Các Tesla card thế hệ đầu (T8) sau dùng chip G80 (các dòng giá rẻ như G84, G86 không được sử dụng)

  1. C870 dùng chuẩn PCI Express x16 với thông số 1.5GB bộ nhớ và sức mạnh 518 GigaFLOPS – dùng chip G80 với 128 cores. Điện năng: 170W. (~1,500$)
  2. D870 được thiết kế dưới dạng 1 thùng độc lập (external box) gồm 2 card C870 nối với máy tính qua 1 cable PCI Express mở rộng, với sức mạnh 1 TetraFLOPS. Điện năng: 550W. (~7,500$)
  3. S870 được thiết kết với 4 card C870 theo kiến trúc Rack-Mount server form (1U), có thể nối với máy chủ qua cable PCI Express mở rộng, với sức mạnh đến 2 TetraFLOPS. Điện năng: 800W. (~12,000$)

CHÚ Ý: Các thông số trên là cho single-precision calculations.

Khả năng tiêu hao điện thấp là một điểm mạnh của GPGPU. Một GeForce GPU có khả năng tương đương 40 vi xử lí x86. Trong khi, với số lượng vi xử lí x86 đó cần 1600W.

Tesla D870 (price: 7500 USD)

Tesla S870 (price: 12000 USD)
Tesla S870 (price: 12000 USD)

Tesla T10 (thế hệ 2) với 2 phiên bản C1060 và S1070. T10 sử dụng chip GT200 series gồm 240 cores (gần gấp đôi so với 128 cores của G80 series) có khả năng xử lí 1 teraFLOPS gần gấp đôi Tesla GPU thế hệ đầu, cùng với độ chính xác cao hơn (64bit) và RAM tăng. Một số hình ảnh về GPU Tesla có thể tham khảo ở đây.

  1. C1060 giống như 1 card màn hình hơi to, kết nối cổng PCI Express x16, chứa 1 chip T10P (mỗi core tốc độ 1.33GHz, 4GB 800MHz GDDR3 RAM, băng thông bộ nhớ là 102GB/s), tốc độ 900 gigaFLOPS. Điện năng: 160W. ($1699)
  2. S1070 1U kích thước nhỏ hơn, vơi 4 chip T10P, i.e. 4×240=960 cores, tốc độ 4 tetraFLOPS. Mỗi chip tốc độ 1.5GHz, 16GB 800MHz GDDR3 RAM với băng thông bộ nhớ là 408 GB/s. Điện năng: 700W. ($7995 – 2PCIe interfaces, $8295 – 1 PCIe interface)

Tesla Fermi (thế hệ 3) dự kiến sẽ ra đời sớm. Nó dùng chip G300 series, GT300 hoặc NV60, không có ngõ ra DVI-I. Chip thế hệ mới có 512 cores (hơn gấp đôi so với thế hệ 2) hỗ trợ chuẩn IEEE 754-2008 floating-point standard, công nghệ sữa lỗi ECC (error-correcting code). Các kernels (khái niệm mới này sẽ được giới thiệu ở các bài sau) có thể chạy song song. Bên cạnh đó là sự ra đời của Nexus – môi trường để phát triển các ứng dụng cho tính toán, được tích hợp với Microsoft Visual Studio. Sau đây là một số so sánh với 2 thế hệ đầu.

So sánh các thế hệ của Tesla

So sánh các thế hệ của Tesla

Yêu cầu:

  1. máy tính có cài đặt 1 GPGPU: Geforces 8 series, 9 series, 100 series, 200 series, Quadro, and Tesla.
  2. CUDA toolkit, CUDA SDK, NVIDIA driver…
  3. chương trình được viết và biên dịch với compiler (gcc, hay PGI Fortran)

Update:

  1. Intel Nehalem với 4 cores, tốc độ 50GFLOPS, tiêu thụ 80W/h (price: $500).
  2. NVIDIA Fermi chips ~8 times faster than Tesla in double-precision computing, providing ECC (error correcting code) memory, double-precision

 

Tham khảo:

  1. http://gpgpu.org/
  2. http://ati.amd.com/technology/streamcomputing/gpgpu_history.html (GPGPU history from AMD)
  3. http://gpgpu.org/oldsite/data/history.shtml
  4. http://www.techradar.com/news/computing-components/processors/world-s-fastest-cpu-clocked-at-128-gigaflops-599433
  5. http://www.thegioimaychu.vn/forum/showthread.php?p=1127
  6. http://www.thongtincongnghe.com/article/356
  7. http://www.tomshardware.com/reviews/nvidia-cuda-gpu,1954-2.html
  8. http://www.vizworld.com/2009/06/nvidia-and-pgi-partner-to-bring-cuda-to-fortran/
  9. http://www.tgdaily.com/index.php?option=com_content&task=blogsection&id=18&Itemid=41&slideshow=20070620
  10. http://penstarsys.com/previews/graphics/nvidia/tesla/tesla_2.htm
  11. http://www.tomshardware.com/news/Tesla-C1060-S1070,5672.html
  12. http://www.xbitlabs.com/news/video/display/20090930223729_First_Images_of_Nvidia_GeForce_Fermi_Show_Up.html
  13. http://hothardware.com/News/NVIDIA-Unveils-Next-Generation-Fermi-GPU-Architecture/

Written by vietnamen

Tháng Mười 1, 2009 lúc 3:27 chiều

Gửi phản hồi

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s

%d bloggers like this: