14
10/15/18 1 Tính toán song song và phân tán PGS.TS. Trần Văn Lăng [email protected] Tài liệu: Introduction to Parallel Computing Blaise Barney, Lawrence Livermore National Laboratory https://computing.llnl.gov/tutorials/parallel_comp/ 1 Nội dung 1. Tổng quan 2. Khái niệm và thuật ngữ 3. Kiến trúc bộ nhớ của máy tính song song 4. Mô hình lập trình song song 5. Thiết kế chương trình song song 6. Đá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-memory 9. PVM trong việc lập trình song song 10.Lập trình với MPI 11.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

Nội dung Tính toán song song và phân tán - fair.conf.vnfair.conf.vn/~lang/lecture/parallel/Intro Parallel Computing 01.pdf · –Những bài toán thách thức lớn (Grand

  • 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

[email protected]

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