From: Venelin Mitov (vmitov_at_gmail_dot_com)
Date: Tue Jan 18 2005 - 13:18:29 PST
Hi,
Can we nest upc_notify statements? I tried the following example with 4 threads.
Only the Hello0 message was printed by each thread which means that
all threads fail when trying to execute the second upc_notify
(upc_notify 2; for threads < 2 and upc_notify 1; for threads >= 2).
#include <upc_relaxed.h>
#include <stdio.h>
shared int A[THREADS];
int main(int argc, char *argv[])
{
int i;
if(MYTHREAD < 2)
upc_notify 1;
else
upc_notify 2;
A[THREADS - MYTHREAD - 1] = THREADS - MYTHREAD - 1;
printf("Hello1 from thread %d of %d\n", MYTHREAD, THREADS);
if(MYTHREAD < 2){
upc_notify 2;
printf("Hello2 from thread %d of %d\n", MYTHREAD, THREADS);
// upc_wait 1;
upc_wait 2;
printf("Hello3 from thread %d of %d\n", MYTHREAD, THREADS);
}
else{
upc_notify 1;
printf("Hello2 from thread %d of %d\n", MYTHREAD, THREADS);
// upc_wait 2;
upc_wait 1;
printf("Hello3 from thread %d of %d\n", MYTHREAD, THREADS);
}
if(MYTHREAD == 0)
for(i = 0; i < THREADS; i++)
printf("%d", A[i]);
if(MYTHREAD < 2)
upc_wait 1;
else
upc_wait 2;
}
Here is the output I receive when running the example:
------------------------------------------------------------
# LSBATCH: User input
upcjob gasnetrun_gm -np 4 hello
------------------------------------------------------------
Exited with exit code 6.
Resource usage summary:
CPU time : 0.84 sec.
Max Memory : 5 MB
Max Swap : 9 MB
Max Processes : 1
The output (if any) follows:
UPCR: UPC thread 0 of 4 on hpc-n21 (process 0 of 4, pid=30095)
UPCR: UPC thread 3 of 4 on hpc-n09 (process 3 of 4, pid=19017)
UPCR: UPC thread 2 of 4 on hpc-n08 (process 2 of 4, pid=15463)
UPCR: UPC thread 1 of 4 on hpc-n06 (process 1 of 4, pid=3483)
Hello from thread 0 of 4
Hello from thread 1 of 4
Hello from thread 2 of 4
Hello from thread 3 of 4
TID HOST_NAME COMMAND_LINE STATUS TERMINATION_TIME
==== ========== ================ ======================= ===================
0001 hpc-n06 gasnetrun_gm --g Killed by PAM (SIGTERM) 01/18/2005 21:47:30
0002 hpc-n21 gasnetrun_gm --g Killed by PAM (SIGTERM) 01/18/2005 21:47:30
0003 hpc-n08 gasnetrun_gm --g Signaled (SIGIOT) 01/18/2005 21:47:30
0004 hpc-n09 gasnetrun_gm --g Killed by PAM (SIGTERM) 01/18/2005 21:47:30
Thank you!
Venelin