Tải bản đầy đủ (.doc) (25 trang)

TÍNH TOÁN SONG SONG VÀ BÀI TOÁN TÍNH SỐ PI TRÊN MÔI TRƯỜNG PVM

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 (1.7 MB, 25 trang )

BỘ GIÁO DỤC VÀ ĐÀO TẠO
ĐẠI HỌC QUỐC GIA TP.HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN

BÀI THU HOẠCH MÔN TÍNH TOÁN LƯỚI
Tên đề tài:
TÍNH TOÁN SONG SONG VÀ BÀI TOÁN TÍNH
SỐ PI TRÊN MÔI TRƯỜNG PVM
Giảng viên hướng dẫn : PGS.TS Nguyễn Phi Khứ
Học viên thực hiện : Trần Thị Kiều Diễm (CH1101074)
Lớp : CH-CNTT K6
TP. HCM, Tháng 7 - 2013
MỤC LỤC
PHẦN 4. NHẬN XÉT ĐÁNH GIÁ VÀ HƯỚNG PHÁT TRIỂN 24
MỞ ĐẦU
Công nghệ thông tin từ lâu đã được ứng dụng rộng rãi vào các hoạt động
nghiên cứu khoa học và tin học hóa xã hội. Thực tế có nhiều bài toán phức tạp đòi hỏi
cần các siêu máy tính có kiến trúc phần cứng khổng lồ để giải quyết, điều này gây tốn
kém về mặt kinh tế và thời gian thực hiện, trong khi đó các máy tính thông thường thì
không thể giải quyết được vì lí do bộ nhớ hạn chế chẳng hạn. Vì lí do này mà một ý
tưởng đã được hiện thực hóa là tận dụng nguồn tài nguyên nhàn rỗi từ nhiều máy
bằng cách ghép nối các máy tính đơn với nhau thành một hệ thống và cài đặt các phần
mềm đặc biệt để có thể tính toán như một máy tính song song. Hệ thống này dần thay
thế vai trò những siêu máy tính đắt tiền.
Ngày nay, các bài toán nghiên cứu ngày càng nhiều và mức độ phức tạp ngày
càng cao, do đó việc phát triển mô hình tính toán song song trong bối cảnh này là rất
thiết thực, vượt qua các trở ngại của nó như phân công giữa các tiến trình, làm việc
với HĐH Linux, cài đặt cấu hình môi trường PVM…để hướng tới hệ thống tính toán
thế giới – Grid Computing.
Em xin chân thành cảm ơn Thầy Nguyễn Phi Khứ đã hướng dẫn tận tình giúp
chúng em hoàn thành tốt bài thu hoạch cho môn học.


DANH MỤC HÌNH
Hình 1. Mô hình tính toán tuần tự trang 5
Hình 2. Mô hình tính toán song song trang 5
Hình 3. Mô hình kiến trúc máy tính Von Newmann trang 7
Hình 4. Mô hình các loại kiến trúc máy tính của Flynn trang 8
Hình 5. Minh họa tiến trình thực thi trong kiến trúc SISD trang 9
Hình 6. Minh họa tiến trình thực thi với kiến trúc máy tính SIMD trang 9
Hình 7. Minh họa tiến trình thực thi với kiến trúc máy tính MISD trang 10
Hình 8. Minh họa tiến trình thực thi với kiến trúc máy tính MIMD trang 11
Hình 9. Kiến trúc Uniform Memory Access (UMA) trang 11
Hình 10. Kiến trúc Nonumiform Memory Access (NUMA) trang 11
Hình 11. Kiến trúc MIMD bộ nhớ phân tán trang 12
Hình 12. Mô hình đa luồng (Thread) trang 13
Hình 13. Mô hình truyền thông điệp (Message Passing) trang 14
Hình 14. Mô hình song song dữ liệu (Data Parallel Model) trang 16
Hình 15. Mô hình lai (Hybrid Model) trang 16
Hình 16. Mô hình SPMD và MPMD trang 16
Hình 17. Mô hình minh họa máy ảo song song trang 21
Hình 18. Mô hình minh họa trao đổi giữa các máy ảo song song trang 21
Tính toán lưới GVHD: PGS.TS Nguyễn Phi Khứ
PHẦN 1. TÍNH TOÁN SONG SONG
1.1. Khái niệm tính toán song song
— Theo cách lập trình từ trước tới nay, thông thường phần mềm được viết theo
cách tính toán tuần tự, nghĩa là chương trình chạy trên một máy tính đơn có 1 CPU,
một tiến trình thực hiện tại một thời điểm, tiến trình này xong sẽ tới tiến trình khác.
Hình 1. Mô hình tính toán tuần tự
— Tính toán song song (Parallel Computing): Sử dụng đồng thời nhiều nguồn
tính toán để giải quyết một vấn đề duy nhất, cụ thể là một vấn đề có thể:
o Được chạy bằng cách sử dụng nhiều CPU.
o Được chia ra thành nhiều phần rời rạc có thể giải quyết một cách đồng

thời.
o Mỗi phần được tiếp tục phân chia thành một chuỗi các câu lệnh.
o Những câu lệnh của mỗi phần được thi hành một cách đồng thời trên các
CPU khác nhau.
Hình 2. Mô hình tính toán song song
— Nguồn tài nguyên trong tính toán song song có thể là:
o Nhiều máy tính kết nối nhau qua mạng LAN hoặc WAN.
o Một máy tính có nhiều CPU.
o Kết hợp cả hai loại trên.
1.2. Vì sao phải tính toán song song
Trang5/25
Tính toán lưới GVHD: PGS.TS Nguyễn Phi Khứ
— Trong thực tế có nhiều bài toán đòi hỏi các phép tính phức tạp hoặc số lượng
phép tính lớn với khoảng thời gian rất ngắn, hoặc những bài toán cần xử lý mà bộ nhớ
một máy tính không thể đáp ứng được chẳng hạn như trong các lĩnh vực khoa học, kỹ
thuật, công nghệ sinh học,…do đó việc kết hợp các máy tính lại để giải quyết các bài
toán lớn và phức tạp như thế sẽ mang lại nhiều lợi ích như:
o Tiết kiệm chi phí, thay vì mua một siêu máy tính thì có thể mua nhiều
máy tính với cấu hình thấp hơn nhưng khả năng giải quyết được.
o Tiết kiệm thời gian khi thực hiện tính toán cùng lúc nhiều bài toán trên
các máy tính được kết nối qua mạng.
o Tận dụng được nhiều nguồn tài nguyên trên mạng diện rộng thậm chí cả
trên Internet khi nguồn tài nguyên tại chỗ không đáp ứng được.
o Khắc phục được nhược điểm của việc tính toán tuần tự.
Trang6/25
Tính toán lưới GVHD: PGS.TS Nguyễn Phi Khứ
PHẦN 2. KIẾN TRÚC HỆ THỐNG TÍNH TOÁN SONG SONG
2.1Phân loại các kiểu kiến trúc song song
2.1.1. Kiến trúc máy tính Von Newmann
— Các máy tính hiện nay đều xây dựng theo mô hình Von Newmann (tên

nhà bác học John Von Newmann). Máy tính Von Newmann sử dụng khái niệm chương
trình đã được lưu trữ sẵn.
— CPU chạy một chương trình đã được lưu trữ sẵn, trong đó chỉ rõ các
chuỗi thao tác đọc và ghi trên bộ nhớ.
— Theo Von Newmann, một máy tính bao gồm 4 thành phần chính: bộ
nhớ (Memory), bộ xử lý số học (Arithmetic Logic Unit), bộ điều khiển (Control Unit),
thiết bị nhập/xuất.
Hình 3. Mô hình kiến trúc máy tính Von Newmann
o Bộ nhớ đọc ghi ngẫu nhiên lưu trữ các lệnh chương trình và dữ liệu
khi thực thi, lệnh chương trình (Program Instruc8on) được mã hóa dữ liệu để yêu
cầu máy tính làm điều gì đó, còn dữ liệu (Data) đơn giản chỉ là thông tin được sử
dụng bởi chương trình.
o Control Unit: lấy các lệnh chương trình và dữ liệu từ bộ nhớ, giải mã
câu lệnh rồi phối hợp một cách tuần tự các phép toán, các thao tác để hoàn thành
nhiệm vụ được lập trình sẵn.
o Arithmetic Logic Unit: thực hiện các phép toán số học và luận lý cơ
bản.
o Input/Output: nhằm giao tiếp với người sử dụng hoặc thiết bị ngoại
Trang7/25
Tính toán lưới GVHD: PGS.TS Nguyễn Phi Khứ
vi.
— Kiến trúc máy tính song song vẫn giữ nguyên kiến trúc cơ bản này, chỉ
nhân số bộ phận Unit lên nhiều lần, những phần kiến trúc nền tảng vẫn giữ nguyên như
kiến trúc máy tính tuần tự.
2.1.2. Phân loại kiến trúc máy tính của Flynn
— Có nhiều cách để phân loại máy tính song song, một trong những phân
loại được sử dụng rộng rãi từ năm 1966 đó là phân loại Flynn.
— Phân loại Flynn phân biệt kiến trúc máy tính song song theo cách phân
lớp theo số trạng thái có thể của câu lệnh và dữ liệu. Số trạng thái là Single hay
Multiple.

Hình 4. Mô hình các loại kiến trúc máy tính của Flynn
a) Kiến trúc đơn lệnh- đơn dữ liệu (Single Intruction- Single Data)
• Là một máy tính tuần tự (non - Parallel). Là loại máy tính lâu đời
và cũng là loại máy tính phổ biến nhất ngày nay chẳng hạn như các máy tính PC dùng
cho cá nhân, máy trạm,…
• Single Intruction: một dòng câu lệnh được tác động bởi CPU trong
suốt một chu kỳ đồng hồ
Trang8/25
Tính toán lưới GVHD: PGS.TS Nguyễn Phi Khứ
Hình 5. Minh họa tiến trình thực thi trong kiến trúc SISD
• Single Data: chỉ một dòng dữ liệu được dùng như đầu vào trong
suốt một chu kỳ đồng hồ.
b) Kiến trúc đơn lệnh- đa dữ liệu (Single Instruction-Multiple Data)
• Là máy tính song song phù hợp để giải quyết những bài toán
chuyên đòi hỏi tốc độ xử lý cao như bài toán đồ thị, xử lý ảnh,…
• Single Instruction: tất cả các đơn vị xử lý thực hiện cùng lệnh ở bất
cứ chu kỳ nhất định nào.
• Multiple Data: mỗi đơn vị xử lý có thể hoạt động trên một phần tử
dữ liệu khác nhau.
Hình 6. Minh họa tiến trình thực thi với kiến trúc máy tính SIMD
• Có hai loại biến thể của loại kiến trúc này là Proccesor Arrays
(Connection Machine CM-2,MasPar MP-1 & MP-2, ILLIAC IV) và Vector Pipelines
(IBM 9000, Cray X-MP, Y-MP & C90, Fujitsu VP, NEC SX-2, Hitachi S820,
ETA10)
c) Kiến trúc đa lệnh – đơn dữ liệu (Multiple Instruction, Single Data)
• Là loại máy tính song song, tuy nhiên không tồn tại loại máy tính
này bao giờ mà nó chỉ dừng ở mức thử nghiệm, một trong số đó là máy tính Carnegie-
Mellon C.mmp (1971).
• Multiple Instruction: mỗi đơn vị xử lý hoạt động trên dữ liệu độc
lập thông qua dòng câu lệnh riêng biệt.

• Single Data: dòng dữ liệu duy nhất được đưa vào nhiều đơn vị xử
lý.
Trang9/25
Tính toán lưới GVHD: PGS.TS Nguyễn Phi Khứ
Hình 7. Minh họa tiến trình thực thi với kiến trúc máy tính MISD
d) Kiến trúc đa lệnh - đa dữ liệu (Multiple Instruction- Multiple Data)
• Là loại máy tính song song.
• Multiple Instruction: mỗi bộ xử lý có thể thi hành dòng câu lệnh
khác nhau .
• Multiple Data: mỗi bộ xử lý có thể làm việc với dòng dữ liệu khác
nhau.
• Hiện tại, đây là loại máy tính song song hiện đại nhất, phổ biến
nhất, bao gồm các loại siêu máy tính hiện đại, các máy tính kết nối mạng theo cụm và
lưới (clusters and grids), máy tính đa xử lý đối xứng (multi-processor SMP), các máy
tính multi-core PCs. Ngoài ra, kiến trúc máy tính này còn bao gồm nhiều kiến trúc
con SIMD.
Hình 8. Minh họa tiến trình thực thi với kiến trúc máy tính MIMD
• Kiến trúc MIMD chia sẻ bộ nhớ: Việc truy cập có thể đồng bộ
(Uniform Memory Access) hay không đồng bộ (Nonumiform Memory Access), xác
định hay không xác định.
Uniform Memory Access (UMA): phổ biến trong loại máy này là
các máy đa bộ xử lý đối xứng (Symmetric Multi Processor: SMP), các bộ xử lý đồng
Trang10/25
Tính toán lưới GVHD: PGS.TS Nguyễn Phi Khứ
nhất, độ ưu tiên và thời gian truy cập tới bộ nhớ là như nhau.
Hình 9. Kiến trúc Uniform Memory Access (UMA)
Nonumiform Memory Access (NUMA): một máy tính loại NUMA
thường được tạo ra bằng cách liên kết về mặt vật lý hai hoặc nhiều máy SMP.
Hình 10. Kiến trúc Nonumiform Memory Access (NUMA)
Hệ thống phân phối bộ nhớ đòi hỏi phải có mạng truyền thông để

kết nối bộ nhớ liên xử lý.
Ưu điểm: bộ nhớ có thể mở rộng với số bộ xử lý, không có nhiễu
sóng bộ nhớ hoặc chi phí để duy trì sự liên lạc giữa các bộ nhớ cache, chi phí hiệu quả.
Nhược điểm: lập trình viên chịu trách nhiệm về dữ liệu truyền
thông giữa các bộ vi xử lý, khó để lập bản đồ cấu trúc dữ liệu hiện có để tổ chức bộ
nhớ này.
• Kiến trúc MIMD bộ nhớ phân tán: được sử dụng cho máy tính lớn
nhất và nhanh nhất hiện nay. Hệ thống bộ nhớ phân tán đòi hỏi có một mạng giao tiếp
để kết nối giữa bộ nhớ của các bộ xử lý, mỗi bộ nhớ có một địa phương riêng, hoạt
động độc lập, khi một bộ xử lý muốn truy cập tới dữ liệu trong bộ xử lý khác, nhiệm
vụ người lập trình là chỉ ra cách để truyền dữ liệu bằng cách nào và khi nào và thực
hiện đồng bộ hóa các task. Nó cũng có một một số ưu điểm và nhược điểm như sau:
Ưu điểm: khi tăng bộ xử lý thì cũng tăng bộ nhớ tương ứng, mỗi bộ
xử lý nhanh chóng truy cập tới bộ nhớ riêng mà không cần được can thiệp và chi phí.
Nhược điểm: người lập trình phải can thiệp nhiều vào quá trình
Trang11/25
Tính toán lưới GVHD: PGS.TS Nguyễn Phi Khứ
truyền dữ liệu, dữ liệu từ bộ nhớ toàn cục phải được ánh xạ vào bộ nhớ cục bộ, thời
gian truy cập bộ nhớ không đồng nhất.
Hình 11. Kiến trúc MIMD bộ nhớ phân tán
2.2Các mô hình lập trình song song (Parallel Programming Model)
2.2.1. Mô hình Shared Memory (không có Threads)
— Trong mô hình lập trình này, các task chia sẻ không gian địa chỉ chung
mà các task đọc ghi dữ liệu bất đồng bộ, người lập trình không cần chỉ định việc truyền
dữ liệu giữa các task mà sử dụng các cơ chế khác nhau như locks/semaphores để kiểm
soát việc truy cập đến các Share Memory, sử dụng các trình biên dịch có sẵn của hệ
thống, các phần cứng và phần mềm được đặc tả toàn cục còn bộ nhớ thì được chia sẻ
một cách vật lý thông qua mạng. Một nhược điểm trong mô hình này là do nhiều bộ xử
lý dùng chung dữ liệu nên khó giữ được tính nguyên thủy của dữ liệu.
2.2.2. Mô hình đa luồng (Thread)

— Trong mô hình lập trình song song đa luồng, một tiến trình có thể có
rất nhiều luồng xử lý. Mỗi luồng có thể được coi là một thủ tục con của chương trình
chính và được thực hiện song song cùng các luồng khác, các luồng giao tiếp với nhau
thông qua vùng nhớ toàn cục. Điều này đòi hỏi có một cơ chế đồng bộ giữa các luồng
nhằm tránh xung đột trong truy cập bộ nhớ, các luồng có thể sinh ra hay kết thúc
nhưng chương trình chính thì vẫn tồn tại cho đến khi hoàn thành công việc. Mô hình
này thường gắn với các kiến trúc chia sẻ bộ nhớ (SMP). Mỗi Thread có thể có dữ liệu
địa phương nhưng cũng có thể chia sẻ toàn bộ dữ liệu của chương trình chính nhằm tiết
kiệm chi phí liên quan đến việc sử dụng lại tài nguyên cho mỗi Thread. Người lập trình
theo mô hình này thường sử dụng các thư viện lập trình đa luồng như Open MP hoặc
Trang12/25
Tính toán lưới GVHD: PGS.TS Nguyễn Phi Khứ
sử dụng các chỉ thị trực tiếp trong chương trình.
Hình 12. Mô hình đa luồng (Thread)
2.2.3. Mô hình truyền thông điệp (message passing)
— Truyền thông điệp là mô hình được sử dụng rộng rãi trong tính toán
song song hiện nay. Thường áp dụng cho hệ thống phân tán, một chương trình theo mô
hình này bao gồm nhiều chương trình chạy trên các nút với chuỗi lệnh và bộ nhớ riêng.
Mỗi chương trình con có một định danh duy nhất và chúng tương tác với nhau bằng
việc gửi và nhận thông điệp trên các định danh. Việc truyền dữ liệu thường yêu cầu có
sự hợp tác giữa các tiến trình, sử dụng các hàm thư viện có sẵn để hiện thực thao tác
chuyển thông điệp, các hàm này được gọi trong chương trình, người lập trình chịu
trách nhiệm xác định sự song song của giải thuật. Phương pháp này được sử dụng rất
rộng rãi trên thế giới, hiện nay có hai thư viện truyền thông điệp được sử dụng là PVM
và MPI.
Trang13/25
Tính toán lưới GVHD: PGS.TS Nguyễn Phi Khứ
Hình 13. Mô hình truyền thông điệp (Message Passing)
2.2.4. Mô hình song song dữ liệu (Data Parallel Model)
— Các phần việc song song tập trung vào việc thực hiện xử lý trên một

tập dữ liệu. Tập dữ liệu thường được tổ chức theo cấu trúc thông thường như mảng
một chiều hay mảng nhiều chiều. Tập các tác vụ (task) cùng làm việc trên một cấu trúc
dữ liệu, tuy nhiên mỗi tác vụ làm việc với một phần khác nhau của cấu trúc dữ liệu đó.
Với kiến trúc bộ nhớ chia sẻ, các tác vụ có thể truy cập vào cùng một cấu trúc dữ liệu
thông qua bộ nhớ toàn cục, trên kiến trúc bộ nhớ phân tán, cấu trúc dữ liệu này được
chia ra thành từng phần và nằm trên phần bộ nhớ cục bộ của mỗi tác vụ. Lập trình với
mô hình song song dữ liệu thường được thực hiện bằng cách viết một chương trình với
một cấu trúc song song dữ liệu (Data Parallel Construct). Cấu trúc này có thể gọi đến
thư viện chương trình con song song hoặc những chỉ thị biên dịch được chấp nhận bởi
trình biên dịch song song. Việc song song hoá dữ liệu được thực hiện với sự hỗ trợ của
các trình dịch.
Hình 14. Mô hình song song dữ liệu (Data Parallel Model)
2.2.5. Mô hình lai (Hybrid Model)
— Là sự kết hợp các mô hình đã mô tả trước đây chẳng hạn như kết hợp
mô hình chuyển thông điệp MPI và mô hình Threads (OpenMP). Các Thread thực hiện
tính toán dùng dữ liệu địa phương của node tính toán và khi truyền dữ liệu giữa các
tiến trình trên những node khác nhau thì dùng MPI.
Trang14/25
Tính toán lưới GVHD: PGS.TS Nguyễn Phi Khứ
Hình 15. Mô hình lai (Hybrid Model)
2.2.6. Mô hình SPMD và MPMD
Hình 16. Mô hình SPMD và MPMD
— Mô hình SPMD – Single Program Multiple Data: đây là mô hình lập
trình cấp cao, có thể được xây dựng dựa trên tổ hợp tùy ý của các mô hình lập trình
trên. Trong mô hình này, tất cả các task thi hành bản sao của cùng chương trình một
cách đồng thời và có thể sử dụng dữ liệu khác nhau. Chương trình này có thể là
Thread, message passing, data parallel hay hybrid.
— Mô hình MPMD – Multiple Program Multiple Data: các task có thể
thi hành các chương trình khác nhau một cách đồng thời cũng giống như SPMD, nó tốt
hơn SPMD ở chỗ giải quyết các bài toán mà có sự phân ly các task theo chức năng.

2.3Thiết kế chương trình song song
2.3.1. Việc song song hóa
— Việc thiết kế và phát triển các chương trình song song là một quá trình
thực hiện thủ công, người lập trình thường phải chịu trách nhiệm cho việc nhận và hiện
Trang15/25
Tính toán lưới GVHD: PGS.TS Nguyễn Phi Khứ
thực song song trong chương trình.
— Một trình biên dịch song song thường làm việc theo 2 cách khác nhau
là tự động hoàn toàn hoặc theo sự hướng dẫn của người lập trình. Theo cơ chế tự động
hoàn toàn thì trình biên dịch phân tích mã nguồn và xác định cơ hội song song, trong
đó các vòng lặp for …do được xem xét thường xuyên nhất. Theo cơ chế còn lại thì
người lập trình chỉ rõ cách thức để song song một đoạn chương trình. Cũng có thể là sự
kết hợp hai cơ chế. Mỗi cơ chế có một số ưu điểm cũng như nhược điểm, chẳng hạn
như khi làm việc với một mã nguồn tuần tự với thời gian cũng như chi phí hạn chế thì
dùng song song tự động tốt hơn tuy nhiên không thể tránh khỏi việc kết quả đưa ra có
thể bị sai hoặc là hiệu năng bị giảm, song song tự động thì linh hoạt hơn, hạn chế được
những đoạn lệnh không cần song song.
2.3.2. Bài toán và chương trình được song song
— Một chương trình được song song khi các phần tử dữ liệu không có
tính phụ thuộc lẫn nhau.
— Khi xác định bài toán song song được thì cần thực hiện những công
việc sau:
o Xác định điểm nóng của chương trình cần được song song vì
thực tế chỉ có vài chỗ cần được tính toán song song.
o Xác định điểm thắt cổ chai, điểm thắt nghẽn (bottlenecks) trong
chương trình, điều này xảy ra khi có một vài tiến trình xử lý chậm so với các tiến trình
khác nên xảy ra tình trạng không cân đối làm mất tính song song, để giải quyết tình
trạng này thì cần cơ cấu lại chương trình hoặc dùng thuật toán khác để loại bỏ những
tiến trình này.
o Xác định những yếu tố cản trở việc song song mà chủ yếu là phụ

thuộc dữ liệu (data dependence).
o Khảo sát các thuật toán khác nếu có thể.
o Tận dụng lợi thế của các phần mềm song song cũng như thư
viện toán học hiệu quả của các nhà cung cấp.
Trang16/25
Tính toán lưới GVHD: PGS.TS Nguyễn Phi Khứ
— Đặc điểm của chương trình song song:
o Tính đồng thời (concurrency), nhằm để có thể thực hiện trên
nhiều bộ xử lý.
o Tính tỷ lệ hay co giãn được, hay khả năng mở rộng (scalability-
khả cỡ) thể hiện việc thuật giải có thể cài đặt mà không quan tâm đến số bộ xử lý
mà chúng sẽ thi hành.
o Tính co giãn thể hiện qua việc khi số bộ xử lý tăng lên, số tiến
trình trên một bộ xử lý sẽ thu ít lại, nhưng thuật giải chính nó lại không cần thay đổi.
o Tính địa phương (locality) nhằm giảm chi phí thời gian của
thuật giải. Do khi đó việc truy cập đến local data (dữ liệu trên máy tại chỗ) xảy ra
thường xuyên hơn việc truy cập đến những remote data (dữ liệu ở xa).
o Tính mô đun hoá (modularity), hoàn toàn giống với sự mong đợi
trong lập trình tuần tự, thực chất là sự phân hoạch những thực thể phức tạp thành các
thành phần đơn giản hơn.
2.3.3. Phân chia (Partitioning)
— Bài toán được tách ra thành các phần công việc rời rạc để phân phối
cho nhiều task, khi đó việc tính toán sẽ được thực hiện trên các vùng dữ liệu nhỏ hơn,
tiến trình tính toán cũng nhỏ hơn. Có hai cách để phân chia:
o Phân chia theo miền (domain decomposition): theo cách này thì
dữ liệu được phân rã và các task sẽ làm việc với các dữ liệu được phân rã đó. Ví dụ để
sắp xếp một mảng gồm 1 triệu phần tử ta có thể chia ra thành 4 mảng con giao cho 4
tiến trình xử lý một cách đồng thời, sau đó là quá trình tổng hợp kết quả.
o Phân rã theo chức năng (functional decomposititon): trọng tâm
của quá trình phân rã này là phân chia thao tác xử lý dữ liệu chứ không phải là phân

chia dữ liệu. Ví dụ để sắp xếp một mảng các phần tử theo chiều tăng dần và giảm dần
ta dùng 2 task riêng biệt, một task xử lý sắp xếp tăng còn task còn lại xử lý sắp xếp
giảm.
Trang17/25
Tính toán lưới GVHD: PGS.TS Nguyễn Phi Khứ
2.3.4. Truyền thông (giao tiếp)
— Là sự phối hợp qua lại giữa các task (được sinh ra bởi quá trình phân
rã) để có thể hoạt động được. Trong thực tế, mỗi tiến trình không thể thi hành một cách
độc lập mà có sự liên hệ qua lại để trao đổi dữ liệu cũng như kết quả thực thi giữa các
tiến trình. Tuy nhiên, sự giao tiếp giữa các task là không nhiều vì dữ liệu ít phụ thuộc
lẫn nhau.
2.3.5. Tích tụ (agglomeration)
— Đây là giai đoạn gom các task lại để tăng tính địa phương và giảm chi
phí giao tiếp. Ví dụ một khối dữ liệu lớn có thể được chia nhỏ thành n phần khi đó chi
phí cho giao tiếp sẽ được giảm xuống đáng kể.
2.3.6. Ánh xạ (Mapping)
— Các bài toán khi áp dụng thuật giải song song thì số tiến trình (task)
của mỗi bài toán là khác nhau sao cho tổng thời gian thi hành là nhỏ nhất. Có hai kiểu
ánh xạ là:
o Ánh xạ tĩnh (Static mapping): phân phối các tiến trình đến các bộ
xử lý trước khi thực thi thuật toán.
o Ánh xạ động (Dynamic mapping): được thực hiện khi ánh xạ tĩnh
phân phối công việc không cân bằng giữa các bộ xử lý vì nó tiến hành phân phối trong
suốt quá trình thuật toán thực thi.
Trang18/25
Tính toán lưới GVHD: PGS.TS Nguyễn Phi Khứ
PHẦN 3. BÀI TOÁN TÍNH SỐ PI TRÊN MÔI TRƯỜNG PVM
3.1 Kiến trúc PVM
— Thuật ngữ PVM – máy ảo song song được dùng để coi một máy tính logic
có bộ nhớ phân tán, bên trong đó các host như là những máy tính thành viên. Kiến trúc

vật lý và logic được minh họa như hình sau.
Hình 17. Mô hình minh họa máy ảo song song
— PVM cung cấp các thủ tục để khởi tạo các tác vụ trên máy ảo (virtual
machine) và cho phép các tác vụ này trao đổi với nhau.
Hình 18. Mô hình minh họa trao đổi giữa các máy ảo song song
3.2 Cài đặt môi trường PVM
3.2.1. Chuẩn bị hệ thống:
— Trước tiên cài đặt các hệ điều hành trên hệ thống máy ảo, để giải quyết
Trang19/25
Tính toán lưới GVHD: PGS.TS Nguyễn Phi Khứ
trong bài toán này ta thiết lập hệ thống bao gồm các phần sau:
o Cài đặt máy ảo WMware version 9.
o Cài đặt hai hệ điều hành Linux (CenOS 6.4).
o Thiết lập cấu hình hệ thống.
o Cài đặt PVM.
3.2.2. Cài đặt máy ảo WMware version 9 và hệ điều hành Centos
— Sau khi cài đặt máy ảo WMware version 9 thì ta tiến hành cài đặt hai
hệ điều hành Linux (CenOS 6.4) vì mục đích là ta dùng hai tiến trình để thực thi.
3.2.3. Thiết lập cấu hình hệ thống cho PVM
— Bước 1: Cấu hình địa IP
Máy master (172.16.1.221/16)
Máy slave (172.16.1.222/16)
— Bước 2: cấu hình các file system cho máy master
Cài đặt gói rsh_Server, xinetd: (master, slave) – sử dụng lệnh
[root@master ~]$ yum –y rsh*
Chỉnh sửa các file : rlogin, rsh, rexec trong thư mục etc/xinetd.d
Chỉnh sửa các file hệ thống: Hosts, hosts.equiv, exports, securetty…
(trong thư mục etc)
Tạo thư mục dùng chung cho hệ thống : tạo mới file exports (trong thư
mục etc) có nội dung sau:

Máy slave: tương tự như trên chình sửa các file (hosts, hosts.eqiuv,
securetty).
— Bước 3. Cài đặt PVM
Tạo biến môi trường trên master
Tạo file .rhosts (trên master, slave)
Khởi động lại hệ thống để thiết lập các biến môi trường và các cấu
hình file hệ thống.
Trang20/25
Tính toán lưới GVHD: PGS.TS Nguyễn Phi Khứ
Cài đặt PVM
• Giải nén file: trực tiếp hoặc bằng lệnh sau:
• [tamem@master ~]$ tar zxvf pvm3.4.6.tgz
• Kiểm tra lại biến môi trường
• Cài đặt:
• [tamem@master ~]$ cd PVM_ROOT
• [tamem@master pvm3]$ make
3.3 Hiện thực bài toán tính số PI trên môi trường PVM:
3.3.1. Thuật toán miệng vòi (SPIGOTALGORITHM):
Hai thuật toán được khám phá vào năm 1995 đã mở ra một hướng đi mới
cho nghiên cứu về số . Chúng gọi là các thuật toán "miệng vòi" (spigot algorithms)
bởi vì, giống như nước nhỏ giọt khỏi một miệng vòi, chúng tạo ra từng chữ số riêng lẻ
của , những số này không được tái sử dụng sau khi đã được tính ra. Điều này đối lập
với các chuỗi vô hạn hay những thuật toán lặp, là những thuật toán lưu giữ và sử dụng
tất cả những chữ số trung gian cho đến khi kết quả cuối cùng được tạo ra.
Một thuật toán miệng vòi khác, thuật toán trích xuất chữ số Bailey-
Borwein-Plouffe (BBP digit extraction algorithm), được phát hiện vào năm 1995 bởi
Simon Plouffe:
Thuật toán này có thể sinh ra bất kì chữ số hệ thập lục phân của mà không
tính toán tới các chữ số đứng trước nó. Các chữ số nhị phân hay bát phân riêng rẽ có
thể trích xuất từ các chữ số hệ thập lục phân.

3.3.2. Phát biểu bài toán:
Tính số Pi theo thuật toán miệng vòi.
Số pi được tính theo công thức:
Trang21/25
Tính toán lưới GVHD: PGS.TS Nguyễn Phi Khứ
3.3.3. Phân tích bài toán:
Điểm cốt lõi của công thức ở trên là khi tính số thập phân của π ở dạng nhị
phân hay ở hex thì không cần phải cộng hay trừ các số đã tính được trước đó cho mỗi
bước xê dịch của i đang tiến từ 1 tới một số lớn hay vô cực. Nói cách khác thì giá trị
tại các bước trong công thức độc lập nhau nên bài toán có thể song song được.
3.3.4. Thiết kế thuật toán:
− Thuật toán tuần tự:
Vòng lặp i chạy từ 1 đến số vô cùng lớn
Với mỗi giá trị i ta lần lượt tính giá trị mỗi phần tử trong tổng
Sau đó cộng tất cả giá trị lại.
for( i = 0; i <= N; i++ )
{
s1 = 4.0/(8*i + 1);
s2 = 2.0/(8*i + 4);
s3 = 1.0/(8*i + 5);
s4 = 1.0/(8*i + 6);
s += (s1-s2-s3-s4)/powl(16.0,i);
}
− Thuật toán song song:
1. Gửi yêu cầu tính toán cho các tiến trình
for ( p = 0; p < aP; p++ )
{
pvm_initsend( PvmDataDefault );
pvm_pkint( &r, 1, 1 );
pvm_pkint( &p, 1, 1 );

pvm_send( tid[p], 22222 );
Trang22/25
Tính toán lưới GVHD: PGS.TS Nguyễn Phi Khứ
}
2. Tính toán cho số tiến trình dư
for ( i = P*r; i < N; i++ )
{
s1 = 4.0/(8*i + 1);
s2 = 2.0/(8*i + 4);
s3 = 1.0/(8*i + 5);
s4 = 1.0/(8*i + 6);
s += (s1-s2-s3-s4)/powl(16.0,i);
}
3. Thu hồi kết quả tính toán của các tiến trình từ máy con
for ( p = 0; p < aP; p++ )
{
pvm_recv( tid[p], 99999 );
pvm_upkdouble( &sp, 1, 1 );
s += sp;
}
3.3.5. Kết quả thực thi
Nhận xét: kết quả cho bài toán ở hai cách tính là như nhau, tuy nhiên thời
gian thuật toán song song ít hơn gần một nửa. Nguyên nhân là do thuật toán
song song dùng 2 tiến trình để tính và phí thời gian dành để thu hồi kết quả
từ các tiến trình là không đáng kể.
Trang23/25
Tính toán lưới GVHD: PGS.TS Nguyễn Phi Khứ
PHẦN 4. NHẬN XÉT ĐÁNH GIÁ VÀ HƯỚNG PHÁT TRIỂN
− Nhận xét, đánh giá:
o Đạt được:

Trình bày nội dung lý thuyết tính toán song song, áp dụng vào bài toán
tính số π trên môi trường PVM bằng thuật toán miệng vòi.
o Chưa đạt được:
Chưa thử nghiệm với hệ thống máy thật được gom cụm theo kiểu cluster.
− Hướng phát triển
Thử nghiệm bài toán trên hệ thống grid computing.
Trang24/25
Tính toán lưới GVHD: PGS.TS Nguyễn Phi Khứ
TÀI LIỆU THAM KHẢO
− Danh mục bài giảng, bài báo và luận văn:
[1]. Bài giảng CGrid Computing – PGS.TS Nguyễn Phi Khứ.
[2]. Bài giảng Tính toán song song và phân tán – PGS.TS Trần Văn Lăng.
[3]. Luận văn Đánh giá hiệu năng hệ thống song song phân cụm – Phạm
Thanh Liêm.
[4]. Báo cáo Lập trình song song – nhóm sinh viên ĐH Cửu Long.
− Danh mục Websites
[1]. />87ng_v.C3.B2i
[2]. />[3]. />%C3%Adnh

Trang25/25

×