Dynamic process groups in parallel virtual machine , Computer Networking

Assignment Help:

Dynamic Process Groups

To generate and manage dynamic groups, a separate library libgpvm3.a must be connected with the user programs that make use of any of the set functions. Group management work is handled by a group server that is automatically in progress when the first group function is invoked. Any PVM task can connect or leave any group dynamically at any time without having to inform any other task in the affected groups. Tasks can shows messages to groups of which they are not members. Now we are giving some routines that manage dynamic processes:

  • int pvm_joingroup( char *group )

Enrolls the calling process in a named group. group is a group name of an presenting group. Returns instance number. Instance numbers run from 0 to the number of group members minus 1. In PVM 3, a task can connect multiple groups. If a process departs a group and then rejoins it, that process may receive a dissimilar instance number.

  • int info = pvm_lvgroup( char *group )

   Unenrolls the calling process from a named group.

  • int pvm_gettid( char *group, int inum )

Returns the tid of the process recognized by a group name and instance number.

  • int pvm_getinst( char *group, int tid )

Returns the instance number in a set of a PVM process.

  • int size = pvm_gsize( char *group )

Returns the number of members at present in the named group.

  • int pvm_barrier( char *group, int count )

Blocks the calling process up to all the processes in a group has called it. count shows the number of group members that must call pvm_barrier before they are all released.

  • int pvm_bcast( char *group, int msgtag )

Transmits the data in the active message buffer to a group of processes. msgtag is a message tag supplied by the user. It agree to the user's program to distinguish between dissimilar kinds of messages .It should be a nonnegative integer.

  • int info = pvm_reduce( void (*func)(), void *data, int count, int datatype, int msgtag, char *group, int rootginst)

 Performs a decrease operation over members of the particular group. func is function defining the operation performed on the global data. Predefined are, PvmMin, PvmMax ,PvmSum and PvmProduct. Users can describe their own function. data is pointer to the starting address of an array of local values. count shows the number of elements of datatype in the data array. Datatype is the kind of the entries in the data array. msgtag is the message tag supplied by the user. msgtag should be greater than 0. It allows the user's program to distinguish between different kinds of messages. group is the group name of an existing group. rootginst is the illustration number of group member who gets the result.

We are writing here programs that shows the use of these functions in the parallel programming:

Example 2: Hello.c

#include "pvm3.h" main()

{

int cc, tid, msgtag;

char buf[100];

printf("%x\n", pvm_mytid());

cc = pvm_spawn("hello_other", (char**)0, 0, "", 1, &tid);

if (cc == 1) {

msgtag = 1;

pvm_recv(tid, msgtag);

pvm_upkstr(buf);

printf("from t%x: %s\n", tid, buf);

} else

printf("can't start hello_other\n");

pvm_exit();

}

In this program, pvm_mytid( ), returns the TID of the running program (In this case, task id of the program hello.c). This program is intended to be invoked by hand; after printing its task id (obtained with pvm_mytid()), it starts a copy of another program called hello_other using the pvm_spawn() function. A successful spawn happens the program to implement a blocking receive using pvm_recv. After getting the message, the program prints the message sent by its counterpart, as well its task id; the buffer is take out from the message using pvm_upkstr. The final pvm_exit call dissociates the program from the PVM system.

hello_other.c

#include "pvm3.h"

main()

{

int ptid, msgtag;

char buf[100];

ptid = pvm_parent();

strcpy(buf, "hello, world from ");

gethostname(buf + strlen(buf), 64);

msgtag = 1; pvm_initsend(PvmDataDefault); pvm_pkstr(buf);

pvm_send(ptid, msgtag);

pvm_exit();

}

Program is a listing of the ''slave'' or spawned program; its first PVM action is to get the task id of the ''master'' using the pvm_parent call. This program then gets its hostname and transfers it to the master using the three-call sequence - pvm_initsend to initialize the send buffer; pvm_pkstr to place a string, architecture-independent manner and in a strongly typed, into the send buffer; and pvm_send to trasnfer it to the destination process shows by ptid, ''tagging'' the message with the number1.


Related Discussions:- Dynamic process groups in parallel virtual machine

State the term - lot of care required while programming, State the term - L...

State the term - Lot of care required while programming It is a common and well-known saying that many developers of "secure systems" leave a "back door" way for themselves so

On which languages intranet works, On which languages Intranet works ...

On which languages Intranet works Language Support The Intranet works on the basis of scripts written in any of the following languages, viz., SGML, HTML, DHTML, XML, AS

Multicast extension to ospf, MOSPF MOSPF is multicast extension to OSP...

MOSPF MOSPF is multicast extension to OSPF. This protocol is extension of OSPF which is a unicast routing protocol which make MOSPF a combination of unicast and multicast prot

Signal to noise ratio, Problem 1. Explain the TCP/IP Reference Model wi...

Problem 1. Explain the TCP/IP Reference Model with diagram 2. Describe the following Maximum Data Rate of a Channel Signal to Noise Ratio   3. Describe the

Sockets, When programming a server or a client, we have to deal with port n...

When programming a server or a client, we have to deal with port numbers and IP addresses, but we usually do this through an abstraction called a socket. Sockets are the standard A

Fault tree construction rules, FAULT TREE CONSTRUCTION RULES (a)  Defi...

FAULT TREE CONSTRUCTION RULES (a)  Define the  undesired  fault  condition  as the  "Top"  event. The  fault  event describes the state of either the system or a component. (b

Explain in brief -ring topolgy, Explain in brief -Ring Topolgy Comments 1 ...

Explain in brief -Ring Topolgy Comments 1 - A faulty connection amid two stations can cause network failure 2 - It's difficult to add a new station/device as it has to come betwe

Introduction-parallel algorithms, Introduction An algorithm is defined ...

Introduction An algorithm is defined as a series of computational steps required to accomplish an exact task. The algorithm works for a given input and will terminate in a well

Merits of message passage-shared memory, Gives excellent low-level control ...

Gives excellent low-level control of parallelism; Portable; Minimal overhead in data distribution and parallel synchronisation; and It is less error prone. Drawb

Describe about packet switching, Q. Describe about Packet Switching? P...

Q. Describe about Packet Switching? Packet Switching - Data are transmitted in separate units - Called Packet - Packets are variable length blocks - The max leng

Write Your Message!

Captcha
Free Assignment Quote

Assured A++ Grade

Get guaranteed satisfaction & time on delivery in every assignment order you paid with us! We ensure premium quality solution document along with free turntin report!

All rights reserved! Copyrights ©2019-2020 ExpertsMind IT Educational Pvt Ltd