[Next] [Up] [Previous]

The INITIATE Statement

The statement

       INITIATE 5,SUBR(M,N) 

is equivalent to the statement

       START 5,{CALL SUBR(M,N)}

but has the advantage of explicitly indicating that a subroutine call is what is being STARTed to the compiler.

If a node is to be indicated, the syntax is

       INITIATE id-number:node,call

to avoid conflict with multiple returns from the call, which follow its closing parenthesis when present.

Note that sequences in START and ALL statements, and the call in an INITIATE statement, are part of the program in which they are found. Thus, variables referred to within the statement text (as opposed to variables local to routines called), whatever their storage class, effectively have the storage class UNIQUE from the viewpoint of code executing in parallel.

Also note that on machines without hardware parallel processing capability, the default response to the initiation of a parallel process is to perform it sequentially at the point where it was to be started. While this is the most efficient way to handle ordinary calculations which are organized for speed by having independent parts performed in parallel, communicating tasks would wait indefinitely for handshaking if performed one after the other. In that case, such tasks must be at least concurrent: the compiler command @$CP+ can be used to force concurrent handling of parallel processes in the absence of true parallelism, and @$CP- can be used to turn this requirement off.


[Next] [Up] [Previous]