Phần này chúng ta giới thiệu tóm tắt cách phát triển các chương trình song song thực hiện trên những máy tính nối mạng trong môi trường UNIX, hoặc mạng LAN. PVM là hệ thống cho phép một tuyển tập các trạm máy tính không thuần nhất và các máy tính kết nối với nhau để xử lý song song. Nó có những đặc tính chính:
Thực hiện theo mô hình truyền thông điệp tường minh
Hỗ trợ sự kết nối không thuần nhất: PVM hỗ trợ sự kết hợp của các máy tính, mạng máy tính và nhiều loại chương trình ứng dụng.
Hỗ trợ đa bộ xử lý: PVM sử dụng những khả năng truyền thông điệp trong hệ đa bộ xử lý để khai thác hết khả năng của phần cứng.
Tính toán dựa trên tiến trình: Đơn vị điều khiển thực hiện song song trong PVM là một tác vụ, đó là một luồng (Thread) làm nhiệm vụ điều khiển sự truyền thông và tính toán.
Thay đổi cấu hình theo yêu cầu: Các chương trình có thể thực hiện trên tập các máy được lựa chọn theo yêu cầu của NSD.
PVM xử lý tất cả các vấn đề định tuyến truyền thông điệp, chuyển đổi dữ liệu, lập lịch trong mạng máy tính. Hệ thống PVM gồm hai thành phần chính:
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
Thư viện các chương trình con giao diện của pvm: chứa các chương trình con để truyền thông điệp, quản lý các tiến trình, phối hợp các tác vụ và thay đổi các máy ảo.
Mô hình tính toán của PVM được xác định như hình 1.7. và một dạng kiến trúc có thể thiết lập như hình 1.8.
Hình 1.7. Mô hình tính toán của PVM
Cụm 1
Cụm 2
Cụm 3
Hình 1.8. Một kiến trúc của PVM
Nhập dữ liệu và phân đoạn
Xuất dữ liệu và hiển thị kết quả Máy tính 1 Máy tính 2 MP P Bridg e SIMD
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
Phƣơng thức thực hiện chƣơng trình trong PVM như sau:
Những chương trình viết bằng C/C++, Fortran 77 có thể chứa những lời gọi các hàm thự viện của PVM. Đây là những ngôn ngữ lập trình được PVM hỗ trợ. Các chương trình được dịch theo kiến trúc của hệ thống (host pool), các tệp
mã đích (object file) được đặt vào những nơi mà mọi máy tính đều truy cập được.
NSD tạo ra một bản sao của tác vụ chủ (master) hoặc khởi động một tác vụ. Một tiến trình được bởi động bởi một tiến trình khác được gọi là tiến trình tớ (slave). Những tiến trình này thực hiện một số tính toán cục bộ và trao đổi với nhau để giải quyết bài toán đặt ra.
Ví dụ: Chương trình in ra màn hình định danh của tác vụ (số nguyên) nhận
được từ pvm_myid(), sau đó sử dụng:
pvm_spawn() để tạo ra một bản sao và gọi chương trình hello_other. pvm_recv() để nhận thông điệp
pvm_exit() để kết thúc chương trình trong PVM
pvm_parent() nhận một tác vụ của tiến trình tớ từ tiến trình chủ pvm_initsend() khởi tạo buffer để gửi
pvm_pkstr() đặt một xâu vào buffer để gửi đi pvm_upkstr() đọc một xâu vào buffer
pvm_send() chuyển dữ liệu ở buffer tới tiến trình nhận được xác định bởi ptid. /* Chương trình chủ có tên Hello.c */
#include “pvm3.h” main(){
int cc, tid, msg; char buf[100];
printf(“Master ID number %x\n”, pvm_mytid()); cc = pvm_spawn(“Hello_other”, (char**)0, 0, “”, 1, &tid); if(cc== 1){
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
pvm_recv(tid, msg); pvm_upkstr(buf);
printf(“From master %x: %s\n”, tid, buf); } else printf(“Cannot start hello_other\n”);
pvm_exit(); }
/* Chương trình tớ có tên: hello_other.c */ #include “pvm3.h”
main(){
int ptid, msg; char buf[100];
ptid = pvm_parent();
strcpy(buf, “Hello world from “); gethostname(buff + strlen(buf), 64); msg = 1; pvm_initsend(PvmDataDefault); pvm_pkstr(buf); pvm_send(ptid, msg); pvm_exit(); }
Nhiều máy tính hỗ trợ hệ thống PVM thực hiện như: BBN Butterfly TC2000, 80386/486 PC chạy với UNIX, Thinking Machine’s CM-2, CM-5, Cray-2, Cray- 5MP, HP-9000 PA-RISC, Intel Paragon, Silicon Graphics IRIS, Sun 4, DEC Micro VAX, v.v.
Kết luận: Nội dung chính của chương 1 đã giới thiệu các kiến thức cơ bản nhất về vấn đề xử lý song song, các mô hình của máy tính song song cũng như khái niệm về thuật toán song song và nguyên tắc đánh giá độ phức tạp thuật toán. Các kiến thức này làm nền tảng cho việc nghiên cứu các chương tiếp sau của luận văn.
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
Chƣơng 2
CÁC THUẬT TOÁN TỐI ƢU TRÊN MÔ HÌNH ĐỒ THỊ