Upload
others
View
13
Download
0
Embed Size (px)
Citation preview
10/15/18
1
Tính toán song song và phân tánPGS.TS. Trần Văn Lăng
Tài liệu: Introduction to Parallel ComputingBlaise Barney, Lawrence Livermore National Laboratory
https://computing.llnl.gov/tutorials/parallel_comp/
1
Nội dung
1. Tổng quan2. Khái niệm và thuật ngữ3. Kiến trúc bộ nhớ của máy tính song song4. Mô hình lập trình song song5. Thiết kế chương trình song song6. Đánh giá thuật giải song song
7. Mẫu thuật giải phân tách để song song
2
8. Lập trình OpenMP với shared-memory9. PVM trong việc lập trình song song10.Lập trình với MPI11.Lập trình song song với Python
3
1. Tổng quan
1. Tính toán song song là gì2. Tại sao phải dùng tính toán song song
4
10/15/18
2
Tính toán song song là gì
• Theo truyền thống, phần mềm được viết theo cách tính toán tuần tự:– Được chạy trên một máy tính đơn có một CPU;–Một bài toán được chia ra thành một chuỗi các câu
lệnh rời rạc.– Những câu lệnh này được thi hành sau câu lệnh khác.– Vào một thời điểm chỉ có một câu lệnh thực thi.
5
Ví dụ tính tiền lương cho nhiều người
6
• Trong một ngữ cảnh đơn giản, tính toán song song (Parallel Computing) là việc sử dụng đồng thời nhiều nguồn tài nguyên tính toán để giải quyết một vấn đề:– Được chạy bằng cách sử dụng nhiều CPU.– Một vấn đề có thể chia ra thành nhiều phần rời rạc được
giải quyết một cách đồng thời.– Trong đó mỗi phần được tiếp tục phân chia thành một
chuỗi các câu lệnh.– Những câu lệnh này được thi hành một cách đồng thời trên
các CPU khác nhau.
7
Tiền lương mỗi người được 1 CPU tính
8
10/15/18
3
• Nguồn tài nguyên tính toán có thể là:–Một máy tính duy nhất với nhiều bộ xử lý;–Một số tùy ý máy tính được kết nối qua mạng;
– Tổ hợp cả hai loại trên.
9
• Bái toán tính toán có thể:– Được phân chia thành các phần công việc rời rạc mà có
thể giải quyết một cách đồng thời;– Thực hiện nhiều câu lệnh chương trình vào bất kỳ thời
điểm nào;– Với nhiều nguồn tài nguyên tính toán, bài toán được
giải quyết ít thời gian so với chỉ một nguồn tài nguyên tính toán.
10
• Tính toán song song là một sự tiến hóa của tính
toán tuần tự nhằm cố gắng mô phỏng những vấn
đề đặt ra trong thế giới tự nhiên mà chứa đựng:
– Nhiều sự phức tạp
– Các sự kiện liên quan với nhau xãy ra cùng một thời
gian nhưng vẫn trong cùng một chuỗi.
11
Sử dụng tính toán song song
• Về mặt lịch sử, tính toán song song được coi là “tính toán cao cấp” (the high end of computing), đã được sử dụng để mô hình hóa các vấn đề khó khăn trong nhiều lĩnh vực khoa học và kỹ thuật:– Khí quyển, trái đất, môi trường– Vật lý: hạt nhân, hạt, áp lực cao, nhiệt hạch, lượng tử,
…
12
10/15/18
4
Sử dụng tính toán song song
– Khoa học sinh học, công nghệ sinh học, di truyền học.
– Hóa học, khoa học phân tử
– Địa chất, địa chấn học – Cơ ký: từ tay chân giả cho đến tàu vũ trụ– Điện, thiết kế vi mạch, vi điện tử
– Khoa học máy tính, toán học
13
• Ngày nay, những ứng dụng thương mại cũng đòi hỏi công suất lớn của máy tính.
• Những ứng dụng này đòi hỏi xử lý một khối lượng lớn dữ liệu; chẳng hạn:– Data mining– Artificial Inteligence, Machine Learning,
Deep Learning– Data Science– Computational Intelligence
14
– Chẩn đoán hình ảnh y tế (Medical image diagnosis)– Quản lý các tập đoàn quốc gia, đa quốc gia–Mô hình tài chính và kinh tế– Đồ họa nâng cao, thực tại ảo, công nghiệp điện ảnh– Video mạng (Networked video) và công nghệ đa
phương tiện– Bài toán trong sinh học phân tử
15
Tại sao phải dùng tính toánsong song
• Tiết kiệm thời gian và/hoặc tiền bạc: –Máy tính song song có thể xây dựng trên các thành
phần giá rẻ– Rút ngắn thời gian là sự tiết kiệm đáng kể.
16
10/15/18
5
Giải những bài toán lớn
• Nhiều vấn đề quá lớn và/hoặc quá phức tạp; nên sẽ không thực tế hoặc không thể giải quyết được trên một máy tính đơn, đặc biệt khi bị giới hạn về bộ nhớ.
17
• Chẳng hạn:– Những bài toán thách thức lớn (Grand Challenge) được
đặt ra đòi hỏi nguồn tài nguyên tính toán lên đến cả Peta phép tính trong một giây (số nguyên tố xuôi ngược: 1000000000000066600000000000001; số nguyên tố lớn nhất, hiện nay tìm ra 213.466.017 -1)
– Động cơ tìm kiếm để xử lý hàng triệu phiên giao dịch trong 1 giây.
18
• Cung cấp đồng thời: Một nguồn tài nguyên tính toán đơn chỉ có thể làm một công việc ở vào một thời điểm.– Nhưng với nhiều nguồn tài nguyên tính toán, nhiều
việc có thể được làm một cách đồng thời. Chẳng hạn, hệ thống Access Grid (www.accessgrid.org) cung cấp một mạng lưới cộng tác toàn cầu, ở đó mọi người có thể gặp nhau và chỉ đạo công việc một cách sát thực.
19
Sử dụng nguồn tài nguyên không địa
phương (non-local resources)
• Dùng nguồn tài nguyên tính toán trên một mạng
diện rộng, hoặc ngay cả trên mạng Internet khi
nguồn tài nguyên tại chỗ trở nên cạn kiệt.
20
10/15/18
6
• Chẳng hạn:– SETI@home (setiathome.berkeley.edu) sử dụng 2,9
triệu máy tính kết nối Internet ở khắp các nước.– Folding@home (folding.stanford.edu) sử dụng máy
tính trên 450.000 campus.
21
SETi@home
• SETI (Search The Extraterestrial Intelleigence - Tìm
kiếm trí tuệ ngoài Trái đất): là một lĩnh vực khoa
học với mục tiêu là để phát hiện cuộc sống thông
minh ngoài Trái đất .
22
• Hệ thống bao gồm:– Đài phát thanh SETI, sử dụng kính viễn vọng radio để
nghe các tín hiệu vô tuyến băng thông hẹp từ không gian. Tín hiệu xảy ra một cách tự nhiên, sẽ cung cấp bằng chứng của công nghệ ngoài Trái đất.
– Làm đài phát thanh SETI bằng cách sử dụng một siêu máy tính ảo bao gồm số lượng lớn các máy tính kết nối Internet (5/1999).
23
Folding@home
• Mục tiêu: Tạo môi trường tính toán phân tán nhằm tìm hiểu về sự kết xoắn và các đột biến của protein, cũng như các bệnh tật gây ra bởi các biến chứng này. Xuất phát từ Phòng thí nghiệm Pande, Standford University.
24
10/15/18
7
• Protein là những "chú ngựa
thồ" trong sinh học, và là
những cỗ máy siêu nhỏ.
• Trước khi protein có thể lãnh
những trách nhiệm cực kỳ
quan trọng, chúng tự kết
xoắn lại với nhau - hay còn gọi
là "fold".
25
• Quá trình kết xoắn của protein, mặc dù đó là nền tảng căn bản quan trọng trong sinh học, vẫn còn là điều mơ hồ và vẫn chưa có câu giải thích đích đáng
26
• Hơn nữa, khi sự kết xoắn của proteins bị sai lệch (còn gọi là "misfold"), chúng có thể tạo ra những
hậu quả hết sức nghiêm trọng như:
– Alzheimer: chứng bệnh mất trí
–Mad Cow: bệnh bò điên
– Parkinson: bệnh phân liệt
– Và nhiều bệnh ung thư khác
27
Giới hạn của tính toán tuần tự
• Cả những lý do vật lý cũng như thực tế đặt ra việc
cần phải xây dựng những máy tính nhanh hơn máy
tính tuần tự, cụ thể:
– Tốc độ truyền: Phụ thuộc một cách trực tiếp vào việc
dữ liệu di chuyển thông qua các phần cứng. Cụ thể
• Giới hạn tuyệt đối bởi tốc độ ánh sáng là 30 cm/nanosecond;
và của dây đồng là 9 cm/nanosecond
28
10/15/18
8
– Giới hạn trong việc thu nhỏ: Công nghệ vi xử lý giúp tăng số transitor đặt trên một con chip. Tuy nhiên, khả năng đạt được cũng còn gặp nhiều khó khăn.
– Giới hạn về kinh tế: Một bộ xử lý đơn mạnh gía thành cao hơn nhiều so với việc sử dụng nhiều bộ xử lý với giá vừa phải.
29
– Kiến trúc máy tính hiện đại cho phép có thể nâng cao năng lực xử lý, cụ thể có các kiến trúc:• Nhiều bộ phận thực thi (Multiple execution units)
• Kiến trúc lệnh đường ống (Pipelined instructions): cho phép nạp một lệnh mới trong khi CPU đang xử lý lệnh trước đó.
• Multi-core
30
Minh chứng cho sự phát triển
• Ở góc nhìn Application Area vào 11/2010
31
• 11/2012, những ứng dụng dạng “Not Specified” đã nhiều lên
32
10/15/18
9
• 11/2014 “NS” càng nhiều - xâm nhập vào đời sống
33
Sự phát triển
• Với sự phát triển trong hơn 20 năm qua cho thấy
nhờ sự nhanh hơn của mạng lưới, hệ thống phân
tán và kiến trúc máy tính đa xử lý. Từ đó song song
là tương lai của máy tính.
• Ngay trong cùng một thời điểm hiện tại, đã có
những máy tính nhanh hơn nhau gấp cả 1000 lần.
34
Ngay cả đơn vị đo tính toán
• 1 Yflop/s (YottaFlop/s) = 1024 Flop/s • 1 Zflop/s (ZettaFlop/s)= 1021 Flop/s• 1 Eflop/s (ExaFlop/s) = 1018 Flop/s• 1 Pflop/s (PetaFlop/s) = 1015 Flop/s • 1 Tflop/s (TetraFlop/s)= 1012 Flop/s• 1 Gflop/s (GigaFlop/s) = 109 Flop/s• 1 Mflop/s (MegaFlop/s) = 106 Flop/s• 1 Kflop/s (KiloFlop/s) = 103 Flop/s• 1 Flop/s = 1 Floating Point Operation per Second
35 36
10/15/18
10
Máy nhanh nhất hiện nay (6/2018)https://www.top500.org/lists/2018/06/
37 38
Top 5 Sites for June 2018
39
11/2017
40
10/15/18
11
11/2016
41
11/2015
42
Độ đo
• Rpeak: là độ đo lý thuyết đỉnh điểm
– Được xác định bằng cách tính số phép tính cộng và
nhân được hoàn thành trong suốt một chu kỳ thời gian
của máy.
– Ví dụ, máy với 1.5 GHz có thể hoàn thành 4 phép tính
trong một cycle, thì hiệu suất lý thuyết là 6 GFlop/s
• Rmax: là độ đo cực đại mà máy tính có thể thực
hiện được theo chuẩn LINPACK
43
Architecture
• Theo số liệu 6/2003 (http://www.top500.org)
– Trong số 500 máy nhanh nhất thế giới, có 149 hệ thống
dạng cluster (hệ thống nhóm máy mạng).
– Trong số 149 hệ này có 23 máy tự làm (self-made).
• Đến 6/2018, trong 500 máy có 437 là hệ thống
cluster
44
10/15/18
12
Operating System
45
Operating System Family (Linux 100%)
46
Application Area
47
Xu hướng sử dụng tính toán song song
48
10/15/18
13
Với lĩnh vực nghiên cứu
49
Ví dụ
• Cần dự báo thời tiết– Trên một vùng rộng chia thành các ô lưới, giả sử có:
• 100 triệu ô lưới• để có kết quả, mỗi ô cần tính toán 100 phép toán• cần dự báo trước 2 ngày• bước tính toán là 1 phút (1 phút tính 1 lần)
– Với máy tính có khả năng 100 triệu phép tính trong một giây. Hỏi bao nhiêu lâu thì có kết quả tính toán dự báo
– Nên dùng máy tính nào là hợp lý
50
• Giải ra,– Số bước phải tính: 2ngày x 24giờ x 60phút /1 = 2.880
bước tính.– Số phép toán 102 x 108 x 2.880 = 2.880 x 1010 Flop– Với máy khả năng 108 FLops, thời gian tính toán là
2.880 x 1010/108 giây = 288.000 giây (gần bằng 3,33 ngày)
51
• Để hợp lý, phải biết trước ít nhất là 1 ngày (=86.400 giây)
• Thì cần máy có khả năng là 2.880 x 1010/84.000 Flops = 2.880 x 1010/840 x 102 Flops = 2.880/840 x 108 Flops = 3,43 x 108 Flops = 343 x 106 Flops
• Như vậy cần máy tính có khả năng tính toán tương được 343 MFlops
52
10/15/18
14
• Tương tác giữa protein với phân tử nước– Trong cơ thể, một protein tương tác với một phân tử
nước mất gần 1 giờ– Nếu mô phỏng,
• một mô phỏng mất 10-12 giây• một mô phỏng cần 100 phép tính
53
• Nên nếu mô phỏng bằng máy tính nhanh nhất
hiện nay (6/2018)
– Số phép tính cần: 100 x 3600/10-12 = 36 x 1016 Flop
– Với máy tính năng lực 122.300 TFlop/s = 12,23 x 1016
Flop/s, thì mất 36/12,23 giây (gần 2,94 giây)
– Nhưng với máy tính thứ 500 – 715,6 TFlops
(https://www.top500.org/list/2018/06/?page=5), mất
36/0,07156 giây (gần 503 giây tương đương 8,4 phút)
54