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

Ứng dụng tính toán song song màu hóa ảnh

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 (888 KB, 88 trang )

MỤC LỤC
MỤC LỤC ....................................................................................................................... 1
Tóm tắt luận văn .............................................................................................................. 1
Lời cảm ơn ....................................................................................................................... 2
Lời cam đoan ................................................................................................................... 3
Danh mục các ký hiệu, chữ viết tắt ................................................................................. 4
Danh mục các bảng biểu.................................................................................................. 5
Danh mục các hình vẽ, đồ thị .......................................................................................... 6
PHẦN MỞ ĐẦU ............................................................................................................. 8
1. Lý do chọn đề tài ...................................................................................................... 8
2. Ý nghĩa, mục đích của đề tài .................................................................................... 8
3. Đối tượng và phạm vi nghiên cứu ............................................................................ 9
3.1. Đối tượng nghiên cứu ........................................................................................ 9
3.2. Phạm vi nghiên cứu ........................................................................................... 9
4. Phương pháp nghiên cứu.......................................................................................... 9
5. Phương tiện nghiên cứu ......................................................................................... 10
6. Ý nghĩa khoa học và thực tiễn của đề tài ............................................................... 10
7. Những vấn đề sẽ giải quyết .................................................................................... 10
8. Kết quả đạt được .................................................................................................... 10
9. Bố cục của luận văn ............................................................................................... 11
NỘI DUNG.................................................................................................................... 12
CHƯƠNG 1: TỔNG QUAN VỀ TÍNH TỐN SONG SONG .................................... 12
1.1.

Khái niệm "Tính tốn song song" .................................................................... 12

1.2.

Lý do phải tính tốn song song? ...................................................................... 12

1.3.



Lịch sử của tính tốn song song ....................................................................... 15


1.4.

Định luật Amdahl ............................................................................................. 17

1.5.

Tính tốn song song trên card đồ họa (GPU) .................................................. 19

CHƯƠNG 2: TỔNG QUAN VỀ KIẾN TRÚC XỬ LÝ SONG SONG CUDA ........... 22
2.1.

Giới thiệu kiến trúc CUDA .............................................................................. 22

2.2.

Kiến trúc phần cứng ......................................................................................... 23

2.2.1.

Thế hệ thứ nhất: Kiến trúc G80 ................................................................. 24

2.2.2.

Thế hệ thứ hai: Kiến trúc GT200 .............................................................. 25

2.2.3.


Thế hệ thứ ba: Kiến trúc Fermi ................................................................. 25

2.2.4.

Thế hệ thứ tư: Kiến trúc Kepler ................................................................ 28

2.2.5.

So sánh các kiến trúc ................................................................................. 30

2.3.

Cấu trúc logic trong lập trình CUDA ............................................................... 30

2.4.

Cơ chế phân cơng cơng việc ............................................................................ 32

2.5.

Cấu trúc lưu trữ, truy xuất dữ liệu bộ nhớ trong lập trình CUDA ................... 34

2.5.1.

2.5.1.1.

Bộ nhớ Global .................................................................................... 35

2.5.1.2.


Bộ nhớ const ....................................................................................... 38

2.5.1.3.

Bộ nhớ CUDA array ........................................................................... 39

2.5.2.
2.6.

Bộ nhớ toàn cục ......................................................................................... 35

Bộ nhớ cục bộ và bộ nhớ dùng chung ....................................................... 41

Lập trình ứng dụng CUDA mở rộng với C/C++ ............................................. 44

2.6.1.

Mở rộng với ngôn ngữ lập trình C ............................................................ 44

2.6.2.

Biên dịch với NVCC (Nvidia’s CUDA Compiler) ................................... 45

2.6.3.

Từ khóa phạm vi kiểu hàm và kiểu biến ................................................... 46

2.6.4.


Các ràng buộc ............................................................................................ 48

2.6.5.

Thực hiện cấu hình .................................................................................... 49

2.6.6.

Các biến built-in và vector built-in ........................................................... 49

2.6.7.

Hàm đồng bộ ............................................................................................. 50


2.6.8.

Các hàm chuyển đổi kiểu .......................................................................... 51

2.6.9.

Các hàm ép kiểu ........................................................................................ 51

2.6.10. Hàm thời gian ............................................................................................ 52
2.6.11. Các hàm kết cấu ........................................................................................ 52
2.7.

Các chương trình mẫu ...................................................................................... 54

2.7.1.


Cách xây dựng một chương trình CUDA đơn giản bằng Visual Studio ... 54

2.7.2.

Cộng ma trận ............................................................................................. 55

2.7.3.

Sàng số nguyên tố ..................................................................................... 57

CHƯƠNG 3: ỨNG DỤNG TÍNH TỐN SONG SONG TRÊN GPU TRONG MÀU
HĨA ẢNH ..................................................................................................................... 59
3.1.

Thuật tốn màu hóa ảnh ................................................................................... 59

3.1.1.

Bài toán AX=B .......................................................................................... 64

3.1.2.

Một số phương pháp giải bài toán AX=B ................................................. 66

3.2.

3.1.2.1.

Phương pháp khử Gauss (Gaussian Elimination) .............................. 66


3.1.2.2.

Phương pháp khử Gauss-Jordan (Gauss-Jordan Elimination) ........... 68

Cài đặt thuật toán ............................................................................................. 69

3.2.1.

Cài đặt thuật toán khử Gauss .................................................................... 69

3.2.1.1. Cài đặt thuật toán trên CPU ...................................................................... 69
3.2.1.2. Cài đặt thuật toán trên GPU ...................................................................... 70
3.2.2.

Giới thiệu thư viện ViennaCL ................................................................... 71

3.2.3.

Sử dụng thư viện ViennaCL để giải bài toán Ax=b và áp dụng vào thuật

tốn màu hóa ảnh .................................................................................................... 72

3.3.

3.2.3.1.

Sử dụng thư viện ViennaCL chạy GPU ............................................. 72

3.2.3.2.


Sử dụng thư viện CSparse chạy CPU ................................................. 75

Thử nghiệm ...................................................................................................... 75

3.3.1.

Môi trường thử nghiệm ............................................................................. 75

3.3.2.

Kết quả thử nghiệm ................................................................................... 76


3.3.2.1.

So sánh thời gian thực hiện thuật toán khử Gauss (Gaussian

Elimination) trên CPU và GPU ........................................................................... 76
3.3.2.2.

So sánh thời gian thực hiện trên CPU với thư viện CSparse và GPU

với thư viện ViennaCL ........................................................................................ 76
3.3.3.

Kết luận ..................................................................................................... 79

PHỤ LỤC ...................................................................................................................... 80
Phụ lục 1: Code chương trình cộng ma trận .............................................................. 80

Phụ lục 2: Code chương trình sàng số nguyên tố....................................................... 81
Phụ lục 3: Kiểm tra GPU ........................................................................................... 81
DANH MỤC TÀI LIỆU THAM KHẢO ...................................................................... 84


.

Tóm tắt luận văn

Họ và tên học viên: Đỗ Bảo Sơn
Chuyên ngành: Công Nghệ Thông Tin
Cán bộ hướng dẫn: TS. Lã Thế Vinh
Tên đề tài: Ứng dụng tính tốn song song trong màu hóa ảnh.
Tóm tắt: Nghiên cứu tổng quan về tính tốn song song; các đặc trưng về phần
cứng và phần mềm của cơng nghệ tính tốn song song CUDA trên GPU; ngơn ngữ lập
trình sử dụng trong tính toán song song CUDA; Phương pháp xây dựng bài toán song
song trên GPU từ bài toán tuần tự; Phương pháp màu hóa ảnh số thực hiện trên ảnh
tĩnh. Xây dựng ứng dụng màu hóa ảnh dựa trên cơng nghệ tính toán song song.
Nội dung luận văn
Chương 1: Tổng quan về tính tốn song song
Tìm hiểu khái niệm, đặc điểm của tính tốn song song nói chung và tính tốn
song song trên card đồ họa nói riêng.
Chương 2: Tổng quan về kiến trúc xử lý song song CUDA
Tìm hiểu kiến trúc phần cứng CUDA
Tìm hiểu mơ hình bộ nhớ CUDA
Tìm hiểu ngơn ngữ lập trình dung trong CUDA
Chương 3: Ứng dụng tính tốn song song trong màu hóa ảnh
Phân tích kỹ thuật màu hóa ảnh số.
Xây dựng ứng dụng tính tốn song song để màu hóa ảnh số, đánh giá các kết
quả đã đạt được


Trang 1


.

Lời cảm ơn
Trong thời gian nghiên cứu và thực hiện luận văn này, tôi đã nhận được sự giúp đỡ
nhiệt tình của các cơ quan, các tổ chức và các cá nhân. Tôi xin bày tỏ lời cảm ơn sâu
sắc nhất tới tất cả các tập thể, cá nhân đã tạo điều kiện giúp đỡ tơi trong suốt q trình
thực hiện nghiên cứu luận văn này.
Lời đầu tiên, tôi xin bày tỏ lòng biết ơn sâu sắc nhất tới thầy giáo Lã Thế Vinh,
người thầy đã trực tiếp quan tâm và tận tình hướng dẫn giúp tơi hồn thành luận văn
này.
Tôi xin bày tỏ lời cảm ơn chân thành tới các thầy, cô giáo, cán bộ trong trường Đại
học Bách khoa Hà Nội đã tạo điều kiện thuận lợi và nhiệt tình giúp đỡ cho tơi trong
thời gian học tập tại trường.
Xin chân thành cảm ơn tất cả các bạn bè, đồng nghiệp đã động viên, giúp đỡ nhiệt
tình và đóng góp nhiều ý kiến q báu để tơi hồn thành luận văn này.
Tơi xin tỏ lịng biết ơn sâu sắc tới gia đình đã ni nấng, ln là chỗ dựa vững
chắc cho tơi, kịp thời động viên, khích lệ, giúp đỡ tơi vượt qua những khó khăn trong
cuộc sống.
Do thời gian nghiên cứu có hạn, luận văn của tơi chắc hẳn khơng thể tránh khỏi
những sơ suất, thiếu sót, tơi rất mong nhận đuợc sự đóng góp của các thầy cơ giáo
cùng tồn thể bạn đọc.
Xin chân thành cảm ơn!
Hà Nội, tháng 9 năm 2016
Tác giả luận văn
Đỗ Bảo Sơn


Trang 2


.

Lời cam đoan
Tơi xin cam đoan đây là cơng trình nghiên cứu của bản thân, được xuất phát từ
yêu cầu phát sinh trong cơng việc để hình thành hướng nghiên cứu. Các số liệu có
nguồn gốc rõ ràng tuân thủ đúng nguyên tắc và kết quả trình bày trong luận văn được
thu thập trong quá trình nghiên cứu là trung thực chưa từng được ai công bố trước đây.
Tôi xin cam đoan rằng mọi sự giúp đỡ cho việc thực hiện luận văn đã được cám
ơn, các thơng tin trích dẫn trong luận văn này đều được chỉ rõ nguồn gốc.
Hà Nội, tháng 9 năm 2016
Tác giả luận văn
Đỗ Bảo Sơn

Trang 3


.

Danh mục các ký hiệu, chữ viết tắt
Từ viết tắt Tiếng Việt

Tiếng Anh

ALU

Bộ tính tốn số học logic


Arithmetic Logic Unit

API

Giao diện chương trình ứng

Application Program Interface

dụng
CPU

Bộ xử lý trung tâm

Central Processing Unit

CTM

Kiến trúc tính tốn song song

Close to Metal

của AMD
CUDA

DP

Kiến trúc thiết bị thống nhất cho

Compute Unified Device


tính tốn của Nvidia

Architecture

Bộ tính tốn dấu chấm động độ

Double precision processor

chính xác kép
DRAM

Bộ nhớ truy cập ngẫu nhiên

Dynamic random access memory

động
Flops

FPU

Đơn vị đo số thao tác dấu chấm

Floating point operations per

động trong một giây

second

Bộ tính tốn số thực dấu chấm


Floating point unit

động
GPGPU

Tính toán đa năng trên GPU

General purpose graphics
processing unit

GPU

Bộ xử lý đồ họa

Graphics processing unit

NVCC

Trình biên dịch CUDA

Nvidia’s CUDA compiler

SDK

Bộ phát triển phần mềm

Software development kit

SFU


Bộ tính tốn hàm chức năng đặc

Special function unit

biệt
SIMD

Đơn lệnh đa dữ liệu

Single instruction multiple data

SM

Bộ xử lý đa luồng

Streaming multiprocessor

SMX

Bộ xử lý đa luồng thế hệ mới

Next Generation Streaming
Multiprocessor

SP

Bộ xử lý luồng

Streaming processor


TPC

Cụm xử lý luồng trong CUDA

Thread Processing Clusters

Trang 4


.

Danh mục các bảng biểu
Bảng 2.1. So sánh các thể hệ kiến trúc phần cứng ........................................................30
Bảng 2.2. So sánh thời gian sàng số nguyên tố .............................................................58
Bảng 3.1. Bảng kết quả thử nghiệm thuật toán khử Gauss trên CPU Intel(R) Core(TM)
i5 1.7GHz và GPU Nvidia GeForce GT 820M .............................................................76
Bảng 3.2. Bảng kết quả thử nghiệm trên CPU với thư viện CSparse và GPU với thư
viện ViennaCL ...............................................................................................................79

Trang 5


.

Danh mục các hình vẽ, đồ thị
Hình 1.1. Tính tốn song song.......................................................................................12
Hình 1.2. Biểu đồ định luật Moore (1971-2004) ...........................................................14
Hình 1.3. Ba nhà khoa học tiên phong trong tính tốn song song, từ trái sang phải là
Gene Amdahl, Daniel Slotnick, John Cocke .................................................................15
Hình 1.4. Máy tính ILLIAC IV .....................................................................................17

Hình 1.5.Tối ưu hóa từng thành phần khác nhau ..........................................................18
Hình 1.6. Biểu diễn định luật Amdahl ...........................................................................19
Hình 1.7. So sánh số lượng core giữa CPU và GPU .....................................................19
Hình 1.8. Siêu máy tính Tianhe-2 .................................................................................20
Hình 1.9. GPU Tesla Kepler K20X ...............................................................................21
Hình 2.1. Sơ đồ kiến trúc phần mềm CUDA ................................................................22
Hình 2.2. Các thao tác thu hồi và cấp phát bộ nhớ ........................................................23
Hình 2.3. Vùng nhớ dùng chung trên GPU ...................................................................23
Hình 2.4. Kiến trúc phần cứng G80 ..............................................................................24
Hình 2.5. Kiến trúc phần cứng GT200 ..........................................................................25
Hình 2.6. Kiến trúc phần cứng Fermi ............................................................................26
Hình 2.7. Cấu tạo phần cứng của một SM thuộc thế hệ Fermi .....................................27
Hình 2.8. Kiến trúc phần cứng Kepler ..........................................................................28
Hình 2.9. Cấu tạo phần cứng của 1 SMX thuộc thế hệ Kepler .....................................29
Hình 2.10. Sơ đồ hoạt động truyền dữ liệu giữa Host và Device ..................................31
Hình 2.11. Kiến trúc phần mềm tương ứng với kiến trúc phần cứng............................33
Hình 2.12. Mơ hình grid, block, thread .........................................................................34
Hình 2.13. Mơ hình bộ nhớ CUDA ...............................................................................35
Hình 2.14. Bộ nhớ shared memory................................................................................43
Hình 3.1. Mặt phẳng U-V khi Y = 0.5, nằm trong phổ màu RGB ................................59
Hình 3.2. (a) ảnh đầu vào, (b) ảnh được phân vùng và tơ màu, (c) ảnh đầu ra .............60
Hình 3.3. Tương quan giữa các điểm ảnh trên miền không gian và thời gian ..............61
Hình 3.4. Trên miền khơng gian và thời gian................................................................62
Hình 3.5. Ma trận trọng số tương quan .........................................................................62
Hình 3.6. Chuyển ma trận được tơ màu thành ma trận cột............................................63
Hình 3.7. Ma trận phương trình AX=B .........................................................................63
Trang 6


.


Hình 3.8. Thử nghiệm 1.................................................................................................76
Hình 3.9. Thử nghiệm 2.................................................................................................77
Hình 3.10. Thử nghiệm 3...............................................................................................78
Hình 3.11. Thử nghiệm 4...............................................................................................79

Trang 7


.

PHẦN MỞ ĐẦU
1. Lý do chọn đề tài
Ngày nay, nhu cầu tính tốn trong các lĩnh vực khoa học, cơng nghệ cũng như các
lĩnh vực khác ngày càng lớn. Trong khi đó, việc tăng hiệu năng tính tốn của CPU gặp
phải nhiều khó khăn do giới hạn về mặt vật lý và vấn đề tản nhiệt. Tính tốn song song
đã ra đời với khả năng tận dụng nhiều nguồn tài ngun máy tính cùng đồng thời giải
quyết nhiều bài tốn lớn mà vẫn đảm bảo tăng hiệu năng và tiết kiệm năng lượng.
Một trong những cơng nghệ tính tốn song song mới hiện nay đó là sử dụng bộ xử
lý đồ họa (GPU) để tính tốn song song. GPU ban đầu được chế tạo để phục vụ chủ
yếu cho các ngành cơng nghiệp giải trí. Nhưng GPU hiện đại thì khơng chỉ dùng để xử
lý đồ họa mà cịn có thể thực hiện được các thao tác tính tốn khác ngồi đồ họa như
thực hiện phép tính dấu chấm động. Từ cơ sở đó, GPU có thể trở thành cơng cụ hữu
ích phục vụ cho tính tốn song song. Và vào năm 2007, công nghệ CUDA (Compute
Unified Device Architecture – kiến trúc thiết bị hợp nhất cho tính tốn) của Nvidia ra
đời đánh dấu bước ngoặt trong tính tốn song song trên GPU. CUDA giúp cho việc
ứng dụng GPU vào tính tốn song song trở nên thuận lợi hơn. Đây là bộ công cụ phát
triển phần mềm dựa trên ngôn ngữ lập trình C. Nhờ CUDA, các nhà lập trình viên có
thể điều khiển GPU, có thể xây dựng các ứng dụng tính tốn song song trên GPU với
lượng dữ liệu lớn, đạt hiệu năng cao trên nhiều lĩnh vực: mơ phỏng các mơ hình vật lý,

khai thác dầu khí, khí tượng thủy văn, chuẩn đốn y khoa, di truyền học, kĩ thuật điện
tử, ...
Với những ý nghĩa đó, tơi đã lựa chọn đề tài luận văn : “ỨNG DỤNG TÍNH
TỐN SONG SONG TRONG MÀU HĨA ẢNH”.
2. Ý nghĩa, mục đích của đề tài
Mục đích chính của đề tài là: nghiên cứu về cơng nghệ tính tốn song song trên
GPU, nghiên cứu về phương pháp màu hóa ảnh. Trên cở sở đó xây dựng ứng dụng tính
tốn song song để màu hóa ảnh đảm bảo việc xử lý và thời gian tính tốn được hiệu
quả.
Về mặt lý thuyết
Trang 8


.

- Giới thiệu tổng quan về tính tốn song song
- Giới thiệu cơng nghệ tính tốn song song CUDA trên GPU.
- Trình bày một số phương pháp màu hóa ảnh số
Về mặt thực tiễn
- Thực hiện chuyển đổi một số giải thuật tuần tự xử lý trên CPU sang giải thuật tính
tốn song với tốc độ xử lý nhanh hơn, cài đặt và giải quyết bài toán trên thiết bị xử lý
đồ họa GPU bằng ngơn ngữ lập trình CUDA và một số thư viện hỗ trợ.
3. Đối tượng và phạm vi nghiên cứu
3.1. Đối tượng nghiên cứu
Đối tượng nghiên cứu chính là:
- Cơng nghệ tính tốn song song CUDA trên GPU.
- Phương pháp xây dựng bài toán song song trên GPU.
- Phương pháp màu hóa ảnh số.
3.2. Phạm vi nghiên cứu
Phạm vi nghiên cứu giới hạn:

- Các đặc trưng về phần cứng và phần mềm của công nghệ CUDA.
- Kỹ thuật chuyển đổi từ bài toán tuần tự trên CPU sang bài toán song song trên GPU
- Kỹ thuật màu hóa ảnh số thực hiện trên các ảnh tĩnh.
4. Phương pháp nghiên cứu
Để thực hiện đề tài đã nêu ra, cần kết hợp mềm dẻo giữa hai phương pháp
nghiên cứu: phương pháp nghiên cứu lý thuyết và phương pháp nghiên cứu thực
nghiệm, được thực hiện theo các bước sau:
Nghiên cứu lý thuyết về tính tốn song song và cơng nghệ tính tốn song song CUDA:
- Nghiên cứu tài liệu về tính tốn song song.

Trang 9


.

- Nghiên cứu tài liệu cơng nghệ tính tốn song song CUDA trên GPU: kiến trúc phần
cứng, kiến trúc phần mềm.
- Ngơn ngữ lập trình sử dụng trong tính tốn song song CUDA.
Nghiên cứu lý thuyết màu hóa ảnh và phương pháp màu hóa ảnh số:
- Nghiên cứu tài liệu về q trình màu hóa ảnh số.
- Các kỹ thuật màu hóa ảnh số.
5. Phương tiện nghiên cứu
Trong q trình làm luận văn tôi đã tham khảo các tài liệu từ các nguồn sau: các
giáo trình, các sách tham khảo, các bài báo tạp chí về tính tốn song song, các tài liệu
trên mạng Internet, các luận văn thạc sĩ và các đồ án tốt nghiệp kỹ sư có liên quan, các
phần trợ giúp của các phần mềm, ứng dụng có liên quan. Tất cả các nguồn này đã
được ghi trích dẫn trong luận văn và liệt kê đầy đủ trong phần tài liệu tham khảo.
6. Ý nghĩa khoa học và thực tiễn của đề tài
Trong luận văn đã sử dụng cơng nghệ tính tốn song song trên GPU để song
song hóa q trình màu hóa ảnh tĩnh để tăng thời gian tính tốn và xử lý trên khối

lượng dữ liệu lớn giúp tiết kiệm thời gian, công sức, tiền bạc.
7. Những vấn đề sẽ giải quyết
Để đáp ứng các mục đích đề ra ở trên, trong luận văn này tơi tập trung giải
quyết các nội dung chính sau:
- Nghiên cứu chi tiết về cơng nghệ tính tốn song song CUDA trên GPU.
- Nghiên cứu các kỹ thuật màu hóa ảnh số
- Đề xuất kỹ thuật song song hóa quá trình màu hóa ảnh số trên GPU
- Xây dựng được module thực hiện màu hóa ảnh dựa trên cơng nghệ tính tốn song
song trên GPU.
8. Kết quả đạt được
- Xây dựng ứng dụng tính tốn song song trên GPU thực hiện màu hóa ảnh số.

Trang 10


.

9. Bố cục của luận văn
Ngoài phần mở đầu, kết luận, tài liệu tham khảo và phụ lục trong luận văn gồm
có các chương như sau:
Chương 1: Tổng quan về tính tốn song song. Chương này trình bày những kiến thức
cơ bản về tính tốn song song và bước đầu giới thiệu tính tốn song song trên GPU.
Chương 2: Tổng quan về kiến trúc xử lý song song CUDA. Chương này cung cấp
những kiến thức lý thuyết về kiến trúc CUDA, lập trình CUDA và một số ví dụ mẫu.
Chương 3: Ứng dụng tính tốn song song trên GPU trong màu hóa ảnh. Chương
này tìm hiểu phương pháp màu hóa ảnh số, thử nghiệm song song hóa q trình màu
hóa ảnh số trên GPU.

Trang 11



.

NỘI DUNG
CHƯƠNG 1: TỔNG QUAN VỀ TÍNH TỐN SONG SONG

1.1.

Khái niệm "Tính tốn song song"
Tính tốn song song hay xử lý song song là q trình xử lý thơng tin trong đó

nhiều đơn vị dữ liệu được xử lý đồng thời bởi một hay nhiều bộ xử lý để giải quyết
một bài toán.
 Vấn đề được chia thành các phần riêng biệt có thể giải quyết đồng thời
 Các phần được thực hiện đồng thời trên nhiều CPU
 Có cơ chế kiểm sốt, điều phối q trình tính tốn

Hình 1.1. Tính tốn song song
Trên hình 1.1 là mơ tả cách thức tính tốn song song, từ 1 bài tốn chia thành 4
phần. Sau đó mỗi phần, bao gồm n dịng lệnh được được thực hiện đồng thời trên mỗi
CPU.

1.2.

Lý do phải tính tốn song song?

 Tiết kiệm thời gian và tiền bạc:
Về mặt lý thuyết, trong tính tốn song song khi tăng thêm nguồn lực vào một
nhiệm vụ sẽ rút ngắn thời gian để hồn thành nó với chi phí tiết kiệm. Máy tính song
song có thể được xây dựng từ những thành phần, linh kiện rẻ hơn. Tận dụng được các

nguồn tài ngun tính tốn trên mạng diện rộng.
Trang 12


.

 Xử lý các bài tốn lớn:
Có nhiều vấn đề rất lớn hoặc rất phức tạp, mà nó là khơng thực tế hoặc khơng thể
giải quyết trên một máy tính duy nhất, đặc biệt là khi bộ nhớ máy tính bị hạn chế. Tính
tốn song song (được coi là bước phát triển cao nhất của tính tốn) hồn tồn có thể
giải quyết được những vấn đề này.
Ví dụ:
- Mơ hình hóa và mơ phỏng diễn biến của một hiện tượng tự nhiên và trong nhiều
lĩnh vực khoa học kĩ thuật như vật lý, hóa học, sinh học, …
- Dự báo thời tiết, động đất, sóng thần
- Các bài tốn thiên văn học vũ trụ, tính tốn quỹ đạo, sự chuyển động của các
hành tinh
- Điều khiển tên lửa
- Công cụ tìm kiếm web, dịch vụ kinh doanh dựa trên web, xử lý đồng thời hàng
triệu yêu cầu trong một giây trên Internet
- Đồ họa và các môi trường ảo trong ngành cơng nghiệp giải trí
- Vấn đề xử lý ngơn ngữ tự nhiên, trí tuệ nhân tạo, di truyền học
- Các vấn đề tốn học: như tìm số pi, …
- …
 Khả năng cung ứng đồng thời:
Một nguồn lực tính tốn chỉ có thể làm một việc tại một thời điểm. Nhiều nguồn
tài ngun tính tốn có thể làm nhiều việc cùng một lúc.

 Tận dụng được các nguồn tài nguyên phân tán:
Sử dụng được các nguồn tài nguyên tính toán trên mạng diện rộng hay qua

Internet trong khi nguồn tài ngun cục bộ ít hoặc khơng đáp ứng được nhu cầu.

 Giới hạn của tính tốn tuần tự
Về lý thuyết: tốc độ tính tốn của CPU là hữu hạn vì phải chịu nhiều giới hạn về
mặt vật lý, ví dụ như tốc độ dịng điện, mật độ tích hợp của vi mạch bán dẫn (kích
Trang 13


.

thước bóng bán dẫn khơng thể nhỏ hơn ngun tử), vấn đề làm nguội khi công suất
của chip tăng lên ...
Định luật Moore [13] được xây dựng bởi Gordon Moore - một trong những sáng
lập viên của tập đoàn sản xuất chip máy tính nổi tiếng Intel. Định luật được phát biểu
như sau:
“Mật độ transistor sẽ tăng lên gấp đôi sau 18 tháng”
Tuy nhiên, trong thời gian gần đây định luật Moore đã có nhiều biểu hiện bị thay
đổi và kéo dài dần thời gian tăng đôi số transistor trên một đơn vị diện tích. Tại thời
điểm năm 2007, khoảng thời gian để tăng đôi số transistor là xấp xỉ 60 tháng. Trong
tương lai không xa khi mà các áp dụng kỹ thuật đã khơng thể rút nhỏ kích cở của một
transistor xuống hơn được (cụ thể là khi kiến trúc của transistor đã được rút xuống đến
mức độ phân tử) thì định luật Moore sẽ khơng cịn đúng nữa.

Hình 1.2. Biểu đồ định luật Moore (1971-2004)
Mở rộng tần số là nguyên nhân chủ yếu trong việc làm tăng tốc độ khả năng xử lý
của máy tính. Thời gian chạy của một chương trình được tính bằng số câu lệnh nhân
với thời gian trung bình của một câu lệnh. Như vậy nếu duy trì tất cả những thứ khác
ổn định, gia tăng tần số xung nhịp sẽ làm giảm thời gian trung bình để thực thi một câu
Trang 14



.

lệnh. Như vậy tần số tăng sẽ giảm đi thời gian chạy của những chương trình giới hạn
tính tốn. [13]
Tuy nhiên, mức tiêu hao năng lượng của một con chip được tính bởi cơng thức
P = C × V2 × F

(1.1)

trong đó P là năng lượng, C là capacitance (điện dung) được chuyển mỗi chu kỳ xung
nhịp (tỷ lệ thuận với số lượng bán dẫn có đầu vào thay đổi), V là voltage (điện áp), và
F là tần số của bộ xử lý (số chu kỳ mối giây). Như vậy tăng tần số cũng làm năng
lượng sử dụng của bộ xử lý tăng theo, việc làm mát chip cũng trở nên khó khăn hơn và
kích thước quạt gió cũng phải tăng theo. Việc tăng tiêu hao năng lượng này đã dẫn đến
quyết định ngừng phát triển bộ xử lý Tejas and Jayhawk của Intel tháng 5 năm 2004,
được cho là sự chấm dứt của nỗ lực tăng tần số hệ thống máy tính. [13]

1.3.

Lịch sử của tính tốn song song
Vào tháng Tư năm 1958, S. Gill (Ferranti) thảo luận về lập trình song song và nhu

cầu phân nhánh và chờ đợi. Cũng trong năm 1958, hai nhà nghiên cứu của IBM John
Cocke và Daniel Slotnick lần đầu tiên thảo luận về việc sử dụng song song trong các
tính tốn số học. Tập đoàn Burroughs đã giới thiệu D825 năm 1962, một máy tính bốn
bộ xử lý có thể truy cập lên đến 16 module bộ nhớ thông qua một bộ chuyển mạch
thanh ngang. Năm 1967, Amdahl và Slotnick công bố một cuộc tranh luận về tính khả
thi của xử lý song song tại của Hội nghị xử lý thông tin xã hội Liên bang Mỹ. Từ cuộc
tranh luận này mà định luật Amdahl đã được đặt ra để xác định giới hạn sự tăng tốc do

song song. [13]

Hình 1.3. Ba nhà khoa học tiên phong trong tính tốn song song, từ trái sang phải là
Gene Amdahl, Daniel Slotnick, John Cocke
Trang 15


.

Năm 1969, công ty của Mỹ Honeywell giới thiệu hệ thống Multics đầu tiên của
mình, một hệ thống đa xử lý đối xứng có khả năng chạy đến tám bộ xử lý song song.
C.mmp, một dự án bộ đa xử lý ở Đại học Carnegie Mellon những năm 1970, là "một
trong những bộ đa xử lý đầu tiên với hơn một vài bộ vi xử lý".
Nói về những mơ hình tính tốn song song đầu tiên, ta có thể kể đến Daniel
Slotnick - Đại học Illinois – người đã thiết kế hai mẫu máy tính song song từ rất sớm:
- Máy Solomon chế tạo tại công ty Westinghouse Electric vào đầu những năm 60
- Máy ILLIAC IV lắp đặt tại tổ hợp Buroughs vào đầu những năm 70.
Năm 1964, Slotnick đã đề xuất xây dựng một máy tính song song hàng loạt cho
Phịng thí nghiệm quốc gia Lawrence Livermore. Thiết kế của ông được tài trợ bởi
Không quân Hoa Kỳ, đây là nỗ lực tính tốn song song SIMD đầu tiên, ILLIAC IV.
Chìa khóa cho việc thiết kế của nó là một song song khá cao, lên đến 256 bộ xử lý, cho
phép máy làm việc trên bộ dữ liệu lớn mà sau này được biết đến như là xử lý liên hợp.
Tuy nhiên, ILLIAC IV được gọi là "nổi tiếng nhất trong các siêu máy tính", vì dự án
chỉ hoàn thành được một phần tư, nhưng tốn 11 năm và chi phí gấp gần bốn lần so với
ước tính ban đầu. Khi nó cuối cùng cũng có thể chạy ứng dụng đầu tiên vào năm 1976,
nó đã hồn tồn thua kém so với những siêu máy tính thương mại lúc đó như Cray-1.
[13]

Trang 16



.

Hình 1.4. Máy tính ILLIAC IV
Tại đại học Carnegier – Mellon, hai kiểu máy tính song song C.mmp và Cm+ cũng
đã được chế tạo vào đầu những năm 70. Vào đầu thập kỷ 80, các nhà nghiên cứu của
tổ hợp Caltech đã xây dựng Cosmic Cube, hình mẫu nguyên thủy cho các loại máy
song song sau này của Intel, Ametek.
Tuy nhiên phải đến giữa những năm 80, máy tính song song dựa trên các bộ vi xử
lý (microprocessor) mới trở thành hiện thực. Có được điều đó là nhờ tốc độ phát triển
của công nghệ chế tạo bộ vi xử lý đã phát triển vượt bậc, đạt tới 35% mỗi năm, trong
khi tốc độ phát triển của các siêu máy tính truyền thống chỉ là 20%.
Tháng 6/1993, các giáo sư Hans Meuer (Đại học Mannheim – Đức), Jack
Dongarra (Đại học Tennessee – Hoa Kỳ) cùng Eric Strohmaier và Horst Simon (Phịng
thí nghiệm quốc gia Lawrence Berkeley – Hoa Kỳ) đã thiết lập bảng xếp hạng các siêu
máy tính hàng đầu thế giới Top 500 Supercomputer (top500.org). Top500 thống kê
danh sách các siêu máy tính trên thế giới vào tháng 6 và tháng 11 hàng năm. Bảng xếp
hạng này cung cấp 1 cái nhìn đầy đủ về các siêu máy tính hiện đại nhất trên thế giới,
bao gồm các thông số về khả năng tính tốn của các hệ thống (Rmax, Rpeak) được đo
bởi hệ thống LINPACK và thông tin thời sự xung quanh chủ đề “Các máy tính và kiến
trúc song song”
1.4.

Định luật Amdahl
Trang 17


.

Speedup (hệ số tăng tốc): speedup của thuật toán song song là tỷ số giữa thời gian

thực hiện trong tình huống xấu nhất của thuật toán tuần tự tốt nhất và thời gian thực
hiện cũng cơng việc đó của thuật tốn song song. Trong trường hợp thơng thường, có
thể hình dung một cách tương đối như sau:
thời gian thực hiện trên máy tính tuần tự
thời gian thực hiện trên máy tính song
song

Hình 1.5.Tối ưu hóa từng thành phần khác nhau
Giả sử một cơng việc có hai bộ phận độc lập, A và B. Phần B chiếm khoảng 25%
thời gian của tồn bộ tính tốn, nếu ta làm cho phần việc này nhanh gấp 5 lần thì điều
này chỉ làm giảm thời gian của tồn bộ tính tốn đi một chút. Ngược lại, nếu ta làm
cho phần A nhanh gấp hai lần thì sẽ làm cho tính tốn nhanh hơn bằng cách tối ưu
phần B, mặc dù B có tốc độ tăng lớn hơn (5× với 2×). [13]
Một chương trình giải quyết một vấn đề khoa học/ công nghệ thường bao gồm một
bộ phận song song và phần cịn lại khơng song song (tuần tự). Khi đó phần khơng thể
được song song của chương trình, dù nó nhỏ đến đâu đi nữa, cũng sẽ hạn chế khả năng
tăng tốc tổng thể của việc song song hóa. Năm 1967 Gene Amdahl đã phát biểu định
lý sau đây:
Định luật Amdahl:

S

1
f  (1  f ) / p

Gọi f là tỷ lệ thao tác tuần tự trên tổng số thao tác phải làm, trong đó 0  f  1.
Tốc độ tối đa S của một máy tính song song với p bộ xử lý luôn nhỏ hơn
Hệ quả :

Ngưỡng cực đại của S là 1/f

Trang 18


.

Chẳng hạn, giả sử phần tuần tự của một chương trình là 10% thời gian chạy, khi
đó hệ số tăng tốc (speedup) sẽ không thể đạt được quá 10 lần, bất kể ta huy động bao
nhiêu bộ xử lý đi nữa. Điều này đặt ra một giới hạn về tính hữu ích của việc thêm các
đơn vị thực hiện song song với nhau nhiều hơn.

Hình 1.6. Biểu diễn định luật Amdahl

1.5.

Tính tốn song song trên card đồ họa (GPU)

Hình 1.7. So sánh số lượng core giữa CPU và GPU

Trang 19


.

Hiện nay, số lượng nhân tính tốn trong CPU chỉ ở mức 4, 8 hay 16 nhân trên 1
chip. Để tính tốn song song đạt hiệu năng cao cần có một hệ thống gồm nhiều chip,
nhiều nhân tính tốn. Điều này dẫn tới phải giải quyết vấn đề về chi phí, cách thức
điều khiển, truyền thơng giữa các chip. Nhưng với cơng nghệ GPU hiện đại, ta có thể
tính hợp hàng trăm, thậm chí hàng nghìn nhân chỉ phục vụ cho mục đích tính tốn trên
cùng 1 chip, giúp giảm chi phí sản xuất, việc điều khiển, truyền thơng trong 1 chip
thuận lợi hơn so với nhiều chip.

Dựa trên cấu trúc phần cứng, tính tốn đa năng trên các đơn vị xử lý đồ họa
(GPGPU) đã ra đời. Đây là một xu hướng khá phổ biến gần đây trong nghiên cứu kỹ
thuật máy tính. GPUs là các bộ xử lý động bộ được tối ưu hóa mạnh cho việc xử lý đồ
họa máy tính. Xử lý đồ họa máy tính là một lĩnh vực bị chi phối bởi các thao tác dữ
liệu song song – đặc biệt là các thao tác ma trận đại số tuyến tính.
Trong những ngày đầu, các chương trình GPGPU sử dụng đồ họa thơng thường
APIs để chạy. Tuy nhiên, một số ngôn ngữ và nền tảng lập trình mới đã được xây
dựng để thực hiện tính tốn đa năng trên GPU với cả Nvidia và AMD, tạo ra mơi
trường lập trình với CUDA và CTM tương ứng. Các ngơn ngữ lập trình GPU khác là
BrookGPU, PeakStream và RapidMind. [13]

Hình 1.8. Siêu máy tính Tianhe-2
Trong danh sách Top 500 Supercomputer (top500.org) được cơng bố tháng
11/2015, có đến 104/500 hệ thống có sử dụng GPU tính tốn hiệu năng cao, tính riêng
top 10 có 5 hệ thống có tích hợp thêm GPU. Tiêu biểu là siêu máy tính Tienhe-2 (hình
1.8) đặt tại trung tâm siêu máy tính quốc gia Quảng Châu – Trung Quốc đang chiếm
lĩnh vị trí số 1. Tienhe-2 có khả năng tính tốn cao nhất theo lý thuyết là 54,902
Trang 20


.

TeraFlop/s và trên thực tế là 33,862 TeraFlop/s (nghĩa là có hệ thống có thể thực hiện
được 33.862 triệu tỷ phép tính trong một giây). Điều đặc biệt ở siêu máy tính Tienhe-2
đó là sức mạnh của nó được tạo nên bởi 32,000 CPU Xeon và 48,000 GPU Xeon Phi
(hình 1.9).

Hình 1.9. GPU Xeon Phi
Đứng thứ hai trong top 10 tính đến thời điểm 11/2015 cũng là một siêu máy tính
có trang bị GPU để xử lý song song là Titan của Hoa Kỳ. Siêu máy tính đặt tại phịng

thí nghiệm quốc gia Hoa Kỳ - Oak Ridge thuộc tiểu bang Tennessee này gồm 18,688
CPU và 18,688 GPU Nvidia Tesla Kepler K20X có khả năng tính tốn lên đến 17,590
TeraFlop/s.
Tesla Kepler K20X là một đại diện tiêu biểu cho dòng GPU Tesla chun về tính
tốn hiệu năng cao, của Nvidia – nhãn hiệu sản xuất GPU phổ biến thế giới. K20X
được trang bị 2496 nhân, khả năng tính tốn là 1.31 TFlop/s cùng với bộ nhớ 6 GB.
Ngồi ra cịn có thể kể đến dịng GPU tính tốn hiệu năng cao AMD FireStream
của AMD. Trong đó, đại diện tiêu biểu là Radeon HD5870 với khả năng tính tốn 544
GFlop/s.

Trang 21


×