Tải bản đầy đủ (.pdf) (126 trang)

Giải pháp thiết kế và đánh giá hiệu năng siêu máy tính sử dụng CPU GPU

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (4.05 MB, 126 trang )

LỜI CAM ĐOAN

Với mục đích nghiên cứu, học tập để nâng cao kiến thức và trình độ chuyên
môn nên tôi đã làm luận văn này một cách hoàn toàn nghiêm túc và trung thực.
Trong luận văn, tôi có sử dụng và trích dẫn từ một số tài liệu của các tác giả
khác. Tôi đã nêu trong phần tài liệu tham khảo ở cuối luận văn.
Tôi xin cam đoan và chịu trách nhiệm về nội dung và sự trung thực trong luận
văn tốt nghiệp Thạc sĩ của mình.
Hà Nội, tháng 9 năm 2015
Học viên

Nguyễn Trí Trung

2


LỜI CẢM ƠN
Đầu tiên, tôi xin bày tỏ lòng biết ơn chân thành và xin đƣợc gửi lời cám ơn sâu
sắc nhất đến thầy giáo TS. Nguyễn Kim Khánh, ngƣời đã trực tiếp hƣớng dẫn và
định hƣớng cho tôi giải quyết các vấn đề khó khăn trong khi làm luận văn.
Những kiến thức tôi trình bày trong luận văn này một phần là kết quả của hai
năm tôi có cơ hội học tập chƣơng trình thạc sĩ ở Viện Công nghệ Thông tin, đại học
Bách Khoa Hà Nội. Tôi xin gửi lời cám ơn chân thành đến các thầy cô giáo ở viện
CNTT, phòng Đào tạo sau đại học, ĐHBK Hà Nội đã tạo điều kiện thuận lợi cho tôi
trong thời gian học tập tại trƣờng.
Tôi cũng xin gửi lời cám ơn gia đình, ngƣời thân và bạn bè tôi vì luôn là nguồn
động lực dồi dào giúp tôi có có thể hoàn thành luận văn này.
Hà Nội, tháng 9 năm 2015

3



MỤC LỤC
LỜI CAM ĐOAN .............................................................................................................................. 2
LỜI CẢM ƠN ................................................................................................................................... 3
MỤC LỤC.......................................................................................................................................... 4
LỜI MỞ ĐẦU .................................................................................................................................... 7
DANH MỤC THUẬT NGỮ.............................................................................................................. 8
DANH MỤC HÌNH VẼ BÀNG BIỂU ............................................................................................ 10
CHƢƠNG 1: GIỚI THIỆU ĐỀ TÀI ............................................................................................ 13
1.1.

Nội dung đề tài................................................................................................................ 13

1.2.

Phạm vi đối tƣợng của đề tài ......................................................................................... 13

1.3.

Lý do và mục đích chọn đề tài....................................................................................... 14

CHƢƠNG 2: TỔNG QUAN KIẾN TRÚC GPU ......................................................................... 15
2.1.

Lịch sử GPU.................................................................................................................... 16

2.2.

Kiến trúc GPU ................................................................................................................ 26


2.2.1.

Đƣờng ống dẫn đồ họa (Graphics Pipeline) ......................................................... 27

2.2.2.

Tiến hóa của kiến trúc GPU .................................................................................. 32

2.2.3.

Kiến trúc của GPU hiện đại .................................................................................. 36

2.3.

Tính toán trên GPU ....................................................................................................... 38

2.3.1

Tổng quan về mô hình tính toán trên GPU ......................................................... 38

2.3.2

Cơ chế đa luồng của GPU ...................................................................................... 41

2.3.3

Kiến trúc đa lõi của GPU....................................................................................... 42

2.4.


Tổng kết GPU ................................................................................................................. 47

CHƢƠNG 3: KIẾN TRÚC MÔ HÌNH TÍNH TOÁN CPU-GPU ................................................... 48
3.1

Tổng quan về tính toán đa dụng GPU (GPGPU) ........................................................ 49

3.2

Giới thiệu về mô hình tính toán không đồng nhất CPU+GPU ........................................ 50

3.3

Kiến trúc hệ thống tính toán không đồng nhất CPU-GPU......................................... 52

4


3.3.1.

Kiến trúc tính toán CPU-GPU riêng biệt ............................................................. 52

3.3.2.

Kiến trúc tính toán CPU-GPU hợp nhất .............................................................. 56

3.4

Cơ chế làm việc giữa GPU và GPU trong hệ tính toán không đồng nhất CPU-GPU
59


CHƢƠNG 4: SIÊU MÁY TÍNH VÀ MÔ HÌNH SIÊU MÁY TÍNH SỬ DỤNG KIẾN TRÚC
TÍNH TOÁN CPU-GPU .................................................................................................................. 62
4.1.

Phân loại hệ thống máy tính .......................................................................................... 62

4.2.

Lịch sử ra đời và phát triển của siêu máy tính ............................................................ 66

4.1.1

Thời kì đầu (1960-1969) ......................................................................................... 66

4.1.2

Thời kì sử dụng bộ xử lý vector (1970-1990) ....................................................... 67

4.1.3

Thời kì gần đây (1990-nay).................................................................................... 69

4.3.

Phân loại hệ thống siêu máy tính .................................................................................. 74

4.4.

Hệ thống cụm máy tính.................................................................................................. 77


4.4.1

Phân loại mô hình cụm máy tính .......................................................................... 77

4.4.2

Hệ thống máy tính cụm Beowulf ........................................................................... 78

4.4.3

Hệ thống mạng/cụm máy tính trạm...................................................................... 80

4.5.

Hệ thống siêu máy tính dựa trên mô hình máy tính cụm sử dụng kiến trúc tính toán

CPU-GPU .................................................................................................................................... 81
4.5.1.

Nút máy chủ và nút lƣu trữ, quản lý thiết bị ngoại vi ......................................... 83

4.5.2.

Nút tính toán ........................................................................................................... 83

4.5.3.

Ƣu nhƣợc điểm của hệ thống siêu máy tính cụm Beowulf dựa trên kiến trúc


tính toán CPU-GPU ............................................................................................................... 84
CHƢƠNG 5: THỬ NGHIỆM ĐÁNH GIÁ HIỆU NĂNG KIẾN TRÚC TÍNH TOÁN CPU-GPU 87
5.1.

Sự cần thiết của việc đánh giá hiệu năng hệ thống ..................................................... 87

5.2.

Đánh giá hiệu năng của một nút tính toán trên bài toán tính toán độ dài cạnh huyền

của nhiều tam giác vuông .......................................................................................................... 88
5.2.1.

Đặt vấn đề bài toán ................................................................................................ 88

5


5.2.2.

Thông số cấu hình thử nghiệm .............................................................................. 89

5.2.3.

Kết quả thử nghiệm và đánh giá ........................................................................... 91

5.3.

Đánh giá hiệu năng của một nút tính toán trên bài toán sắp xếp dãy số ................ 102


5.3.1.

Thuật toán sắp xếp dựa trên cơ số ...................................................................... 102

5.3.2.

Thông số cấu hình thử nghiệm ............................................................................ 107

5.3.3.

Kết quả thử nghiệm và đánh giá ......................................................................... 108

5.4.

Đánh giá hiệu năng của một nút tính toán trên bài toán tính nhanh biến đổi Fourier
111

5.4.1.

Biến đổi Fourier rời rạc và giải thuật tính nhanh biến đổi Fourier: ............... 111

5.4.2.

Kết quả thử nghiệm và đánh giá ......................................................................... 113

5.5.

Đánh giá hiệu năng của hệ thống siêu máy tính sử dụng kiến trúc CPU-GPU ...... 120

KẾT LUẬN .................................................................................................................................... 123

TÀI LIỆU THAM KHẢO .............................................................................................................. 125

6


LỜI MỞ ĐẦU
Siêu máy tính đã trở thành thành một phần không thể thiếu trong các lĩnh vực
nghiên cứu khoa học nhƣ nghiên cứu dự báo khí hậu thời tiết, khoa học vật liệu,
v.v... Tuy nhiên việc triển khai xây dựng một hệ thống siêu máy tính tiêu tốn rất
nhiều thời gian và tiền của. Đồng thời làn sóng tính toán đa dụng trên GPU
(GPGPU - General Purpose GPU) mà mô hình kiến trúc tính toán không đồng nhất
CPU-GPU là đại diện ngày càng đem lại nhiều kết quả khả quan trong lĩnh vực tính
toán song song. Với mục đích xây dựng kiến trúc phần cứng cho một hệ thống siêu
máy tính có tỷ lệ hiệu năng trên giá thành cao và kết hợp đƣợc sức mạnh tính toán
song song đồ sộ từ bộ xử lý đồ họa (GPU – Graphic Processing Unit), tôi đã lựa
chọn đề tài “Giải pháp thiết kế và đánh giá hiệu năng siêu máy tính sử dụng CPUGPU”. Đề tài gồm các nội dung chính sau:
1. Tổng quan kiến trúc GPU và kiến trúc mô hình tính toán CPU-GPU: giới
thiệu về lịch sử hình thành và phát triển của các thế hệ GPU, các kiến thức cơ bản
về kiến trúc của GPU cổ điển và GPU hiện đại ngày nay, từ đó đi vào giới thiệu
tổng quan về cơ chế xử lý tính toán trên GPU và mô hình kiến trúc tính toán đa
dụng CPU-GPU.
2. Siêu máy tính và mô hình siêu máy tính sử dụng kiến trúc tính toán CPUGPU: giới thiệu lịch sử các thế hệ siêu máy tính, phân loại các hệ thống siêu máy
tính và đề xuất mô hình siêu máy tính dựa trên mô hình máy tính cụm Beowulf và
kiến trúc tính toán CPU-GPU.
3. Các thử nghiệm đánh giá hiệu năng của một nút tính toán đơn lẻ trong hệ
thống và đánh giá so sánh hiệu năng tính toán của hệ thống siêu máy tính sử dụng
kiến trúc tính toán CPU-GPU và hệ thống siêu máy tính tƣơng đƣơng chỉ sử dụng
CPU.

Ngƣời thực hiện

Nguyễn Trí Trung

7


DANH MỤC THUẬT NGỮ

STT
1
2

Tên

Ý nghĩa

viết tắt
GPU

Graphic Processing Unit – bộ xử lý đồ họa

GPGPU General Purpose GPU- tính toán đa dụng trên GPU

3

CPU

Central Processing Unit – bộ xử lý trung tâm

4


HPC

High Performance Computing – Tính toán hiệu năng lớn

5

TTL

Transitor to Transitor Logic – một loại mạch số hoạt động dựa
trên nguyên lý transitor lƣỡng cực

6

PGA

Professional Graphics Controller – bộ điều khiển đồ họa
chuyên nghiệp

7

PCI

Peripheral Component Interconect - giao diện bus hệ thống của
máy tinh

8

ACP

Accelerated Graphics Port - cổng tăng tốc đồ họa


9

SM

Streaming Multiprocessor – bộ xử dòng lý đa lõi trong kiến
trúc GPU của NVIDIA

10

CUDA

Compute Unified Device Architecture – mô hình lập trình tính
toán đa dụng trên GPU của NVIDIA

11

SIMT

Single Instruction Multiple Thread – cơ chế đơn lệnh đa luồng

12

SIMD

Single Instruction Multiple Data – cơ chế đơn lệnh đa dữ liệu

13

MIMD


Multiple Instruction Multiple Data – cơ chế đa lệnh đa dữ liệu

14

SISD

Single Instruction Single Data – cơ chế đơn lệnh đơn dữ liệu

15

MISD

Multiple Instruction Single Data – cơ chế đa lệnh đơn dữ liệu

16

VGA

Video Graphics Array – chuẩn xử lý đồ họa theo dãy để hiển
thị ra màn hình

17

DMA

Dynamic Memory Access – hoạt động truy cập bộ nhớ trực
tiếp không qua CPU từ các thiết bị ngoại vi

8



18

DPP

Data Parallel Processor Array – dãy bộ xử lý dữ liệu song song
(AMD)

19

VLIW

Very Long Instruction Word – kiến trúc bộ xử lý thiết kế để
tận dụng cơ chế song song tầng chỉ thị lệnh

20

RISC

RISC – Reduce Instruction set computer – kiến trúc bộ xử lý
thiết kế trên tập lệnh rút gọn

21

CU

22

CTA


Computing Unit – đơn vị xử lý tính toán nói chung ở GPU
Co-Operative Thread Array – dãy các luồng có khả năng xử lý
phối hợp với nhau (tƣơng tự nhƣ định nghĩa luồng trong khối
luồng của CUDA)

23

ALU

Arithmetic Logic Unit – là các đơn vị xử lý các phép toán học
và logic

24

DFT

Discrete Fourier Transform – biến đổi Fourier rời rạc

25

FFT

Fast Fourier Transform – tính nhanh biến đổi Fourier rời rạc

26

MTS

Message Transfer System – hệ thống chuyển bản tin


27

GMSP

Global Memory Shared Variables – hệ thống máy tính sử dụng
bộ nhớ toàn cục và chia sẻ biến

28

GMMP Global Memory Message Passing – hệ thống máy tính sử dụng
bộ nhớ toàn cục và trao đổi bản tin

29

DMSP

Distributed Memory Shared Variables – hệ thống máy tính sử
dụng bộ nhớ phân tán và chia sẻ biến

30

DMMP Distributed Memory Message Passing – hệ thống máy tính sử
dụng bộ nhớ phân tán và trao đổi bản tin

31

NOW

Network of Workstations – hệ thống máy tính cụm theo mô

hình mạng các máy trạm

32

COW

Cluster of Workstations – hệ thống cụm các máy trạm

33

SMP

Symmetric Multiprocessing – hệ thống bộ xử lý đa lõi đối
xứng

9


DANH MỤC HÌNH VẼ BÀNG BIỂU
DANH MỤC HÌNH VẼ
Hình 1: Screenshot của game DOOM giữa phiên bản 1 năm 2993 và phiên bản 4 năm 2014 ........ 15
Hình 2: Đƣờng ống dẫn đồ họa cố định chức năng cổ điển ............................................................. 16
Hình 3: Xu hƣớng song song trong đƣờng ống dẫn đồ họa ở những thời điểm đầu ........................ 18
Hình 4: Việc chuyển dần các chức năng trên đƣờng ống dẫn đồ họa cho GPU .............................. 19
Hình 5: Kiến trúc của card GeForce 3 ............................................................................................. 21
Hình 6: Kiến trúc cạc GeForce 6...................................................................................................... 22
Hình 7: Kiến trúc cạc GeForce 8...................................................................................................... 24
Hình 8: Kiến trúc Fermi ................................................................................................................... 25
Hình 9: Kiến trúc của AMD Fusion ................................................................................................. 26
Hình 10: Đƣờng ống dẫn đồ họa ...................................................................................................... 27

Hình 11: Cơ chế tráo đổi giữa hai khung hình của GPU sử dụng bộ đệm đôi ................................. 30
Hình 12: Kiến trúc hợp nhất của GPU (GeForce 8800 với 112 bộ xứ lý dòng) .............................. 32
Hình 13: Shader hợp nhất – Tiến hóa của đƣờng ống dẫn đồ họa ................................................... 35
Hình 14: Sơ đồ khối kiến trúc GPU ................................................................................................. 37
Hình 15: Hệ thống phân cấp bộ nhớ và các đơn vị tính toán ........................................................... 40
Hình 16: Kiến trúc đa luồng của bộ xử lý đa nhân .......................................................................... 43
Hình 17: Sắp xếp cuộn đa luồng SIMT ............................................................................................ 44
Hình 18: Bộ gửi chỉ thị lệnh kép trong kiến trúc Kepler .................................................................. 45
Hình 19: So sánh Sun UltraSPARC T2 với một chip Tesla, 8 Lõi SM .......................................... 46
Hình 20: Mô hình tính toán không đồng nhất CPU+GPU (1) ......................................................... 50
Hình 21: Mô hình tính toán không đồng nhất CPU+GPU (2) ........................................................ 51
Hình 22: Kiến trúc máy tính những năm 1990................................................................................. 53
Hình 23: Sơ đồ khối máy tính với GPU. (a) Sơ đồ khối máy tính với CPU Intel. (b): Sơ đồ
khối máy tính với CPU AMD ........................................................................................................ 53
Hình 24: Liên kết NVLink ............................................................................................................... 56
Hình 25: Sơ đồ khối CPU GPU riêng biệt ....................................................................................... 57
Hình 26: Kiến trúc Fusion của AMD ............................................................................................... 58
Hình 27: Kiến trúc hợp nhất giữa CPU và GPU trên một bảng mạch ............................................. 59
Hình 28: Phƣơng thức hoạt động giữa host và device ..................................................................... 60

10


Hình 29: Lịch trình cho các kịch bản CPU-GPU. (a): đơn luồng, một nhân GPU với một GPU. (b):
đơn luồng, hai nhân GPU với một GPU; (c): đa nhân GPU với nhiều GPU ................................... 61
Hình 30: Mô hình phân loại hệ thống máy tính Flynn-Johnson....................................................... 65
Hình 31: Mô hình phân loại hệ thống máy tính MIMD của Tanenbaum ......................................... 66
Hình 32: Siêu máy tính Cray-1 với thiết kế hình trụ, đảm bảo khoảng cách giữa vi xử lí với
các thành phần khác trong hệ thống là đều nhau ....................................................................... 68
Hình 33: Hệ thống máy tính cụm ..................................................................................................... 76

Hình 34: Phân loại hệ thống máy tính sử dụng bộ nhớ phân tán và trao đổi bản tin của Thomas L.
Sterling ............................................................................................................................................. 77
Hình 35: Kiến trúc hệ thống máy tính cụm ...................................................................................... 78
Hình 36: Mô hình siêu máy tính loại Beowulf sử dụng kiến trúc tính toán CPU-GPU ................... 82
Hình 37: Kiến trúc của nút tính toán trong hệ thống ........................................................................ 84
Hình 38: Màn hình hiển thị lúc chạy chƣơng trình .......................................................................... 91
Hình 39: File dữ liệu của chƣơng trình ............................................................................................ 92
Hình 40: Thời gian xử lý của CPU khi thay đổi số lần lặp lại tính toán và độ dài mảng (1) ........... 93
Hình 41: Thời gian xử lý của CPU khi thay đổi số lần lặp lại tính toán và độ dài mảng (2) ........... 93
Hình 42: Thời gian xử lý của CPU-GPU khi thay đổi độ dài mảng xử lý và số lần lặp lại tính toán
(1) ..................................................................................................................................................... 94
Hình 43: Thời gian tính toán của CPU-GPU khi thay đổi độ dài mảng xử lý và số lần lặp lại tính
toán (2) ............................................................................................................................................. 95
Hình 44: Thời gian xử lý của CPU-GPU khi thay đổi độ dài mảng xử lý và số lần lặp lại tính toán
(2) ..................................................................................................................................................... 96
Hình 45: Tỷ lệ giữa thời gian xử lý của CPU và CPU-GPU khi thay đổi độ dài mảng và số lần lặp
lại tính toán (1) ................................................................................................................................. 98
Hình 46: Tỷ lệ giữa thời gian xử lý của CPU và GPU khi thay đổi độ dài mảng và số lần lặp lại tính
toán (2) ............................................................................................................................................. 98
Hình 47: Thời gian thực thi bài toán trên GPU khi thay đổi kích cỡ khối và lƣới ô khối .............. 100
Hình 48: Tính tổng liền trƣớc trên GPU – giai đoạn 1................................................................... 104
Hình 49: Tính tổng liền trƣớc trên GPU – giai đoạn 2................................................................... 105
Hình 50: Thuật toán sắp xếp dựa trên cơ số trên GPU................................................................... 106
Hình 51: Thời gian sắp xếp mảng theo thuật toán sắp xếp dựa trên cơ số ..................................... 109
Hình 52: Tỷ lệ thời gian xử lý CPU/GPU khi thay đổi độ dài mảng xử lý .................................... 110
Hình 53: Sơ đồ FFT 8 điểm phân chia theo thời gian .................................................................... 113

11



Hình 54: Thời gian tính toán FFT trên CPU và CPU-GPU với mảng một chiều có độ dài là
hàm mũ của 2................................................................................................................................ 114
Hình 55: Thời gian tính toán FFT trên CPU và CPU-GPU với mảng một chiều có độ dài là hàm mũ
của 3 ............................................................................................................................................... 115
Hình 56: Thời gian tính toán FFT trên CPU và CPU-GPU với mảng một chiều có độ dài là hàm mũ
của 5 ............................................................................................................................................... 115
Hình 57: Thời gian tính toán FFT trên CPU và CPU-GPU với mảng một chiều có độ dài là hàm mũ
của 7 ............................................................................................................................................... 116
Hình 58: Thời gian tính toán FFT trên CPU và CPU-GPU với mảng một chiều có độ dài tùy ý .. 116
Hình 59: Thời gian tính toán FFT trên CPU và CPU-GPU với mảng hai chiều có độ dài là hàm mũ
của 2 ............................................................................................................................................... 117
Hình 60: Thời gian tính toán FFT trên CPU và CPU-GPU với mảng hai chiều có độ dài tùy ý ... 118
Hình 61: Thời gian tính toán FFT trên CPU và CPU-GPU với mảng ba chiều có độ dài là hàm mũ
của 2 ............................................................................................................................................... 118
Hình 62: Thời gian tính toán FFT trên CPU và CPU-GPU với mảng ba chiều có độ dài tùy ý .... 119

DANH MỤC BẢNG BIỂU
Bảng 1: So sánh tổng quan giữa CPU và GPU ................................................................................ 48
Bảng 2: Bảng tổng hợp tốc độ tính toán của các mẫu siêu máy tính thời kì 1943-1969 .................. 67
Bảng 3: Bảng tổng hợp tốc độ tính toán của các mẫu siêu máy tính thời kì 1969-1990 .................. 69
Bảng 4: Bảng tổng hợp tốc độ tính toán của các mẫu siêu máy tính thời kì 1995-nay .................... 70
Bảng 5: Thời gian thực hiện bài toán trên CPU với độ dài mảng và số lần lặp lại tính toán thay đổi
.......................................................................................................................................................... 92
Bảng 6: Hiệu thời gian xử lý của GPU trong hai lần chạy đầu tiên ................................................. 95
Bảng 7: Thời gian thực thi bài toán trên CPU-GPU khi thay đổi độ dài mảng và số lần lặp lại tính
toán ................................................................................................................................................... 96
Bảng 8: Tỷ lệ giữa thời gian xử lý của CPU và GPU khi thay đổi độ dài mảng và số lần lặp lại tính
toan ................................................................................................................................................... 97
Bảng 9: Thời gian thực thi bài toán trên CPU-GPU khi thay đổi kích cỡ khối và lƣới ô khối ........ 99
Bảng 10: Thời gian xử lý bài toán sắp xếp dựa trên cơ số khi thay đổi số phần tử mảng đầu vào (1)

........................................................................................................................................................ 109
Bảng 11: Thời gian xử lý bài toán sắp xếp dựa trên cơ số khi thay đổi số phần tử mảng đầu vào (2)
........................................................................................................................................................ 110

12


Giới thiệu đề tài

CHƢƠNG 1: GIỚI THIỆU ĐỀ TÀI

Nội dung đề tài

1.1.

Đề tài bắt đầu bằng việc giới thiệu kiến thức về lịch sử phát triển của GPU từ
kiến trúc nguyên thủy của những chiếc GPU đầu tiên cho đến những thế hệ GPU
hiện đại ngày nay, từ đó giúp cho ngƣời đọc có một mạch kiến thức xuyên suốt để
hiểu rõ nguyên nhân kiến trúc GPU đƣợc thiết kế có tính chất song song cao cấp
cũng nhƣ hƣớng phát triển của kiến trúc GPU trong tƣơng lai gần.
Nội dung chính của đề tài là nghiên cứu giải pháp thiết kế và đánh giá hiệu
năng siêu máy tính sử dụng CPU-GPU, một hệ thống siêu máy tính dựa trên mô
hình máy tính cụm Beowulf và tận dụng kiến trúc tính toán không đồng nhất CPUGPU nhằm đạt mục đích xây dựng một hệ thống siêu máy tính có tỷ lệ hiệu năng
trên chi phí hợp lý. Đề tài đánh giá, so sánh hiệu năng của một hệ thống siêu máy
tính sử dụng kiến trúc CPU-GPU với một hệ thống siêu máy tính tƣơng đƣơng chỉ
sử dụng CPU dựa trên một số thử nghiệm đánh giá hiệu năng của một nút tính toán
sử dụng kiến trúc CPU-GPU trên các bài toán đƣợc trải rộng từ xử lý trên số nguyên
đến xử lý trên số thực dấu phẩy động, từ bài toán có thuật toán đơn giản đến bài
toán có thuật toán tƣơng đối phức tạp.
Phạm vi đối tƣợng của đề tài


1.2.

Hiện nay, việc phát triển các hệ thống siêu máy tính ở Việt Nam vẫn là chuyện
“xƣa nay hiếm” vì quy mô, nguồn lực, trình độ công nghệ và chi phí để phát triển
một hệ thống nhƣ vậy là quá sức đối với phần lớn đơn lẻ các tổ chức, đơn vị ở Việt
Nam.
Mục đích cuối cùng của đề tài này là xây dựng ra một hệ thống siêu máy tính
khả dụng ở Việt Nam với chi phí hợp lý và đảm bảo hiệu năng cho các lĩnh vực
nghiên cứu khoa học nhƣ nghiên cứu khí tƣợng, khoa học vật liệu và quân sự nhƣ
giải mã các bản tin tình báo, v.v… Tuy nhiên việc thiết kế một hệ thống siêu máy
tính bao gồm rất nhiều công đoạn từ thiết kế kiến trúc phần cứng đến kiến trúc

13


Giới thiệu đề tài

mạng kết nối, các giao thức kết nối, hệ điều hành, các giao thức liên lạc trong tính
toán song song, v.v… cần nhiều nguồn lực và thời gian hơn nên đề tài chỉ tập trung
vào mảng thiết kế kiến trúc phần cứng cơ bản tận dụng ƣu điểm của mô hình máy
tính cụm Beowulf và kiến trúc tính toán CPU-GPU rồi đánh giá so sánh hiệu năng
của hệ thống siêu máy tính sử dụng kiến trúc tính toán CPU-GPU và một hệ thống
siêu máy tính tƣơng đƣơng chỉ sử dụng CPU. Đề tài thích hợp với những ngƣời cần
tìm hiểu về kiến trúc tính toán CPU-GPU, tính toán đa dụng GPU hoặc những
ngƣời đang tìm hiểu về siêu máy tính hoặc đang có ý định xây dựng một hệ thống
siêu máy tính mà chƣa biết nên bắt đầu từ đâu.
1.3.

Lý do và mục đích chọn đề tài

Những lợi ích của việc sở hữu một siêu máy tính đối với một trƣờng đại học

hay một quốc gia là không thể chối cãi nhƣng việc xây dựng nên một hệ thống siêu
máy tính lại quá phức tạp, tiêu tốn nhiều chi phí, thời gian và tài nguyên.
Do vậy, việc xây dựng một hệ thống siêu máy tính đảm bảo tỷ lệ giữa hiệu năng
và chi phí ở mức chấp nhận đƣợc là rất quý giá đối với những tổ chức hoặc quốc gia
có nguồn chi phí đầu tƣ giới hạn cho dự án nhƣ chúng ta. Hơn nữa việc sử dụng các
thiết bị thƣơng mại, tối thiểu hóa thiết bị tính toán song song chuyên dụng trong mô
hình tính toán cụm đang chiếm xu thế trong giới công nghệ tính toán hiệu năng cao.
Song song với xu hƣớng này, việc tính toán đa dụng trên GPU cũng đang trở nên dễ
dàng hơn vì các giao diện lập trình cho GPU ngày càng đƣợc phát triển cho mục
đích tính toán đa dụng. Nhận thấy việc kết hợp hai xu thế đang phổ biến đó sẽ tạo
nên một hệ thống siêu máy tính hứa hẹn đem lại hiệu năng cao mà vẫn giữ chi phí
đầu tƣ ở mức phù hợp nên tôi đã lựa chọn đề tài “Giải pháp thiết kế và đánh giá
hiệu năng siêu máy tính sử dụng kiến trúc CPU-GPU”. Tôi hi vọng những kiến thức
và kết quả thí nghiệm cũng những đánh giá trong đề tài của tôi sẽ làm tiền đề giúp
cho những ngƣời quan tâm nhận thấy đƣợc việc xây dựng một hệ thống siêu máy
tính là hoàn toàn cần thiết và khả thi đối với ngƣời Việt Nam chúng ta.

14


Tổng quan kiến trúc GPU

CHƢƠNG 2: TỔNG QUAN KIẾN TRÚC GPU
GPU là bộ vi xử lý chuyên dụng song song cao cấp để giảm tải và tăng tốc cho
việc tái tạo lại không gian 2D, 3D cho đơn vị xử lý trung tâm (CPU). GPU đƣợc
triển khai ở nhiều thiết bị khác nhau từ máy tính bàn tới laptop, điện thoại di động
cho đến các siêu máy tính.
Kiến trúc GPU đã phát triển nhanh trong những năm gần đây, một phần do yêu

cầu về xử lý đồ họa ngày càng cao. Nhu cầu về việc xử lý đồ họa của các trò chơi ở
máy tính hiện đại và các công cụ giả lập khoa học tăng trƣởng đều đặn trong 2 thập
niên gần đây. Tuy nhiên tốc độ và độ sâu của sự phát triển của GPU trong những
năm gần đây cũng bị ảnh hƣởng bởi nhu cầu sử dụng GPU cho mục đích tính toán
đa dụng.

Hình 1: Screenshot của game DOOM giữa phiên bản 1 năm 2993 và phiên
bản 4 năm 2014
Kiến trúc GPU đã thay đổi rất nhiều, đầu tiên chỉ gồm một nhân duy nhất với
các bộ phận cố định chức năng theo theo dạng đƣờng ống dẫn (Graphics Pipeline)
đƣợc thiết kế riêng cho việc xử lý đồ họa cho đến kiến trúc hiện nay gồm một tập
các nhân song song cao cấp hỗ trợ lập trình do đó trở nên thích hợp hơn cho mục
đích tính toán đa dụng. Công nghệ của GPU sẽ phát triển theo hƣớng tiếp tục tích
hợp thêm các nhân song song cao cấp lập trình đƣợc vào kiến trúc. Hƣớng phát triển

15


Tổng quan kiến trúc GPU

này đã làm ranh giới về vai trò giữa CPU và GPU trở nên mờ nhạt hơn, giúp cho
GPU hƣớng về mục đích tính toán hơn, gần với vai trò của CPU hơn.
2.1.

Lịch sử GPU
GPU nguyên thủy dựa trên mô hình đƣờng ống dẫn đồ họa. Đƣờng ống dẫn đồ

họa là một mô hình khái niệm các tầng/lớp mà dữ liệu đồ họa đi qua và thƣờng triển
khai dựa trên sự kết hợp giữa phầm mềm CPU (OpenGL, DirectX) và phần cứng
GPU (nhân GPU). Cách tiếp cận dựa trên thiết kế mô hình đƣờng ống dẫn đồ họa

này tƣơng đối đồng bộ giữa phần lớn các nhà sản xuất GPU nhƣ NVIDIA, ATI,
v.v… và giúp đẩy nhanh sự thừa nhận công nghệ GPU.
Đƣờng ống dẫn chỉ đơn giản nhằm mục đích chuyển không gian 3D (đƣợc tạo
ra bởi ngƣời lập trình) vào không gian 2D trên màn ảnh. Về mặt cơ bản nó là dòng
tái tạo rất nhiều giai đoạn của các hoạt động lên các pixel, tam giác và có thể đƣợc
phân loại thành 2 giai đoạn chính: hình học và tái tạo ảnh. Chi tiết về đƣờng ống
dẫn đồ họa sẽ đƣợc trình bày ở mục 2.2.1.

Hình 2: Đƣờng ống dẫn đồ họa cố định chức năng cổ điển

16


Tổng quan kiến trúc GPU

Các GPU đời đầu thƣờng chỉ triển khai giai đoạn tái tạo ảnh ở phần cứng của
GPU và do đó CPU phải tạo ra các tam giác hình học để GPU làm việc trên đó. Với
việc phát triển trong công nghệ GPU, các giai đoạn ngày càng đƣợc triển khai trực
tiếp trên phần cứng của GPU từ đó giải phóng tài nguyên của CPU.
2.1.1.

1980

Quay trở về những năm 1980, GPU ở thời điểm đó chỉ là những bộ đệm tích
hợp. Chúng chỉ là những bảng mạch logic TTL dựa trên CPU và chỉ có thể vẽ các
khung dây để tái tạo kết cấu [7]. Thuật ngữ “GPU” chƣa đƣợc sử dụng cho đến năm
1999 bởi NVIDIA nhƣng để đảm bảo tính đồng bộ của bài viết nên từ GPU sẽ đƣợc
sử dụng xuyên suốt bài viết.
Bộ điều khiển đồ họa chuyên nghiệp IBM (PGA) là một trong những cạc đồ
họa 2D/3D đầu tiên cho PC. PGA sử dụng chip Intel 8088 tích hợp trên bo mạch

chủ để xử lý toàn bộ các yêu cầu liên quan đến hình ảnh, giải phóng CPU khỏi việc
xử lý hình ảnh (ví dụ nhƣ việc vẽ và tô màu cho các đa giác) [7]. Vì thời điểm ra đời
vào năm 1984, mƣời năm trƣớc khi các thiết bị tăng tốc xử lý 2D/3D đƣợc chuẩn
hóa và với cái giá không hề rẻ 5500$ cùng với sự hạn chế trong tƣơng thích với các
hệ thống ngoài IBM vào thời điểm đó đã dẫn đến một kết quả tất yếu là PGA không
thể đạt đƣợc thành công trong việc chiếm lĩnh thị trƣờng. Tuy nhiên sự ra đời của
PGA đã đánh dấu một bƣớc tiến lớn trong công nghệ phát triển GPU khi việc xử lý
đồ họa lần đầu đƣợc tách ra xử lý trên một đơn vị xử lý riêng.
Vào năm 1987, các GPU đời đầu đƣợc tích hợp thêm các chức năng mới nhƣ
khối đổ bóng, ánh sáng đỉnh, tái tạo kết cấu cho các đa giác và bộ đệm chiều sâu
pixel và trộn màu. Tuy nhiên vẫn còn nhiều tác vụ tính toán đƣợc chia sẻ với CPU.
Vào cuối thập niên 1980, Công ty đồ họa Silicon (SGI) đƣợc thành lập với tƣ
cách một công ty phần mềm và phần cứng đồ họa máy tính hiệu suất cao. SGI giới
thiệu OpenGL vào 1989, và từ đó đƣợc biết đến nhƣ một giao diện lập trình ứng
dụng 2D/3D không phụ thuộc vào nền tảng phần cứng, đƣợc sử dụng và hỗ trợ
nhiều nhất trong nền công nghiệp đồ họa. Việc hỗ trợ OpenGL trở thành vấn đề rắc

17


Tổng quan kiến trúc GPU

rối nhất trong việc thiết kế một phần cứng đồ họa hiện đại. Đồng thời SGI cũng là
ngƣời tiên phong trong việc đƣa ra khái niệm đƣờng ống dẫn đồ họa.
2.1.2.

Thế hệ 0

Phần cứng GPU và đƣờng ống dẫn đồ họa bắt đầu hình thành vào năm 1993 khi
SGI tung ra bảng mạch RealityEngine cho việc xử lý đồ họa. RealityEngine bao

gồm các bảng mạch và các chip logic khác nhau cho các giai đoạn khác nhau trong
đƣờng ống dẫn đồ họa nhƣng nửa đầu của đƣờng dẫn vẫn là công việc của CPU. Dữ
liệu di chuyển trong đƣờng ống dẫn có luồng cố định qua các trạng thái.
Giữa những năm 1990, cạc SGI đƣợc triển khai chủ yếu trên các máy trạm,
trong khi đó các nhà sản suất thiết bị đồ họa 3D nhƣ 3DFX (Voodoo), NVIDIA
(TNT), ATI (Rage) và Matrox đã bắt đầu cung cấp cho ngƣời tiêu dùng các bảng
mạch đồ họa 3D. Sự kết hợp giữa phần cứng rẻ hơn và các game nhƣ Quake và
Doom đã thúc đẩy ngành công nghiệp game và sự thừa nhận GPU.

Hình 3: Xu hƣớng song song trong đƣờng ống dẫn đồ họa ở những thời
điểm đầu

18


Tổng quan kiến trúc GPU

Kể cả với những đƣờng ống dẫn đồ họa tốt nhất ở thời điểm đó thì các GPU đời
đầu chỉ có thể tạo ra một pixel một chu kì đồng hồ, điều đó có nghĩa là CPU có thể
gửi nhiều tam giác tới GPU hơn khả năng xử lý của GPU. Điều đó đã dẫn đến nhu
cầu tạo ra nhiều đƣờng dẫn song song tới GPU (và cuối cùng là thêm nhân trong
kiến trúc GPU) để nhiều pixel có thể cùng đƣợc xử song song trong một chu kì
đồng hồ.
2.1.3.

Thế hệ 1

Voodoo 3dfx là cạc đồ họa 3D thật sự đầu tiên và nó chỉ tăng tốc xử lý 3D do
đó bạn vẫn cần một bộ tăng tốc xử lý 2D. Cạc hoạt động trên đƣờng bus PCI, có 1
triệu bán dẫn, 4 MB DRAM 64 bit, xung đồng hồ hoạt động ở tần số 50 MHz, CPU

vẫn phải xử lý chuyển hóa đỉnh, trong khi đó Voodoo sẽ thực hiện việc tạo bản đồ
kết cấu, z-buffering và việc tái tạo kết cấu [7].
2.1.4.

Thế hệ 2

Trong năm 1999, với việc giới thiệu NVIDIA Geford 256 và ATI Radeon 7500,
giới tiêu dùng lần đầu tiên đƣợc sử dụng các GPU đúng nghĩa, cho phép triển khai
toàn bộ đƣờng ống dẫn đồ họa ở phần cứng của GPU đƣợc phát hành.

Hình 4: Việc chuyển dần các chức năng trên đƣờng ống dẫn đồ họa cho
GPU
19


Tổng quan kiến trúc GPU

Cho đến tận năm 1999, thuật ngữ GPU vẫn chƣa thực sự tồn tại và NVIDIA đã
sáng tạo ra thuật ngữ này khi cho ra đời mẫu Geford 256. Geford 256 có 23 triệu
bán dẫn, 32 MB DRAM 128 bit, xung đồng hồ ở tần số 120MHz. và có 4 đƣờng
dẫn 64 bit để tái tạo kết cấu [7].
Thế hệ cạc này là thế hệ đầu tiên sử dụng cổng tăng tốc đồ họa (AGP) thay cho
bus PCI và cung cấp thêm các chức năng mới nhƣ bản đồ bump, bản đồ ánh sáng và
chuyển đổi hình học ở phần cứng và xử lý ánh sáng.
Đƣờng ống dẫn đồ họa đầu tiên trong phần cứng đƣợc biết đến nhƣ đƣờng ống
dẫn cố định chức năng vì một khi ngƣời lập trình gửi dữ liệu đồ họa tới đƣờng dẫn
GPU thì dữ liệu không thể chỉnh sửa.
Với những chiếc cạc này, thị trƣờng phần cứng GPU và trò chơi máy tính thực
sự đƣợc khai phá, Trong khi tốc độ đƣợc cải thiện nhƣng vấn đề chính lại nằm ở
việc cố định chức năng ở mô hình đƣờng ống dẫn đồ họa tạo nên sự thiếu linh động

trong các hiệu ứng đồ họa. Vì bộ các chức năng đƣợc định nghĩa bởi giao diện lập
trình ứng dụng OpenGL và DirectX đƣợc triển khai ở phần cứng, do đó khi các
chức năng mới đƣợc thêm vào giao diện lập trình ứng dụng đồ họa thì các phần
cứng cố định chức năng sẽ không thể tận dụng đƣợc các ƣu điểm của các chức năng
mới.
2.1.5.

Thế hệ 3

Vào năm 2001, NVIDIA phát hành GeForce 3 cho phép lập trình viên có thể lập
trình đƣợc những giai đoạn ở đƣờng ống dẫn đồ họa mà trƣớc đây chƣa hỗ trợ, đánh
dấu bƣớc phát triển tiếp theo trong công nghệ GPU. Thay vì việc gửi tất cả dữ liệu
mô tả đồ họa cho GPU và đơn giản cho nó đi qua các đƣờng dẫn cố định thì nay lập
trình viên có thể gửi dữ liệu này cùng với các “phần mềm ngắn” (gọi là shader) để
hoạt động trên dữ liệu trong đƣờng dẫn.

20


Tổng quan kiến trúc GPU

Các phần mềm này có thể gọi là các nhân nhỏ (kernel), đƣợc viết trên các ngôn
ngữ tƣơng tự nhƣ ngôn ngữ assembly. Đây là một cải tiến mới nên chỉ có thể lập
trình giới hạn ở giai đoạn xử lý đỉnh của đƣờng ống dẫn. Các cạc đồ họa khác thịnh
hành ở thời điểm này là ATI Radeon 8500 và Microsoft Xbox.

Hình 5: Kiến trúc của card GeForce 3
GeFord 3 có 57 triệu bán dẫn, 64 MB DDR DRAM 128 bit và có xung đồng hồ
là 120MHz [7].
2.1.6.


Thế hệ 4

Một năm sau đó, năm 2002, cạc đồ họa đầu tiên hỗ trợ lập trình toàn phần đƣợc
tung ra thị trƣờng: NVIDIA Geforce FX, ATI Radeon 9700. Cạc này cho phép xử lý
từng pixel với các đổ bóng đỉnh và pixel (phân mảnh) hỗ trợ lập trình và cho phép
một lƣợng ánh xạ giữa dữ liệu đầu vào và đầu ra nhất định đƣợc định nghĩa bởi
ngƣời sử dụng. Ngoài ra, phần cứng chuyên biệt cũng đƣợc gán cho việc đổ bóng
đỉnh và pixel.
Cạc đồ họa GeForce FX có 80 triệu bán dẫn, 128 MB DDR DRAM 128 bit và
xung đồng hồ 400MHz [7]. Năm 2003, cơn sóng tính toán trên nền GPU đầu tiên
đƣợc hình thành với việc giới thiệu DirectX 9, bằng cách tận dụng khả năng lập
trình đƣợc của phần cứng GPU nhƣng cho dữ liệu không phải đồ họa. Việc hỗ trợ

21


Tổng quan kiến trúc GPU

phép toán dấu phẩy động và xử lý kết cấu cấp cao bắt đầu đƣợc cung cấp ở các cạc
đồ họa ở thời điểm này.
2.1.7.

Thế hệ 5

Ở thời điểm này, tốc độ phát triển công nghệ GPU tăng mạnh, vƣợt hẳn so với
quy luật của Moore [7]. Năm 2004, cạc GeForce 6 và Radeon X800 đƣợc phát hành
và là một trong những cạc đầu tiên sử dụng đƣờng bus PCI-express. Về mặt phần
mềm, các ngôn ngữ GPU nhƣ Brook và Sh bắt đầu xuất hiện, cho phép thực sự điều
khiển đƣợc các nhánh điều kiện và vòng lặp và dòng động ở các ứng dụng đổ bóng.

Về mặt phần cứng, độ chính xác cũng đƣợc nâng cao (hỗ trợ độ chính xác kép 64
bit), bộ đệm kết xuất đồ họa, kích thƣớc bộ nhớ GPU đƣợc tăng thêm và truy nhập
kết cấu đƣợc giới thiệu.

Hình 6: Kiến trúc cạc GeForce 6
Chiếc cạc GeForce 6 đầu tiên có 146 triệu bán dẫn, 256 MB GDDR3 DRAM
256 bit, và xung đồng hồ 500MHz [7].

22


Tổng quan kiến trúc GPU

Khi nhìn GPU theo kiến trúc một đƣờng ống dẫn đồ họa thì GPU bao gồm: một
engine đỉnh, một engine phân mảnh, engine kết cấu, engine ghi-trộn dữ liệu, so sánh
dữ liệu. Khi nhìn GPU nhƣ một bộ xử lý cho các ứng dụng không về đồ họa thì
GPU có thể đƣợc coi là một động cơ có mã lực lớn trong việc xử lý các phép toán
dấu phẩy động lập trình đƣợc và độ rộng băng nhớ có thể đƣợc tận dụng cho các
ứng dụng tính toán phức tạp hoàn toàn không liên quan đến đồ họa máy tính. Từ đó
xu hƣớng tính toán trên GPU bắt đầu đƣợc nhen nhóm.
2.1.8.

Thế hệ 6

Việc giới thiệu seri NVIDIA GeForce 8 vào năm 2006 đánh dấu bƣớc tiếp theo
trong sự phát triển của GPU: mở ra vai trò mới của GPU nhƣ một bộ xử lý song
song đồ sộ.
Kiến trúc G80 (GeForce 8800) là kiến trúc đầu tiên có các chƣơng trình shader
hỗ trợ lập trình, hợp nhất tức là một bộ xử lý hợp hỗ trợ lập trình gọi là Streaming
Multiprocessor - Lõi dòng đa nhân hoặc SM, có thể giải quyết việc tính toán đỉnh,

pixel và hình học, đồng thời cũng tích hợp shader hình học mới, khả năng hỗ trợ lập
trình đƣợc mở rộng khi kết hợp shader đỉnh và shader pixel. Với thiết kế phần cứng
shader hợp nhất, mô hình đƣờng ống dẫn đồ họa nay thuần túy nay chỉ còn là một
cách nhìn phần mềm trừu tƣợng.
Cạc GeForce 8 đầu tiên có 681 triệu bán dẫn, 768 MB GDDR3 DRAM 384 bit
và xung đồng hồ 600MHz [7].
Để khai thác tất cả sức mạnh cho việc tính toán đa dụng của GPU, NVIDIA
tung ra ngôn ngữ lập trình CUDA cho riêng sản phẩm của NVIDIA. Không lâu sau,
ngôn ngữ ATI Stream cho card ATI và DirectX 10 cho cả 2 loại cạc cũng đƣợc giới
thiệu.

23


Tổng quan kiến trúc GPU

Hình 7: Kiến trúc cạc GeForce 8
2.1.9.

Thế hệ 7

Theo xu hƣớng đồng hóa với CPU, các nhân GPU lập trình đƣợc với sự phát
hành kiến trúc Fermi của NVIDIA. Đƣợc giới thiệu vào cuối năm 2009, và đƣợc
phát hành vào đầu năm 2010, GPU Fermi đƣợc coi là chiếc GPU đầu tiên đƣợc thiết
kế cho nhu cầu tính toán GPGPU, đem đến các chức năng mới nhƣ: phân cấp bộ
đệm thực sự, khoảng địa chỉ bộ nhớ thống nhất, việc thực thi các kernel đồng thời,
hiệu suất thực hiện các phép toán có độ chính xác kép tốt hơn và bộ sắp xếp cuộn
đôi. Fermi GTX480 có tổng cộng 480 nhân CUDA (15 luồng đa xử lý dòng x 32
nhân CUDA mỗi dòng) [25].


24


Tổng quan kiến trúc GPU

Hình 8: Kiến trúc Fermi
Chiếc cạc Fermi đầu tiên có 3 tỷ bán dẫn, 1.5 GB GDDR5 DRAM 384 bit và có
xung đồng hồ 700 MHz [25].
2.1.10. Từ 2010 trở đi
Gần đây, vào cuối năm 2010, NVIDIA phát hành cạc đồ họa cho game thủ trên
nền Fermi, GTX 580, thêm một nhân SM (tổng cộng số nhân CUDA tăng lên 512)
và mở rộng băng thông bộ nhớ thêm một chút [7].
Công cuộc phát triển GPU đã đi từ một thiết bị phần cứng cố định chức năng,
đơn nhân và dựa trên mô hình đƣờng ống dẫn đồ họa và dành riêng cho mục đích
xử lý đồ họa nay đã trở thành một tập các nhân song song cấp cao lập trình đƣợc
cho các mục đích tính toán chung. Hiện nay, kiến trúc đa nhân của GPU có rất
nhiều điểm tƣơng đồng với các CPU cho mục đích tính toán chung. Fermi có thể coi
nhƣ một CPU 16 lõi với 32 siêu đƣờng dẫn mỗi nhân với độ dài của một vector lớn.
25


Tổng quan kiến trúc GPU

Gần đây, AMD công bố dòng Fusion của CPU+GPU trên cùng 1 khuôn mạch
(APU lồng, đơn vị tăng tốc xử lý), đƣợc phát hành vào năm 2011. APU của AMD
đƣợc thiết kế để một bộ xử lý x86 chuẩn cho việc tính toán vô hƣớng và DX11 GPU
cho việc tính toán vector đƣợc đặt chung trên 1 khuôn mạch [3].

Hình 9: Kiến trúc của AMD Fusion
Bộ xử lý Larrabee của Intel cũng mang đến nhiều nhân x86 nhỏ hơn trên cùng

một khuôn đơn. CPU Intel SandyBridge cũng tích hợp một GPU và cùng chia sẻ bộ
nhớ đệm L3 [35].
Với sự phát triển mạnh mẽ trong kiến trúc GPU nhƣ vậy làm dấy lên câu hỏi:
nếu việc tích hợp CPU-GPU là xu hƣớng, vậy thì loại thiết bị cố định chức năng
trên GPU có tồn tại nữa không? Có cần có sự phân biệt giữa CPU và GPU nữa
không? Các ngôn ngữ lập trình tƣơng lai có khả năng trừu tƣợng hóa GPU nhƣ bộ
xử lý đa nhân cho các ứng dụng không?
2.2.

Kiến trúc GPU
GPU luôn luôn là một bộ xử lý dƣ thừa tài nguyên tính toán. Tuy nhiên phải

đến gần đây việc giúp cho các lập trình viên có thể tận dụng đƣợc khả năng tính
toán đó mới đƣợc chú ý. Trong một thời gian ngắn, GPU đã phát triển từ một thiết

26


×