Sau khi các phán việc hoàn th à n h , công đoạn cuôi cù n g là kết bảng đen trong hệ chuyên gia và lơi - lặp iterativ e relaxtion thường sử dụng chiến lược song song hoá kết quà dẻ th iế
Trang 1ĨA P C H I K H O A H O C Đ H Q G H N K H TN & CN ĩ XIX N ,4 2003
CÁC C H IẾ N LƯỢC SO N G SO N G HÓA T H U Ậ T TO Á N T U Â N T ự
N g u v ề n V iệ t A n h
Khoa Công N ghệ, Đ H Q G H N
P h ạ m T r ầ n N h u
Viện Còng N g h ệ T hòng tin , T T K H T N QG
Tóm tắt: Trong nhiều (‘hiên lược song song hoá thuột toán tuôn tự cố ba chiến
lược thiết kẻ chương trinh song song tương đối phó biến là song song hoá kết
q u à s o n g s o n g h o á đ ạ i d iệ n v à s o n g s o n g h o á c h u y ê n b iệ t T h ò n g th ư ờ n g đ ể
song song hoá một bài toán chi sử d ụ n g một tro n g ba c h iế n lược th iế t ké nèu
t r ê n B à i b á o n à y sẻ p h â n tí c h vã so s á n h các c á c h t iế p c ặ n n à y t r o n p m ỏ i tr ư ờ n g
Parallel Virtual Machine (PVM) đối với bài toán sinh ra sô nguyên tò
MỜ d ầ u
Trong rất nh iều chiến lược khác n h a u để song song hoá th u ậ t toán tu ầ n tự có
ba chiến lược th iế t kẻ chương trìn h song song tương đối phố biến là song song hoá kết q u ả , so n g song hoá dại diện và song song hoá c h u y ê n biệt MỈỊC dù, t r o n g t ừ n g hài toán cụ th ể việc kết hợp các chiến lược thiết kẽ có th ế cho ta kết quả th ú vị, song thông thường tu ỳ thuộc tính c h ấ t bài toán chỉ một chiến lược th iế t kế t h u ậ t toán song song được chọn n h àm đ ạ t hiệu quả cao n h ất Trong ph ẩn đ ầ u c h ú n g tôi trìn h bày ba chiến lược th iế t kế nêu trên P h ầ n thứ hai ch ú n g tôi tr ìn h bày môi trường Parallel V irtu al M achine (PVM) được dùng trong quá tr ìn h th ứ nghiệm bài toán sinh ra sô nguyên tô tronK th u ậ t toán mã hoá RSA Tiếp theo c h ú n g tôi tr ìn h bày một sô th ư nghiệm và kêt quả của nó
1 C á c c h i ê n lư ợ c s o n g s o n g h o á p h ổ b iế n
l ỉ Song song hoá hết quả
Việc phân loại các chiến lược t hiết k ế th u ậ t toán song song phụ thuộc vào tính chất bài toán Song song hoá k ết quả (xem [1 ]) là cơ chế tín h toán song song tập
tr u n g tr ê n toàn hộ dữ liệu của hài toán Mồi bộ xử lý sẽ cho một p h ầ n k ết q u ả của bài toán và các bộ xử lý hoạt động song song sao cho các ph ần việc được th ự c hiện độc lập tôi đa có thể Sau khi các phán việc hoàn th à n h , công đoạn cuôi cù n g là kết
bảng đen (trong hệ chuyên gia) và lơi - lặp (iterativ e relaxtion) thường sử dụng chiến lược song song hoá kết quà dẻ th iết kê chương tr ìn h song song
Mỗi bài toán trong lớp các bài toán chia-để -trị (xem Ị2 Ị) thường được chia
th à n h các bài toán th à n h phần Mỏi bài toán th à n h p h ầ n được giải quyết độc lập và kết quả cuối cùng là sự két hợp các kết quả cùa bài toán th à n h phần
73
Trang 274 N g u yền Việt Arỉhy P h ạ m Trần N h u
T ro n g hộ thống bảng đen (xem [3]) cấu trúc dữ liệu th ể hiện mô h ìn h tín h toán Mỗi bộ xử lý độc lập có trách nhiệm q u ản lý, kiểm tr a tr ạ n g thái hiện thời và cập n h ậ t nó n ếu cần
T rong Idi - lặp (xem Ị4Ị) người ta chia không gian dữ liệu t h à n h các v ù n g có
q u a n hệ láng giềng, mỗi vùng này được một hay nh iều bộ vi xử lý đảm nhiệm Mỗi
bộ vi xử lý n ày đảm trá c h công việc theo từ n g vùng song song và khi cần có sự tru y ề n th ô n g điệp với các láng giềng
Việc th iế t k ế chương trìn h theo chiến lược song song hoá k ế t quả thông qua nảm giai đoạn Giai đoạn đầu cần phải mô h ìn h kết q u a dưới d ạ n g cấu trúc dữ liệu gồm nh iều th à n h phần, đồng thòi xác định được sự phụ thuộc giữa chúng Giai đoạn hai, p h â n mồi bộ xử lý đàm nhiệm công việc cho một hay nhiều th à n h phẩn và việc
p h ản chia này phải bảo đàm vấn đề hiệu s u ấ t của các bộ xừ lý Giai đoạn ba, xác định nguồn tài nguyên cần th iế t để thực hiện việc tín h toán các th à n h phần Bước tiếp th eo xác đ ịn h cách lấy các giá tr ị kết quả của các th à n h p h ầ n khi thực hiện xứ
lý song song Cuối cùng, là giai đoạn kết hợp các kết quả th à n h p h ần đê được két quả bài toán và kết thúc các xử lý
1.2 Song song hoá dai diên
T h iế t kê chương tr ìn h theo cơ chẽ song song hoá đại diện xác định cụ th ể công việc ph ải thực hiện để song song hoá Như vậy, để giải quyết một hài toán có nhiều công đoạn, mỗi công đoạn của bải toán được giải quyết song song cho đến khi hoàn
th à n h công đoạn đó và các công đoạn tiếp theo cùng được thực hiện tương tự cho đến khi bài to án dược giải quyết Các mô hình của chiến lược này là ch ủ - tớ, tính toán * tông hợp • tru y ề n thỏng
T rong mô hình chũ - tớ (xem |4Ị) bài to án cần giải dược chia th à n h các vấn để phụ thuộc lẳn n h au Các bộ xử lý đóng vai trò tớ tro n g mô h ìn h có nhiệm vụ xứ lý các vấn để này và giữa chúng được điểu phối bởi bộ xử lý đóng vai trò chủ Khác với phương p h áp chia * đẻ • trị, các vấn đê ỏ đáy không n h ấ t th iế t cù n g được tiến hành giải quyết, mà có th ể được giai qu y ết song song một cách tu ầ n tự
T rong mô h ìn h tín h toán • tổng hợp - tru y ề n thông (xem [2 ]) th iế t kẽ bao gồm tftì giai đoạn Giai đoạn tính toán thực hiện các tính toán cơ bán có tín h chất cục bộ giai đoạn tổng hợp k ết hựp các dữ liệu cục bộ th à n h dữ liệu to àn cục, giai đoạn tru y ề n th ô n g tr ả lại các thông tin to à n cục cho các bộ xử lý
Việc th iế t k ế chường trìn h theo chiến lược song song hoá đại diện được thực hiện th ô n g qua ha giai đoạn Giai đoạn đầu xác định các công việc cẩn phải thực hiện hỏi các bộ xù lý Trong giai đoạn tiếp theo cần phái xác đ ịn h hộ xử lý đỏng vai trò điếu khiển các công việc.Cuối cùng cần phỉii n h ậ n biét được k é t q u ả còng việc
1.3 Song song hoá chuyén biệt
T rong chiến lược song song hoá chuyên biệt, bài toán cần giải quyết bao gồm nhiêu công việc, mỗi công việc có đặc th ù riêng được giao cho một bộ xứ lý chuyên
Trang 3Các chiê n lược so n g soììịỊ hoã t h u ậ t toá n t u ầ n tự
(lụnự Ngoài r;i hộ tlìônn can một bộ xữ lý giừ vai trò ag en t, điểu phôi quá tr ìn h thực hiện công việc TroĩìỊí mỗi công việc đặc thù, các p h ầ n việc nhò hờn (lược thực hiện
s o n g s o n g S a u k h i rá c- p h a n v iệ c n à y h o à n t h à n h , c ầ n t i ê n h à n h “ p h ô i h d p ” c á c k é t
q u a d é h o à n t h à n h c ô n g v iệ c
Một sô mô hinh thưòng gặp tron<ĩ chiên lược thiêt kê này là; ông dẫn và hộ lọc
k h á r h - phục vu
T r o n g m ô h ì n h ỏ n g ( l ầ n VÍI b ộ l ọ c [3] d ò n g d ữ l i ệ u k ê t CỊUỈÌ r a c ủ a q u á t r ì n h x ứ
ly A là d ữ l i ệ u v à o r ũ a (Ịuá t r ì n h x ử lý B.
khách dược gửi (lèn các bộ xú lý đóng vai trò phục vụ dế xử lý
2 P a r a l l e l V i r t u a l M a c h i n e (PV M )
PVM là tập hợp phẩn mềm cõng cụ và th ư viện kết hợp các máy tín h khác
n h a u vê cấu hình n h ư một máy ảo Mục tiêu chính cùa hệ th ố n g PVM là tã n g hiệu
s u ấ t t i n h t o á n b à n g c á c h k ế t h d p c á c m á y t í n h t h ô n g q u a x ử lý s o n g s o n g t r ê n c á c bộ
sư lý
Hệ th ố n g PVM gồm hai th à n h phần chính Thứ n h ấ t là tiến tr ìn h thường trú
(daemon) thư ờ ng gọi là pvmcM hay pvmd chạy trê n t ấ t cả các máy tính th à n h viên
của máy tín h song song ào Để thực hiện ứng d ụ n g PVM, trước h ết tạo ra một máy
ao bàn g cách chạy PVM Khi đó ứng dụng PVM sẽ được khởi động trẽ n t ấ t cả các máy tính th à n h viên T hứ hai là thư viện các hàm giao diện PVM thường gọi là
libPVM3.a T hư viện gồm các hàm phục vụ cho việc tru y ề n thông điệp, sin h tiến
trìn h , phối hợp công việc v.v
Mô hình tính toán PVM (lựa trên khái niệm một ửng dụng hao gồm n h iề u cóng
việc Hai phương p h á p thường được PVM sử d ụ n g là song song hoá chức n ả n g và
song song hoá dữ liệu Phương pháp song song các chức nâng, ửng d ụ n g bao gồm
nhiều chửc năng, các chức nAng dược thực hiện song song Phương p h á p song song
hoá dữ liệu các tiên tr ìn h xử lý n h ư nhau nhưng mỗi tiến tr ìn h chỉ xử lý một phàn
dữ liệu của ứng dụng
Hệ thông PVM hỗ trợ ngôn ngữ lập trìn h c , K ortran và C++ Trong đó ngôn
ngừ C++ được sử d ụ n g phổ biến n h ất Các thử nghiệm của chúng tôi cúng sử d ụ n g
ngôn IIgữ C++
2.1 Dặc diêm môi trường PVM
chọn bơi chính người d ù n g khi thực hiện PVM Trong quá tr ìn h tín h toán, việc thêm
hay bớt các máy th à n h viên thực hiện rất dề dàng
chọn các máy th à n h viên phù hợp trong quá tr ìn h tín h toán
Trang 476 Ng uyền Việt Anhy P h ạ m Trần N h u
- T ín h toán dựa trê n bộ xử lý: Đờn vị cùa PVM là công việc, n h iề u công việc có thẻ th ự c hiện tr ê n một bộ xứ lý có một luồng điều kh iển tu ầ n tụ độc lập thực hiện việc chuvển đổi giữa quá tr ìn h tr u y ề n thông và tín h toán
- Sừ d ụng mỏ hình tru y ền thông điệp: Điều phối việc tru y ề n th ô n g giữa các máy th à n h viên qua việc gửi/nhận thông điệp
- Hỗ trợ m ạn g hồn tạp: Cho phép các máy th à n h viên cỏ cấu hình khác n h a u ,
hổ trợ n h iề u bộ xứ lý
2.2 N g u y ê n lý h o ạ t d ò n g
T hông thường chương trìn h được viết trê n PVM qua cốc hước khởi tạo các tiến trìn h , q u ả n lý tr u y ề n thông điệp, tín h toán, tổng hựp k ế t quả và hiển thị chúng, kết
th ú c các tiến trìn h
- K hở i tạo tiên trìn h
Mỗi tiến trìn h trong hệ thống PVM được định d a n h bỏi một số nguyên do pvmd cu n g cấp Hàm p v m _ m y tid ( ) thực hiện công việc này Nó kết n ạp tiến tr ìn h vào hệ th ô n g PVM nếu chúng chưa được kết nạp Hàm p v m _ s p a w n ( c h a r * ta s k ,
c h a r * * a rg v , i n t fla g , c h a r * w h e r e , i n t i n t a s k , i n t * tid s ) sin h ra các bản sao của tiến tr ìn h cho bởi th a m số t a s k trê n máy ảo Danh sách các đôi số của tiến trin h
đó th ô n g qua th a m số a r g v Cờ f l a g cho một số tuý chọn đặc biệt, thường sử dụng
giá trị mặc định cho phép PVM tự xác định nơi khỏi tạo tiến tr ìn h Hàm tr ả về sô nguyên cho biết số lượng các tiến tr ìn h được khởi tạo th à n h công, hoặc mă lỗi trong trường hợp ngược lại Nếu th à n h cỏng th am sô t i d s d a n h sách các số nguyên định
d a n h tiế n trìn h
- Q u á n lý tru yển th ò n g đ iệp
Q uá tr ìn h gửi thông điệp tro n g hệ thống PVM gồm ba giai đoạn Đầu tiên một vùng đệm được khỏi tạo thông q u a hàm p v m _ i n i t s e n d ( i n t e n c o d i n g ) sè tạo ra vùng đệm d àn h cho dữ liệu mới Giai đoạn tiếp theo thỏng điệp được n ạp vào vùng đệm th ô n g qua hàm p v m _ p k * () Tùy vào kiểu dữ liệu nạp vào v ùng đệm, PVM xây dựng h à m tương ứng, ví dụ p v m _ p k i n t( ) dành cho dừ liệu , kiểu nguyên,
p v m _ p k f l o a t ( ) d àn h cho kiểu thực Công đoạn cuối cùng là việc thực hiện gửi thông
điệp đến tiến tr ìn h khác thông qua hàm p v m _ s e n d ( i n t t i d , i n t m s g t a g ) gửi thông điệp định d an h bởi m s g t a g đến tiến trìn h định danh bởi tid
Q uá tr ìn h nhộn thông điệp được thực hiện thông q u a hàm p v m _ r e c v ( i n t t i d ,
i n t m s g t a g ) S au khi n h ậ n thông điệp, dừ liệu được lấy ra từ v ùng đệm thông qua hàm p v m _ u p k * ( ) c ầ n phải sử d ụ n g hàm phù hựp với kiểu dừ liệu, ví dụ
p v m _ u p k i n t ( ) dùng cho kiểu dữ liệu kiểu nguyên, p v m _ u p k f l o a t ( ) dùng cho dữ liệu kiểu thực
- K ế t t h ú c t i ế n t r i n h
T rong q u á trìn h hoạt động PVM cho phép loại hô tiến tr in h khi tiến trin h dã thực h iện xong công việc hoặc không cần thiêt nữa thông qua hàm p v m _ e x it( ) , cho tiến tr ìn h thường tr ú pvmd biết rằ n g tiến trìn h đó được loại khỏi hệ thống PVM
Trang 5Các chiên lược s o n g so n g hoá t h u á t to á n t u ầ n tự 77
3 T h ử n g h i ệ m , s o s á n h c á c c h i ê n lư ợ c s o n g s o n g h o á
Trong quá trin h thực hiện để tài “Xứ lý song song trê n PVM ứng d ụ n g trong bài toan hảo mật" C húng tôi có sù dụng th u ậ t toán RSA đê m ã hoá Vấn để m àu chốt cua th u ậ t toán RSA là việc sinh ra các sô' nguyên tố Trong q u á tr ìn h th ủ
nghiệm chúng tỏi thực hiện cài đ ặ t bài toán tìm số nguyên tố th eo ba chiên lược
trôn, (iiai th u ậ t mà chúng tói dùng là giải t h u ậ t “sàng E ra to s th e n e s ”
G iai t h u ậ t sà n g E ra to sth e n e s:
Rước ĩ: N h ậ p n
Bước 2 : L o ạ i bò 1
Bước 3: L ặ p các bước sau đ â y cho đến \Jn
Bước 3.1: Tìm tiếp s ố đầu chưa loại bỏ, k í hiệu p , nếu tim được p là s ố nguyên t ố
Hước 3.2: L oại bo các sô là hội của p kê từ p 2
3.1 S ử d ụ n g c h iế n lư ợc s o n g s o n g h o á k ế t q u ả
(•húng tôi dùng mảng logic đê kiếm tr a số nguyên tố P h ầ n tử đ ầu tiên của
mang biếu diễn cho sô 1, phần tử thứ 2 biếu diẻn cho số 2, tiếp tục n h ư vậy Nếu
phần t ử có giá trị là tru e thì số ứng với phần tử đó là số nguyên tô' và ngược lại
Tiến trìn h cha khởi tạo m ảng, sinh các tiến tr ìn h con xử lý mỗi p h ầ n tứ của màng, các tiến trìn h con này có nhiệm vụ kiểm tr a sô' ứng với vị tr í của p h ần tử đó
cỏ phải là sô' nguyên tô' hay không, sau đó tiến tr ìn h cha có nhiệm vụ tậ p hợp kết qua để hiển thị
#define MAX 1000 0 0
#cef ine TRUE 1
#tíet i ne FALSE 0
vcid main Oi
int kql MAX] , tid, ti.ds( M A X - 2] , i,num,res;
(void) pvm_mytid{) // Khởi tạo tiến trinh
kqí 0] =FALSE;kqt 1] =TRUE;
//Sinh tiẻn trình con
(void) pvm spawn ("nguyento" , (char** ) 0 , 0 ,"" , M A X - 2 , tids) ;
//Gửi cho các tiến trinh con đế kiểm tra
f or (i=2 ; i<MAX; !•*■ + ){
p vm _intsend(PvmDataRaw);
p Vĩĩì_p kint(&i,l,l);
pvm_send (t ids[ i] /1) ;
)
//Nhân kểt quả
for (i = 2 ; i<MAX; i + + ) {
pvrr._recv ( - 1 , 2 ) ;
fcq[ n u m ] = r e s ;
Trang 678 N g u yễn Việt Anhy P h a m T r ấ n N hu
)
//Hiển thị kết quả
for ( i = 0 ; K M A X ; i + + )
i f < kqí i] ) pr int f (" %đ" , i) ;
p v m _ e x i t ()// Kết thúc tiển trinh
e X i t (0 ) ;
}
Mỗi tiến tr ìn h con sẽ là nhiệm vụ kiểm tra và tr ả lại giá trị T R U E nếu đúng là
sô nguyên tô và ngược lại
#define TRƯE 1
#define FALSE 0
void m a i n () {
int p _ t i d / i ,num,res;
p tid=pvm_parent(); //Nhân số định danh tiến trinh
//Nhân d ử liêu
p v m _ r e c v ( p t i d , 1);p v m _ u p ki nt (&n u m/ 1,1);
//Kiểm tra số nguyên tổ
r e s = T R Ư E ;i=2 ;
while(res &&(i < s q r t ( nu m) ) {
res &&=((num %i)!=0);
i++;
} //Gửi kết quả pvm_initserxd (PvmDataRaw) ; pvm pkint (&num, 1/1) ;pvm_pkint (&res, 1,1);
pvm send(p tid,2);
p v m _ e x i t ( ) ;
e x i t (0 );
}
3.2 S ử d ụ n g c h iế n lư ợ c s o n g s o n g h o á d ạ i d iệ n
C ù n g giông n h ư chiến lược song song hóa kết quả, sử dụng m ả n g logic đê kiểm tra số n g uyên tố Tuy nhiên chỉ có một số lượng nhỏ các tiến tr ìn h kiểm tr a thực hiện công việc kiểm tra , sau khi kiểm tr a xong, các tiến trìn h này tiếp tục kiểm tra các p h ần tử khác
#define MAX 1 0 0 0 0 0
#define NPROCS 3
#def ine TRUE 1
#def ine FALSE 0
void m a i n ()
{
Trang 7Các ch iế n lược s o n g s o n g hon t h u ậ t toá n t u ầ n tự 79
ìnt
kqị MAX] , tids( NK'R'>CS) , buf ìd, rr.sgtag, msglength, msgsrc, f rom, upto;
int allocatecJ = 2 , h a l t =0;
(void) pvm m y t i d ();//Khơi tao tiến trinh
//Sinh tiến trinh
w h i l e ( N P R O C S> 0 )
(
bufid = pvm recv (-1,-1);
pvn bufinfo(bufid,í.msglength,&msgtag,&msgsrc);
SWItch(msgtag) { case REQƯESTTAG : pvrr initsend (PvmDataRaw) ;
p vm_pkint (ốallocated, 1, 1);
p v m s e n d ( m s g s rc, 2);
if (aliocated < MAX) aliocated «•= 100;
else halted++;
b r e a k ; case RESULTTAG : // Nhân dữ liêu
p v m u n p k i n t ( & f r o m , 1 , 1 ) ;
pvm_unpkint (&upto, 1, 1);
if ((from < upto) && (upto < M A X ) )
p v m u n p k i n t ( (ikq) + from, from - upto ♦ 1, 1);
break;
} ; }
// Hiển thị két quả
for(int i - 0 ; i < MAX; i++)
if (kqị i) )
print f (•• *d ", i ) ;
p v m _ e x i t ();
e x i t (0);
I
Đối với các tiến tr in h con, thực hiện kiêm tr a số nguyên tố, sau khi kiểm tr a xong gửi kết quả cho tiến tr ìn h cha và nhặn các ph ần tử tiếp theo đê thự c hiện
#đefine TRƯE 1
#đefine FAL5 E 0
void ma i n ()
int ptid, num, kqt 100] , dum, task_end, i ;
(
Trang 880 Ng uyền Việt Anh, P h ạ m Trần N h u
irkt task_start = 0 ;
•ptid * p v m _ p a r e n t ();
wh il e (task_start < MAX)
I
// Gửi yêu cáu nhân’ số mới để kiểm tra
p v m _ i n i t s e n d ( P v m D a t a R a w ) ;
p v m _ p k i n t (& d u m , 1, 1);
pvm_send(ptid, 1);
p v m _ r e c v ( p t i d , 2);
p v m _ u p k in t(&t a s k _ s t a r t, 1 , 1 );
if (task_start<MAX) {
task_end = task_start + 100;
if (task_end > MAX) ta&k end = MAX;
for (num= task_start; num < task_end; num++Ị ì
kqt num - task_start] = TRƯE;
i = 2;
while (kq( num - task_start) && (i < sqrt (num))) {
kq[ num - task_start] &&= ((num % i) != 0) ;
i + + ; }
} // Gửi kết quả cho tiến trinh cha pvm _i ni ts en d (PvmDataRaw) ;
pvm_pkint (&t a sk _s ta rt , 1, 1);
pvm_pkint (írtaskend, 1, 1);
pvm_pkint (kq, task_end - task_start + 1, 1);
p vm_send (ptid, 3 > ; }
ì
pvTĩì_exi t ( ) ;
e x i t (0 );
J
3.3 S ử d ụ n g chiến lược song song hoá chuyên biệt
T rong chiến lược này, chúng tôi khởi tạo các tiến tr ìn h kiểm tra sô nguyên tô Các sô được tiến tr ìn h ch ín h chuyển cho các tiến tr ìn h con để kiểm tra Nếu sô" đó
không p h ả i là số n g uyên tố, tiế n tr ìn h tiếp tục kiểm tr a số tiếp theo, nếu số đó là số
nguyên t ố và tiến tr ìn h khác chưa kiểm tr a số đó thì sẽ k ế t n ạp sô đó vào tậ p kết quả Nếu đã có tiến tr ìn h khác đã chọn số đó, tiến trìn h này sè tiếp tục kiểm tr a như đã làm với tiến tr ìn h trước
Trang 9Các chi ến lược SOÌÌẶ * sim Ị* ho á t h u ậ t t o á n t u ấ n tư 81
# de f 1 ne MAX 1000 00
ideíine TP.UE 1
Ideíine F A L 5 K 0
void ma i n ()
{
ìnt kqt MAXI / t i ‘1, nuro, i ;
{void) p v m rnyt 1 ri () ; //Khời t.ao tiến trinh
(V' : ỉ) pvm _ ■ Ị1;IWỈI (" rv-Ịuyento" , (char* * ) 0 /0 ,"" , 1 , & tid);
for (num - ; nurnbor <= MAX; num++)
{
pvm xnit.send (FvmDataRaw) ;
pvm send (t i d, 1);
}
p vm _ r e c v (rid,2);
p vm _unpkint (&n u m , 1,1);
pvm unpkỉnt (kq,num ♦ Ị, 1);
kqí 0] = FALSE;
//Hiển thị kết quà
for (i = 0; i < (num + 1), i++)
prirìt f c 'id " , kq( i] ) ;
p v m _ e x i t ( ) ;
e x i t (0);
1
Các tiến tr ìn h con thực hiện việc kiểm tra , đồng thòi các tiế n tr ìn h động được PVM được tạo ra khi có yêu cầu
#define MA X 1 0 0 0 0 0
#define TR ƯE 1
#define FALSE 0
v o i d m a i n ()
{
int pt id,nqt.o, n, kq[ MAX] ;
int next tid * 0;
int length = 0;
ptid = pvm p a r e n t O ;
pvm_recv(pt i d , 1);
p v m ^ u n p k ì n t (&nqto, 1, 1);
w h ile (n < MAX)
/ Nhàn số nguyên nvn để kiểm tra pvm_recv ( p t Ì d ,1 );
Trang 1082 N g u y ễ n V iệ t A n h , P h ạ m T r ầ n N h u
pvm_unpkint (&n, 1, 1);
if (n < MAX) (
if ( (n % ngto) != 0) {
if (!next_tid) //Tao tiến trirứì mới pvm spawn ("nguyento" , (char* * ) 0, 0,"" , 1, 6rnext_tid) ; pvm initsend (PvmDataRaw) ;
pvm_p k i n t (& n , 1, 1);
pvm_send (next_tid, 1) ; )
I }
if (next_tid)
{
pvm ini tsend (PvmDataRaw) ; pvm_pkint(Ẵn, 1, 1);
pvm_send (next tid, 1) ; pvm_recv (next t id, 2);
p v m _ u n p k i n t (&length, 1, 1);
p v m _ u n p k i n t ((kq + 1), length, 1);
}
kqị 0] = ngto;
length++;
p v m _ i n i t s e n d (P v m D a t a R a w ) ;
p v m _ p k i n t (&length, 1, 1);
pvm_pkint(kq,length, 1);
p v m _ s e n d ( p t i đ , 2);
p v m ^ e x i t ();
e x i t ( 0 ) ;
)
3.4 N h ậ n xét
C h ú n g tôi tiên h à n h th ử nghiệm trên ha máy tín h với các cấu hìn h P e n tiu m IV 2.4 Mhz bộ nhỏ 512MB, P en tiu m III 750 Mhz bộ nhớ 256 MB và Xeron 1.7M hz bộ nhớ 128MB Sủ d ụ n g chiến lược song song hoá kết quả, chương tr ìn h thực hiện hiệu quà n h ấ t T uy n h iên do dữ liệu chương trình nhỏ nên sù dụng các chiến lược này chưa cho hiệu quà ch ên h lệch rỏ rệt v ề phương diện cài đặt, cài đ ặ t chương tr ìn h theo chiến lược song song hoá kết quả dề dàng hơn so với song song hoá đại d iệ n và song song hoá chuvên biệt