1. Trang chủ
  2. » Công Nghệ Thông Tin

Công nghệ tính toán hiệu năng cao sử dụng card đồ họa trong diễn họa1

68 229 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 68
Dung lượng 1,95 MB

Nội dung

Phạm Đăng Hải Nội dung tóm tắt: A, Lý do chọn đề tài Với những tiến bộ nhanh trong công nghệ chế tạo phần cứng máy tính, các GPU Gaphics Processing Units – Bộ xử lý đồ họa phát triển

Trang 1

CÔNG NGHỆ TÍNH TOÁN HIỆU NĂNG CAO

SỬ DỤNG CARD ĐỒ HỌA TRONG DIỄN HỌA

LUẬN VĂN THẠC SĨ KỸ THUẬT CÔNG NGHỆ THÔNG TIN

Trang 2

1

LỜI CAM ĐOAN

Tôi - Nguyễn Quốc Huy - cam kết luận văn tốt nghiệp thạc sĩ kỹ thuật này là công trình nghiên cứu của bản thân tôi dưới sự hướng dẫn của TS Phạm Đăng Hải Các kết quả nêu trong luận văn là trung thực, không phải là sao chép toàn văn của bất

Trang 3

2

LỜI CẢM ƠN

Trước tiên, em xin gửi lời cảm ơn sâu sắc tới TS Phạm Đăng Hải, Viện Công

nghệ thông tin và Truyền thông, Trường Đại Học Bách Khoa Hà Nội, Thầy là người đã trực tiếp và tận tình hướng dẫn em trong suốt thời gian làm luận văn tốt nghiệp

Em xin bày tỏ lòng biết ơn chân thành GS.TS Nguyễn Thanh Thuỷ, Phó hiệu

trưởng trường Đại học Công nghệ - Đại học Quốc Gia Hà Nội, Thầy đã cho em những lời khuyên quý báu để hoàn thành luận văn này

Em xin trân thành cảm ơn các Thầy, Cô, cùng các cán bộ thuộc Viện Công nghệ thông tin và Truyền thông, Viện đào tạo sau đại học Trường Đại học Bách Khoa

Hà Nội đã tạo điều kiện thuận lợi cho em trong quá trình học tập cũng như hoàn thành luận văn thạc sĩ

Mình xin gửi lời cảm ơn tới các bạn học viên cao học khóa 2010B – Trường đại học Bách Khoa Hà Nội, đã sát cánh giúp đỡ nhau vượt qua những khó khăn trong quá trình học tập, hoàn thành luận văn tốt nghiệp

Cuối cùng, tôi xin cảm ơn bạn bè và gia đình đã luôn là luôn động viên và là chỗ dựa vững chắc về tinh thần cho tôi trong cuộc sống

Hà Nội, ngày 12 tháng 3 năm 2012

Tác giả

Nguyễn Quốc Huy

Trang 4

3

MỤC LỤC

LỜI CAM ĐOAN 1

LỜI CẢM ƠN 2

TÓM TẮT LUẬN VĂN 7

DANH MỤC HÌNH VẼ 9

DANH MỤC CÁC TỪ VIẾT TẮT VÀ CÁC THUẬT NGỮ 11

CHƯƠNG 1: TỔNG QUAN VỀ TÍNH TOÁN HIỆU NĂNG CAO 12

1.1 Tổng quan về tính toán hiệu năng cao 12

1.1.1 Nhu cầu tính toán hiệu năng cao 12

1.1.2 Giải pháp 12

1.2 Các hướng tiếp cận tính toán hiệu năng cao tiêu biểu 13

1.2.1 Các siêu máy tính (Super Computers) 13

1.2.2 Tính toán song song phân cụm (Cluster Computing) 15

1.2.3 Công nghệ tính toán lưới – Grid Computing 19

1.2.4 Các bộ xử lý multi-cores và many-cores 21

1.2.5 Tính toán song song trên hệ thống card đồ họa đa dụng 22

CHƯƠNG 2: CÔNG NGHỆ TÍNH TOÁN HIỆU NĂNG SỬ DỤNG CARD ĐỒ HỌA GPGPU 23

2.1 Giới thiệu Bộ xử lý đồ họa GPU 23

2.2 Bộ vi xử lý đồ họa đa dụng GPGPU 24

2.3 Kiến trúc Tesla của NVIDIA 27

Trang 5

4

CHƯƠNG 3: MÔI TRƯỜNG LẬP TRÌNH SONG SONG CUDA TRÊN HỆ

THỐNG GPGPU 31

3.1 Giới thiệu chung về CUDA 31

3.1.1 CUDA : Kiến trúc tính toán song song đa dụng 31

3.1.2 Mô hình lập trình tự động mở rộng quy mô thực thi 32

3.2 Mô hình lập trình CUDA 34

3.2.1 CUDA Kernels 34

3.2.2 Mô hình phân cấp luồng 35

3.2.3 Mô hình phân cấp bộ nhớ 39

3.2.4 Phân cấp thực thi chương trình trên CPU và GPU 40

3.2.5 Khả năng tính toán của Device - Compute Capability 42

3.3 Lập trình ứng dụng với CUDA 42

3.3.1 Thiết lập môi trường CUDA 42

A Kiểm tra GPU có hỗ trợ CUDA 42

B Download gói phần mềm cài đặt CUDA 43

C Cài đặt CUDA 43

D Kiểm tra quá trình cài đặt 44

E Biên dịch chương trình với NVCC 44

3.3.2 Bộ nhớ trên GPU - Device Memory 45

3.3.3 Thực thi đồng thời giữa Host và Device 47

3.4 Sự mở rộng của CUDA-C so với ngôn ngữ C 48

3.4.1 Định kiểu hàm - Function Type Qualifiers 48

Trang 6

5

3.4.1.1 device 48

3.4.1.2 global 48

3.4.1.3 host 48

3.4.2 Các từ khóa khai báo kiểu biến - Variable Type Qualifiers 49

3.4.2.1 device 50

3.4.2.2 constant 50

3.4.2.3 shared 50

3.4.3 Các kiểu dữ liệu vector xây dựng sẵn - Built-in Vector Types 51

3.4.4 Các biến định nghĩa sẵn - Built-in Variables 51

3.4.4.1 gridDim 51

3.4.4.2 blockIdx 51

3.4.4.3 blockDim 51

3.4.4.4 threadIdx 52

3.4.4.5 warpSize 52

3.4.5 Các Function đồng bộ hóa 52

CHƯƠNG 4: XÂY DỰNG ỨNG DỤNG DIỄN HỌA TRÊN HỆ THỐNG NVIDIA GPU 54

4.1 Giới thiệu bài toán N-Body simulation 54

4.2 Cơ sở tính toán lý thuyết 55

4.3 Cài đặt bài toán N-Body simulation sử dụng CUDA 57

4.3.1 Tính toán lực tương tác giữa một cặp thực thể Body-Body 58

4.3.2 Tính toán trong một Tile 59

Trang 7

6

4.3.3 Phân chia các Tiles vào các Thread Blocks 59

4.3.4 Định nghĩa một Grid của các Thread Blocks 61

4.4 Các kết quả thu được 62

CHƯƠNG 5 : KẾT LUẬN 66

TÀI LIỆU THAM KHẢO 67

Trang 8

7

TÓM TẮT LUẬN VĂN

Đề tài : Công nghệ tính toán hiệu năng cao sử dụng card đồ họa trong diễn họa

Tác giả luận văn: Nguyễn Quốc Huy Khóa: 2010B

Người hướng dẫn: TS Phạm Đăng Hải

Nội dung tóm tắt:

A, Lý do chọn đề tài

Với những tiến bộ nhanh trong công nghệ chế tạo phần cứng máy tính, các GPU (Gaphics Processing Units – Bộ xử lý đồ họa) phát triển với kiến trúc song song hóa mức cao, xử lý đa luồng với kiến trúc manycore processor đã đem lại khả năng tính toán cùng với băng thông bộ nhớ rất lớn Từ đó xuất hiện kỹ thuật dùng tính toán trên GPU làm những công việc trước kia là của CPU để tăng cường

hiệu năng tính toán, và đó cũng là lý do tác giả chọn đề tài luận văn ‘Công nghệ

tính toán hiệu năng cao sử dụng card đồ họa trong diễn họa’

B, Mục đích nghiên cứu của luận văn, đối tượng, phạm vi nghiên cứu

- Tìm hiểu công nghệ và kiến trúc hệ thống tính toán hiệu năng cao sử dụng card

C, Tóm tắt các nội dung chính của luận văn

Luận văn bao gồm 5 chương :

Chương 1: Tổng quan về tính toán hiệu năng cao : Trình bày sự cần thiết và những điểm nổi bật của các công nghệ tính toán hiệu năng cao trên thế giới

Trang 9

8

Chương 2: Công nghệ tính toán hiệu năng cao sử dụng card đồ họa GPGPU :

Nghiên cứu những công nghệ tính toán hiệu năng cao sử dụng sức mạnh tính toán song song của các bộ xử lý đồ họa đa dụng

Chương 3: Môi trường lập trình song song CUDA trên hệ thống GPGPU :

Tìm hiểu và làm chủ môi trường lập trình song song để viết các phần mềm thực thi trên hệ thống card đồ họa đa dụng GPGPU

Chương 4: Xây dựng ứng dụng diễn họa trên hệ thống NVIDIA GPU :

Chương này áp dụng những kiến thức đã nghiên cứu vào việc xây dựng một ứng dụng tính toán song song trên hệ thống NVIDIA GPU, cụ thể là giải quyết bài toán

“N-Body Simulation”

Chương 5: Kết luận : Tóm tắt các kết quả đạt được và phương hướng phát triển

Trang 10

9

DANH MỤC HÌNH VẼ

Hình 1: Siêu máy tính Jaguar 15

Hình 2: Mô hình một Cluster 16

Hình 3: Hệ thống tính toán song song phân cụm theo mô hình Beowulf Cluster 17

Hình 4: Kiến trúc tổng quan về phần cứng và phần mềm của một cluster 18

Hình 5: Mô hình tính toán lưới 20

Hình 6: CPU đa nhân của Intel 21

Hình 7: So sánh hiệu năng tinh toán của CPU và GPU [2] 25

Hình 8: So sánh băng thông bộ nhớ giữa CPU và GPU [2] 26

Hình 9: So sánh kiến trúc CPU và GPU 26

Hình 10: C870 với chuẩn PCI Express và không có đầu ra Video 29

Hình 11: Tesla D870 có chứa hai Card C870 29

Hình 12: Tesla S870 với 04 Card C870 30

Hình 13: Tiến trình thực hiện của một chương trình CUDA [7] 31

Hình 14: Mô hình thực thi của CUDA 32

Hình 15: Mô hình tự động mở rộng quy mô thực thi với CUDA 34

Hình 16: Grid của các thread blocks 37

Hình 17: Mô hình phân cấp bộ nhớ của CUDA 39

Hình 18: N-body simulation: Mô phỏng tương tác giữa các hành tinh trong thiên văn học 54

Hình 19: Bài toán N-Body : Cơ chế tính toán trong một Tile 58

Hình 20: Mô hình thực thi của một thread block 60

Trang 11

10

Hình 21:Grid của các Thread Blocks tính toán tất cả các lực tương tác 62

Hình 22: NVIDIA Video card GeForce 210: Phần cứng sử dụng để tính toán 62

Hình 23: Thử nghiệm thành công bài toán mô phỏng hệ thống N-Body 64

Trang 12

11

DANH MỤC CÁC TỪ VIẾT TẮT VÀ CÁC THUẬT NGỮ

CPU Central Processing Unit - Bộ vi xử lý trung tâm

GPU Graphics processing unit - Bộ xử lý đồ họa

GPGPU General-purpose computing on graphics processing units

Tính toán đa dụng trên bộ vi xử lý đồ họa CUDA Compute Unified Device Architecture – Môi trường lập

trình trên các bộ xử lý đồ họa đa dụng GPGPU Thread Luồng chương trình, tiểu trình

Block of threads Một nhóm các threads trong lập trình CUDA

Kernel function Hàm nhân – trong lập trình CUDA, là hàm có khả năng

được gọi thực thi song song đồng thời trên các core của

bộ xử lý đồ họa

Source code Mã nguồn chương trình

Cluster Computing Tính toán phân cụm

Grid Computing Tính toán lưới

FLOPS Floating-point operations per second : Số phép tính dấu

phảy động trên 1 giây

Host Chỉ CPU trong lập trình CUDA

Device Chỉ GPU trong lập trình CUDA

GUI Graphic User Interface – Giao diện người dùng đồ họa API Application Programming Interface : Giao diện lập trình

ứng dụng

Trang 13

12

CHƯƠNG 1: TỔNG QUAN VỀ TÍNH TOÁN HIỆU NĂNG CAO

1.1 Tổng quan về tính toán hiệu năng cao

1.1.1 Nhu cầu tính toán hiệu năng cao

Sự đòi hỏi về sức mạnh tính toán của máy tính không ngừng tăng lên nhằm

để giải quyết các bài toán trong lĩnh vực khoa học và công nghệ Ngày nay, trong các lĩnh vực như hóa học, vật lý, vũ trụ học, sinh học, y học… các bài toán phức tạp đòi hỏi sức mạnh tính toán lớn luôn luôn được đặt ra Vấn đề càng phức tạp khi bài toán đòi hỏi việc mô phỏng và hiển thị mô hình đồ họa Bên cạnh đó, yêu cầu về thời gian xử lý của bài toán cũng quan trọng không kém Đối với những bài toán nêu trên, phương pháp xử lý tuần tự với một bộ xử lý thường không thể đáp ứng được Xử lý song song dựa trên nguyên tắc nhiều bộ xử lý cùng thực thi đề là chìa khóa để giải quyết những vấn đề này

Máy tính song song là một hệ thống bao gồm nhiều bộ xử lý và cho phép phối hợp các bộ xử lý này để giải quyết bài toán lớn cùng một lúc Các siêu máy tính còn được gọi là các máy tính hiệu năng cao (High-Performance Computers) Tính toán hiệu năng cao (High Performance Computing) là phương pháp giải quyết các bài toán phức tạp dùng các máy tính hiệu năng cao

1.1.2 Giải pháp

Nhằm đáp ứng yêu cầu tính toán lớn trong khoa học và công nghệ, ba giải pháp được đưa ra làị:

- (1) Tăng tốc độ tính toán của bộ xử lý

- (2) Cải tiến giải thuật để giải quyết bài toán

- (3) Sử dụng kỹ thuật tính toán song song

Giải pháp (1) đã gặp những giới hạn về công nghệ do khi tốc độ trên một vi xử lý tăng lên quá cao dẫn đến nhiệt độ tăng lên, và công nghệ tản nhiệt bằng không khí

Trang 14

13

không thể đáp ứng được Với giải pháp (2), không phải lúc nào ta cũng có thể cải tiến giải thuật, và thường công việc này tiêu tốn nhiều thời gian cũng như rất phức tạp Để giải quyết các bài toán có khối lượng tính toán lớn đòi hỏi một giải pháp mới; đó chính là giải pháp (3) Chính động lực này đã thúc đẩy việc ra đời các hệ thống máy tính có khả năng tính toán song song mạnh

Máy tính song song có nhiều bộ xử lý và các bộ xử lý này được liên kết với nhau để tham gia giải quyết các phần khác nhau của bài toán cùng lúc Theo lý

thuyết, nếu có n bộ xử lý thì thời gian giải quyết vấn đề sẽ giảm đi n lần so với

dùng một bộ xử lý Tuy nhiên, thời gian dài giải quyết trong thực tế sẽ lớn hơn thời gian tính toán trong lý thuyết do nhiều nguyên do Thứ nhất là ngoài thời gian

xử lý trong bài toán thì còn thời gian đồng bộ và giao tiếp truyền dữ liệu giữa các

bộ vi xử lý Thứ hai là không phải bài toán nào cũng có thể chia thành n phần nhỏ

bằng nhau để giao cho các bộ xử lý

Trong phần tiếp theo chúng ta sẽ nghiên cứu những hệ thống tính toán song song phổ biến

1.2 Các hướng tiếp cận tính toán hiệu năng cao tiêu biểu

1.2.1 Các siêu máy tính (Super Computers)

Một siêu máy tính là một máy tính vượt trội trong khả năng và tốc độ xử lý Thuật ngữ Siêu Tính Toán được dùng lần đầu trong báo New York World vào năm 1920

để nói đến những bảng tính (tabulators) lớn của IBM làm cho trường Đại học Columbia

Trong thực tế, tốc độ của hệ thống siêu máy tính được đo bằng "FLOPS" (FLoating Point Operations Per Second – Số phép tính dấu phảy động trên một giây) Siêu máy tính hiện nay có tốc độ xử lý hàng nghìn teraflop (một teraflop tương đương với hiệu suất một nghìn tỷ phép tính/giây) hay bằng tổng hiệu suất của 6.000 chiếc máy tính hiện đại nhất hiện nay gộp lại (một máy có tốc độ

Trang 15

14

khoảng từ 3-3,8 gigaflop) Có thể hiểu siêu máy tính là hệ thống những máy tính làm việc song song Hàng năm các chuyên gia thông kê và xếp hạng lại 500 siêu máy tính hàng đầu thế giới và gọi là TOP500 Danh sách TOP500 được công bố hai lần trong một năm (từ năm 1993) Danh sách này có thể tham khảo tại website: http://www.top500.org

Các hệ thống siêu máy tính đứng đầu danh sách TOP500 từ năm 1993 :

 Fujitsu K computer ( Japan, June 2011 – present)

 NUDT Tianhe-1A ( China, November 2010 - June 2011)

 Cray Jaguar ( United States, November 2009 - November 2010)

 IBM Roadrunner ( United States, June 2008 – November 2009)

 IBM Blue Gene/L ( United States, November 2004 – June 2008)

 NEC Earth Simulator ( Japan, June 2002 – November 2004)

 IBM ASCI White ( United States, November 2000 – June 2002)

 Intel ASCI Red ( United States, June 1997 – November 2000)

 Hitachi CP-PACS ( Japan, November 1996 – June 1997)

 Hitachi SR2201 ( Japan, June 1996 – November 1996)

 Fujitsu Numerical Wind Tunnel ( Japan, November 1994 – June 1996)

 Intel Paragon XP/S140 ( United States, June 1994 – November 1994)

 Fujitsu Numerical Wind Tunnel ( Japan, November 1993 – June 1994)

 TMC CM-5 ( United States, June 1993 – November 1993)

Trang 16

Hình 1: Siêu máy tính Jaguar

Dù có sức mạnh rất lớn như vậy, nhưng các siêu máy tính này có hạn chế là: giá thành lắp đặt rất cao, thời gian lắp đặt lâu Ngoài ra, chi phí duy trì các siêu máy tính này cũng là một vấn đề không nhỏ bao gồm chi phí phần mềm, kỹ thuật,

chi phí điện năng…

1.2.2 Tính toán song song phân cụm (Cluster Computing)

Hệ thống tính toán song song phân cụm (Cluster) là các hệ thống máy tính song song được xây dựng từ các nút tính toán và thiết bị mạng thông dụng, mỗi nút tính toán hay các nút đóng vai trò điều khiển vào/ra là một hệ thống hoàn chỉnh, có khả năng làm việc độc lập

Trang 17

16

Hệ thống tính toán song song phân cụm là một máy tính song song, trong đó:

Các tài nguyên tính toán là bộ vi xử lý và bộ nhớ trong tại mỗi máy tính,

Các tài nguyên tính toán này có khả năng truyền thông và kết hợp với nhau

thông qua cáp mạng Thường thì quy mô của hệ thống chỉ giới hạn trong một mạng cục bộ (LAN), trong đó có một máy tính đóng vai trò máy chủ (server), các máy tính còn lại đóng vai trò nút tính toán (computing node)

Hình 2: Mô hình một Cluster

Việc thiết lập hệ thống tính toán song song phân cụm từ những máy tính có cấu trúc đơn giản, sử dụng các công nghệ mạng phổ biến đã được bắt đầu từ năm 1994 với mô hình Beowulf Cluster của Thomas Sterling cùng Donal Becker Ưu điểm lớn nhất của hệ thống này là giá thành của hệ thống nhỏ hơn so với các hệ thống sever tương ứng khác Cùng với sự phát triển nhanh chóng của máy tính cá nhân (PC), hiện nay một hệ thống dựa trên công nghệ LAN và PC có thể đạt được hiệu năng đến vài chục thậm chí là vài trăm Gigaflops trong khi giá thành lại rẻ hơn rất nhiều so với các siêu máy tính Ưu điểm thứ hai của hệ thống bó là sự linh hoạt

Trang 18

17

của cấu hình Số lượng nút, dung lượng bộ nhớ trên mỗi nút, số lượng bộ xử lý trên mỗi nút, và cấu hình mạng và hàng loạt các tham số khác đều mang tính tuỳ biến cao

Hình 3: Hệ thống tính toán song song phân cụm theo mô hình Beowulf Cluster

Một hệ thống tính toán song song phân cụm rẻ hơn nhiều so với một siêu máy tính cùng sức mạnh, điều này làm cho các hệ thống tính toán song song phân cụm ngày càng phổ biến và đặc biệt phù hợp cho các nước đang phát triển cũng như các trường đại học

Tuy nhiên, các hệ thống tính toán song song phân cụm cũng có những hạn chế như: quá trình triển khai, cấu hình hệ thống tương đối phức tạp, hệ thống hoạt

Trang 19

18

động không ổn định bằng các siêu máy tính, và nhược điểm lớn nhất là vấn đề

truyền thông giữa các nút tính toán Việc nghiên cứu nhằm nâng cao khả năng

truyền thông là một trong những vấn đề quan trọng hàng đầu trong quá trình phát

triển các cấu trúc, mô hình hệ thống phân cụm Các hệ thống tính toán song song

hiện đại đều ứng các kiến trúc mạng tiên tiến như: Myrinet, Gigabit Ethernet,

nhằm nâng cao tốc độ truyền thông giữa các nút tính toán

Trên thực tế, cơ sở hạ tầng phần cứng mới chỉ là một phần trong toàn thể

mô hình chung của tính toán phân cụm Cùng với sự phát triển của lĩnh vực Công

nghệ thông tin trên thế giới, phần mềm đang ngày càng chứng minh được vai trò

cốt yếu của mình trong các hệ thống máy tính Đối với các hệ thống tính toán phân

cụm, phần mềm càng có vai trò quan trọng hơn Chính các phần mềm đảm bảo

cho hệ thống gồm nhiều máy tính riêng lẻ có thể hoạt động ổn định và cộng tác

hiệu quả Một hệ thống tính toán song song phân cụm (dựa trên mạng LAN) hoạt

động như một hệ thống đơn dưới cái nhìn của nguời dùng và của ứng dụng

Hình 4: Kiến trúc tổng quan về phần cứng và phần mềm của một cluster

Trang 20

19

1.2.3 Công nghệ tính toán lưới – Grid Computing

Cũng như các công nghệ tính toán khác, tính toán lưới (grid computing) ra đời xuất phát từ nhu cầu tính toán của con người Ngày càng có nhiều bài toán phức tạp hơn được đặt ra và do đó các tổ chức cũng cần phải có những năng lực tính toán mạnh mẽ hơn

Một cách thực hiện hiệu quả là phân bố lại hợp lý các nguồn tài nguyên trong tổ chức hoặc thuê thêm các nguồn tài nguyên từ bên ngoài (dĩ nhiên là với chi phí rẻ hơn nhiều so với việc đầu tư cho cơ sở hạ tầng tính toán) Thực tế cho thấy có một phần lớn các nguồn tài nguyên của chúng ta đang bị sử dụng lãng phí: các máy để bàn công sở thường chỉ hoạt động khoảng 5% công suất, ngay cả các máy chủ cũng có thể chỉ phải hoạt động với 20% công suất Việc tận dụng hiệu quả các nguồn tài nguyên này có thể mang lại một sức mạnh tính toán khổng lồ

Cách giải quyết này chính là mục tiêu của tính toán lưới Tính toán lưới hướng đến việc chia sẻ và sử dụng hiệu quả các nguồn tài nguyên thuộc về nhiều

tổ chức trên một quy mô rộng lớn (thậm chí là quy mô toàn cầu)

Khái niệm Tính toán lưới đã bắt đầu xuất hiện vào đầu thập niên 90 với

nghĩa ẩn dụ là làm cho việc sử dụng sức mạnh của máy tính dễ dàng như là việc sử dụng điện năng Ngày nay có rất nhiều định nghĩa về tính toán lưới Một định nghĩa về Grid khá hoàn chỉnh được đưa ra bởi tiến sỹ Ian Foster như sau :

“Grid là một loại hệ thống song song, phân tán cho phép chia sẻ, lựa chọn, kết hợp các tài nguyên phân tán theo địa lý, thuộc nhiều tổ chức khác nhau dựa trên tính sẵn sàng, khả năng, chi phí của chúng và yêu cầu về chất lượng dịch vụ (QoS) của người dùng để giải quyết các bài toán, ứng dụng có quy mô lớn trong khoa học, kỹ thuật và thương mại Từ đó hình thành nên các “tổ chức ảo” (Virtual Organization (VO)), các liên minh tạm thời giữa các tổ chức và tập đoàn, liên kết với nhau để chia sẻ tài nguyên và/hoặc kỹ năng nhằm đáp ứng tốt hơn các cơ hội

Trang 21

20

kinh doanh hoặc các dự án có nhu cầu lớn về tính toán và dữ liệu, toàn bộ việc liên minh này dựa trên các mạng máy tính”.

Một hệ thống Grid có 3 đặc điểm chính:

- Có sự kết hợp, chia sẻ các tài nguyên không được quản lý tập trung

- Sử dụng các giao diện và giao thức chuẩn, mang tính mở, đa dụng

- Đáp ứng yêu cầu cao về chất lượng dịch vụ

Hình 5: Mô hình tính toán lưới

Các nghiên cứu về tính toán lưới đã và đang được tiến hành nhằm tạo ra một cơ sở

hạ tầng lưới cho phép dễ dàng chia sẻ và quản lý các tài nguyên đa dạng và phân tán trong môi trường lưới Các thách thức mà công nghệ tính toán lưới đang phải giải quyết bao gồm:

- Các tài nguyên hết sức đa dạng, không đồng nhất Tài nguyên ở đây được hiểu theo nghĩa hết sức tổng quát Đó có thể là các tài nguyên phần cứng: tài nguyên tính toán, tài nguyên lưu trữ, các thiết bị đặc biệt khác ; các tài nguyên phần mềm: các CSDL, các phần mềm đặc biệt và đắt giá ; các đường truyền mạng Các tài nguyên này có thể rất khác nhau về mặt kiến trúc, giao diện, khả năng xử lý Việc tạo ra một giao diện thống nhất cho phép khai thác và sử dụng

Trang 22

21

hiệu quả các nguồn tài nguyên này hoàn toàn không dễ dàng Ban đầu tính toán lưới được đặt ra chủ yếu là để tận dụng các nguồn tài nguyên tính toán nhưng hiện nay mục tiêu của nó đã được mở rộng sang rất nhiều nguồn tài nguyên khác như

đã kể trên

- Các tài nguyên không chỉ thuộc về một tổ chức mà thuộc về rất nhiều tổ chức tham gia lưới Các tổ chức phải tuân thủ một số quy định chung khi tham gia vào lưới còn nhìn chung là hoạt động độc lập tức là các tài nguyên này đều có quyền

tự trị Các tổ chức khác nhau thường có chính sách sử dụng hay cho thuê tài nguyên của họ khác nhau và do vậy cũng gây khó khăn cho việc quản lý

- Các tài nguyên phân tán rộng khắp về mặt địa lý do vậy phải có các cơ chế quản lý phân tán

- Đảm bảo an toàn thông tin cho một môi trường phức tạp như môi trường lưới

là rất khó khăn trong khi đây là một trong những điểm ưu tiên hàng đầu

1.2.4 Các bộ xử lý multi-cores và many-cores

CPU đa nhân, CPU đa lõi (tiếng Anh: multi-core) là bộ vi xử lý trung tâm (Central Processing Unit) có từ 2 – 8 lõi xử lý được đặt trên cùng một CPU vật lý duy nhất Một cách khác, chúng giống như sự ghép nối nhiều CPU thông thường trước đây trở thành một CPU duy nhất

Hình 6: CPU đa nhân của Intel

Trang 23

22

Chỉ trong khoảng thời gian từ năm 2001 đến năm 2003, tốc độ của Pentium

4 đã tăng gấp đôi từ 1.5 lên đến 3 GHz, tuy nhiên hiệu năng của CPU không tăng tương xứng như mức gia tăng xung của CPU và việc tăng tốc độ xung của CPU nhanh chóng chạm phải ngưỡng tối đa mà cụ thể cũng trong khoảng thời gian 2 năm từ năm 2003 đến năm 2005 tốc độ của CPU chỉ tăng từ 3.0 lên đến 3.8 GHz

Theo định luận Moore trước đây, tốc độ của bộ vi xử lý sẽ tăng gấp đôi sau khoảng thời gian 18 tháng, nhưng tốc độ xung tăng gấp đôi không đồng nghĩa với hiệu năng tăng gấp đôi và việc gia tăng xung của bộ vi xử lý sẽ nhanh chóng chạm phải vấn đề đó chính là nhiệt độ của CPU sẽ quá cao và các giải pháp tản nhiệt khí

đã đến mức tới hạn không thể đáp ứng được khả năng làm mát khi CPU hoạt động

ở xung quá cao như vậy Vì thế, việc gia tăng xung hoạt động của CPU dần đi vào

bế tắc, và các hãng sản xuất CPU lớn không còn có thể tăng tốc độ chip đơn ngày một cao hơn như trước, mà chuyển sang mô hình nhiều chip (nhân, lõi) với tốc độ vừa phải, dễ sản xuất, giá thành chấp nhận được CPU đa nhân được giới thiệu lần đầu tiên vào năm 2001 bởi hãng IBM với loại CPU Power4 dành riêng cho các máy chủ Bắt đầu từ đó các hãng sản xuất CPU khác bắt đầu chú ý đến thể loại CPU đa nhân và định hướng phát triển các sản phẩm của mình theo hướng loại này

1.2.5 Tính toán song song trên hệ thống card đồ họa đa dụng

Kỹ thuật tính toán song song dùng đơn vị xử lý đồ họa đa dụng -

General-Purpose computing of Gaphics Processing Units (GPGPU, hay còn gọi tắt là

GPGP hoặc GP²U) là kỹ thuật sử dụng đơn vị xử lý đồ họa GPU (vốn được thiết

kế để tính toán đồ họa máy tính) để thực hiện những tác vụ trước đây được xử lý

bởi CPU Công nghệ tính toán hiệu năng cao sử dụng card đồ họa GPGPU sẽ được trình bày chi tiết ở các phần sau

Trang 24

23

CHƯƠNG 2: CÔNG NGHỆ TÍNH TOÁN HIỆU NĂNG SỬ DỤNG

CARD ĐỒ HỌA GPGPU

2.1 Giới thiệu Bộ xử lý đồ họa GPU

Đơn vị xử lý đồ họa (Graphics Processing Unit - GPU) là một vi mạch

điện tử đặc biệt được thiết kế để tăng tốc việc xử lý hình ảnh trong bộ nhớ video,

bộ nhớ này sẽ chứa dữ liệu để hiển thị lên màn hình

GPU được sử dụng trong các hệ thống nhúng, trong mobile phones, personal computers, workstations, và trong game consoles Những GPU hiện đại rất mạnh trong việc xử lý đồ họa máy tính Được thiết kế với kiến trúc song song ở mức cao, GPU tỏ ra hiệu quả hơn CPU trong việc thực thi những thuật toán đòi hỏi phải thực hiện song song một số lượng lớn các khối dữ liệu

Trong máy tính cá nhân, GPU thường nằm trên video card, hoặc có thể được tích hợp trên motherboard Hơn 90% các máy tính để bàn hoặc các laptop mới có trang bị những GPU tích hợp trên bo mạch chủ, điều này giúp tiết kiệm chi phí nhưng những GPU này thường kém hiệu năng hơn so với những GPU đặt riêng trên card đồ họa

Thuật ngữ GPU được đưa ra đầu tiên bởi Nvidia vào năm 1999 Trong năm

đó, Nvidia đã tung ra thị trường đơn vị xử lý đồ họa GeForce 256 , GPU đầu tiên trên thế giới, chíp xử lý này được tích hợp các chức năng như các hàm chuyển đổi hình ảnh, xử lý ánh sáng các rendering engines với khả năng xử lý nhiều hơn 10 triệu đa giác trong một giây

Vào những năm 1990, các kỹ thuật tăng tốc xử lý giao diện đồ họa 2 chiều (2D GUI – Graphic User Interface) được sử dụng rộng rãi Thêm vào đó, các giao diện lập trình ứng dụng API cho đồ họa được phát triển, điển hình là thư viện đồ họa WidG cho hệ điều hành Windows 3.x, và sau này trở thành giao diện

Trang 25

đã xuất hiện Cho đến hiện tại, OpenGL và DirectX vẫn là hai thư viện đồ họa phổ biến nhất

Ngày nay, trên thế giới có rất nhiều công ty sản xuất GPU với nhiều thương hiệu con khác nhau Theo thống kê vào năm 2008, ba hãng Intel, NVIDIA và AMD/ATI dẫn đầu thị trường GPU với thị phần lần lượt là 49.4%, 27.8% và 20.6% Tuy nhiên, những số liệu này bao gồm cả giải pháp card đồ họa tích hợp trên bo mạch chủ của Intel, nếu không tính đến những số liệu đó thì NVIDIA và ATI chiếm gần như 100% thị trường

Các GPU hiện đại dùng phần lớn transistors cho việc xử lý các phép tính đồ họa 3D Các transistors được sử dụng để tăng tốc các công việc đòi hỏi truy cập bộ nhớ nhiều như texture mapping, rendering các đa giác, thực hiện phép qoay, chuyển đổi các đối tượng đồ họa giữa những hệ tọa độ khác nhau Phần lớn các công việc tính toán này đòi hỏi các thao tác với ma trận và vector nên các kỹ sư và các nhà khoa học đã tiến hành những nghiên cứu để sử dụng GPU vào những công

việc tính toán ngoài lĩnh vực đồ họa Từ đó ra đời khái niệm GPGPU

(general-purpose computing on graphics processing units) – Đơn vị xử lý đồ họa đa dụng

mà chúng ta sẽ tìm hiểu trong phần sau

2.2 Bộ vi xử lý đồ họa đa dụng GPGPU

Kỹ thuật tính toán dùng đơn vị xử lý đồ họa đa dụng - General-Purpose

computing of Gaphics Processing Units (GPGPU, hay còn gọi tắt là GPGP hoặc

Trang 26

25

GP²U) là kỹ thuật sử dụng đơn vị xử lý đồ họa GPU (vốn được thiết kế để tính

toán đồ họa máy tính) để thực hiện những tác vụ trước đây được xử lý bởi CPU

Thông thường các chức năng của GPU được giới hạn trong việc xử lý đồ họa máy tính Trong rất nhiều năm, GPU chỉ được sử dụng để tăng tốc một vài phần trong đồ họa đường ống (graphics pipeline) Từ đòi hỏi của thị trường cho đồ họa 3D thời gian thực và đồ họa với độ phân giải cao, các GPU đã phát triển với kiến trúc song song hóa mức cao, xử lý đa luồng với kiến trúc manycore processor

đã đem lại khả năng tính toán cùng với băng thông bộ nhớ rất cao, thậm chí còn vượt qua những CPU thông thường như được minh họa trong hình sau

Hình 7: So sánh hiệu năng tinh toán của CPU và GPU [2]

Trang 27

26

Hình 8: So sánh băng thông bộ nhớ giữa CPU và GPU [2]

Lý do dẫn đến việc GPU có khả năng tính toán các phép tính dấu phẩy động cao hơn CPU là vì GPU được thiết kế cho các tác vụ đòi hỏi sự song song hóa ở mức cao, đó cũng chính là đòi hỏi của việc rendering đồ họa Chính vì thế nên trong thiết kế, GPU sử dụng phần lớn transitors cho việc xử lý dữ liệu hơn là việc điều khiển luồng và đưa dữ liệu vào bộ nhớ đệm (data caching)

Hình 9: So sánh kiến trúc CPU và GPU

Trang 28

27

Có thể nói một cách chính xác hơn, GPU được thiết kế để phù hợp giải

quyết các vấn đề thông qua tính toán song song trên các dữ liệu - cùng một

chương trình được thực hiện trên rất nhiều phần tử dữ liệu một cách song song Trong các tác vụ này, tính toán số học được đòi hỏi cao hơn rất nhiều so với các thao tác truy cập bộ nhớ Cũng bởi vì một tập lệnh được thực hiện cho mỗi phần tử

dữ liệu khác nhau nên cũng không có nhiều đòi hỏi về việc điều khiển luồng chương trình ( flow control)

Việc xử lý dữ liệu song song ánh xạ các phần tử dữ liệu cho các luồng thực thi song song Rất nhiều ứng dụng xử lý một khối lượng lớn dữ liệu có thể sử dụng

mô hình lập trình song song mức dữ liệu để tăng tốc tính toán Trong diễn họa 3 chiều (3D rendering), các tập hợp lớn điểm ảnh và các đỉnh được ánh xạ tới các thread song song Tuơng tự, các ứng dụng xử lý ảnh và xử lý video như encoding/decoding video, nhận dạng ảnh có thể ánh xạ các khối ảnh và các điểm ảnh (pixel) đến các thread xử lý xong song

Trong thực tế, có nhiều giải thuật ngoài lĩnh vực xử lý đồ họa, xử lý ảnh hay xử lý video có thể được tăng tốc nhờ áp dụng mô hình song song hóa dữ liệu Các giải thuật này có thể áp dụng cho các bài toán liên quan đến xử lý tín hiệu, mô phỏng vật lý, tính toán tài chính hoặc tính toán trong sinh học.Từ đó xuất hiện kỹ thuật dùng tính toán trên GPU làm những công việc trước kia là của CPU để tăng cường hiệu suất làm việc

2.3 Kiến trúc Tesla của NVIDIA

NVIDIA tung ra dòng sản phẩm có tên gọi Tesla (AMD/ATI cũng có dòng sản phẩm với khái niệm tương tự có tên gọi Stream), Tesla ban đầu dựa trên sức mạnh của GPU GeForce 8800 nhưng không tạo ra tín hiệu Video: chúng được dùng như là CPU để xử lí chương trình Tất nhiên những chương trình này phải được dịch bằng CUDA Do đó những người dùng thông thường lại không được

Trang 29

đó chính là giải pháp Tesla

Ban đầu NVIDIA tung ra ba sản phẩm Tesla : Card cơ bản có tên gọi C870

mà là Card màn hình GeForce 8800 nhưng không có tín hiệu ra Video “C” được viết tắt từ “Card” C870 có bộ nhớ 1.5GB và có sức mạnh tính toán 500 GigaFLOPS Nó dùng chuẩn giao diện PCI Express x16 nên có thể cắm C870 vào bất kì máy tính để bàn nào

Trang 30

29

Hình 10: C870 với chuẩn PCI Express và không có đầu ra Video

C870 được sử dụng trong hai sản phẩm Tesla khác mà có tên gọi D870 và S870 “D” trong D870 có nghĩa là “Desktop” Nó là một Case ngoài nhỏ gồm có hai Card C870 do đó sức mạnh tính toán theo lí thuyết đạt được 1 TFLOPS Case này được nối tới PC chính qua Cable thông qua Bus PCI Express mở rộng

Hình 11: Tesla D870 có chứa hai Card C870

Phiên bản cao cấp nhất là Tesla S870 với 04 Card C870 bên trong S trong S870

được bắt nguồn từ “Server” , nó là Case máy chủ kiểu Rack-Mount 1U bên trong

có chứa tới 04 Card C870 Do đó sản phẩm này được dùng để nối với máy chủ

Trang 31

30

Hình 12: Tesla S870 với 04 Card C870

Tesla S870 được nối tới máy chủ thông qua Cable , mà được dựa trên PCI Express

mở rộng

Trang 32

31

CHƯƠNG 3: MÔI TRƯỜNG LẬP TRÌNH SONG SONG CUDA

TRÊN HỆ THỐNG GPGPU

3.1 Giới thiệu chung về CUDA

3.1.1 CUDA : Kiến trúc tính toán song song đa dụng

Vào tháng 11 năm 2006 NVIDIA giới thiệu CUDA – Kiến trúc tính toán song song đa dụng – với một mô hình lập trình song song mới cho phép tận dụng khả năng tính toán song song trên các GPU của NVIDIA để giải quyết các vấn đề tính toán phức tạp một cách hiệu quả hơn trên CPU

Hình 13: Tiến trình thực hiện của một chương trình CUDA [7]

Trang 33

32

Hình trên tóm lược các bước thực thi của một chương trình CUDA

Bước 1: Copy dữ liệu từ bộ nhớ chính (main memory) vào bộ nhớ của GPU

Bước 2: CPU gửi lệnh thực thi cho GPU

Bước 3: GPU thực thi chương trình song song trên các nhân (core)

Bước 4: Copy kết quả từ bộ nhớ GPU về bộ nhớ chính

CUDA đi kèm môi trường phần mềm cho phép lập trình viên sử dụng ngôn ngữ lập trình bậc cao C Bên cạnh đó, các ngôn ngữ lập trình khác cũng như các giao diện lập trình ứng dung (application programming interface- API) cũng được

hỗ trợ, ví dụ như CUDA FORTRAN, OpenCL, và DirectCompute

Hình 14: Mô hình thực thi của CUDA

3.1.2 Mô hình lập trình tự động mở rộng quy mô thực thi

(Automatic Scalability programming model)

Trang 34

33

Ngày nay, các CPU có kiến trúc multicore, GPU với kiến trúc manycore, các bộ xử lý này đều là các hệ thống song song Thách thức đặt ra là làm sao để phát triển các ứng dụng có khả năng mở rộng quy mô thực thi song song một cách trong suốt (transparently scales) với số lượng các core trên GPU và CPU

Mô hình lập trình song song CUDA được thiết kế để giải quyết thách thức này trong khi vẫn giữ được sức mạnh lập trình hệ thống của những ngôn ngữ lập trình như C Có 3 điểm quan trọng trong thiết kế đó là :

 Sự phân cấp các nhóm luồng tiến trình (hierarchy of thread groups )

 Cơ chế chia sẻ bộ nhớ

 Đồng bộ hóa - barrier synchronization

Khả năng mở rộng thực thi song song một cách trong suốt giúp kiến trúc CUDA hỗ trợ số lượng lớn phần cứng GPGPU trên thị trường, bao gồm những GeForce GPUs với số lượng core khác nhau, các sản phẩm chuyên nghiệp Quadro

và các hệ thống Tesla

Một chương trình song song đa luồng viết bằng CUDA được phân vùng thành các block, mỗi block bao gồm một tập hợp các luồng, các block có thể được thực thi độc lập với nhau Các block này có thể được thực thi song song hoặc tuần tự tùy thuộc vào cấu hình phần cứng lúc thực thi Người lập trình không cần quan tâm đến số lượng bộ vi xử lý trong lúc lập trình Điều này có nghĩa là một GPU với nhiều lõi (core) hơn sẽ tự động thực thi chương trình nhanh hơn là GPU với ít

cores như được minh họa trong hình sau

Ngày đăng: 27/07/2017, 20:25

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[3] Aarseth, S. 2003. Gravitational N-Body Simulations. Cambridge University Press Sách, tạp chí
Tiêu đề: Gravitational N-Body Simulations
[1] CUDA homepage http://www.nvidia.com/object/cuda_home_new.html [2] CUDA C Programming Guidehttp://developer.download.nvidia.com/compute/DevZone/docs/html/C/doc/CUDA_C_Programming_Guide.pdf Link
[4] Top500 most powerful known computer systems in the world http://www.top500.org/ Link
[5] Super Computer http://en.wikipedia.org/wiki/Supercomputer [6] Grid Computing http://en.wikipedia.org/wiki/Grid_computing[7]Compute Unified Device Architecture (CUDA)http://en.wikipedia.org/wiki/CUDA Link
[8] General-Purpose Computation on Graphics Hardware http://gpgpu.org/ Link

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w