пару вопросов по PVM
От: lamachok  
Дата: 14.05.06 20:05
Оценка:
Всем привет.
решил вот заняться параллельным программированием =).
нужна помощь.

#include "pvm3.h"
#include <stdio.h>

main(int argc, char **argv){
int myid,numt,cc,tid;
int data;
int *buf,bufid,*buf1;

myid = pvm_mytid();
printf("Main program started id = %d\n",myid);
printf("starting slave(s)...\n");
cc = pvm_spawn("hello_other", (char**)0, 0, "", 1, &tid);// запуск ведомой программы

bufid = pvm_initsend(PvmDataDefault);
if (bufid <= 0) printf("cannot init buffer");
data = 3;
buf = &data;
pvm_pkint(buf,1,1);
pvm_send(tid, 1);

// if (cc == 1) {
pvm_freebuf(bufid);
cc = pvm_recv(tid,1);
// pvm_bufinfo(cc, (int*)0, (int*)0, &tid);
pvm_upkint(buf1,1,1);
printf("from t%x: %d\n", tid, *buf);
// }
//else
//printf("cannot start slaves");
pvm_exit();
exit(0);
}




#include "pvm3.h"
#include <stdio.h>

int sqr(int a){
int k = a*a;
return k;

}

int main(int argc, char **argv){

int myid,numt,ptid;
int data;
int *buf,s,bufid;

ptid = pvm_parent();
pvm_initsend(PvmDataDefault);
numt = pvm_upkint(buf, 1,1);

bufid = pvm_initsend(PvmDataDefault);
if (bufid <= 0) printf("cannot init buffer");
s = sqr(*buf);
buf = &s;
pvm_pkint(buf,1,1);
pvm_send(ptid, 1);
pvm_exit();
exit(0);
return 0;
}

при запуске
pvm> spawn -> sd_master sd_slave выдает следующее

[1]
1 successful
t40002
pvm> [1:t40002] Main program started id = 262146
[1:t40002] starting slave(s)...
[1:t40002] from t40003: 3 <-------- проблема вот тут. Должна быть 9
[1:t40002] EOF
[1:t40003] EOF
[1] finished

заранее спасибо.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.