*** empty log message ***
authorChao Huang <chuang10@uiuc.edu>
Fri, 14 Jul 2006 06:37:37 +0000 (06:37 +0000)
committerChao Huang <chuang10@uiuc.edu>
Fri, 14 Jul 2006 06:37:37 +0000 (06:37 +0000)
examples/ampi/alltoall/Makefile
examples/ampi/alltoall/allgather.c [new file with mode: 0644]
examples/ampi/alltoall/mpibench.c
examples/ampi/alltoall/runscript.sh [deleted file]

index c91700794795e8b6b957fed2a7de2f5c5ab6d34c..e867403e1ef3b9538f08fce29f6f61c5e76a5f13 100644 (file)
@@ -1,12 +1,20 @@
 OPTS = -O3
-CHARMC = ../../../bin/charmc -language ampi
+CHARMC = ../../../bin/charmc -language ampi -memory gnu
 MPICC = mpicc
 
-all: alltoall alltoall_VPtest
+all: mpibench mpibench.mpi
+
+allgather: allgather.c
+       $(CHARMC) -c allgather.c $(OPTS)
+       $(CHARMC) -o allgather allgather.o $(OPTS) $(LIBS) -memory gnu
+
+allgather.mpi: allgather.c
+       $(MPICC) -c allgather.c $(OPTS)
+       $(MPICC) -o allgather.mpi allgather.o $(OPTS) $(LIBS)
 
 alltoall: alltoall.c
        $(CHARMC) -c alltoall.c $(OPTS)
-       $(CHARMC) -o alltoall alltoall.o $(OPTS) $(LIBS)
+       $(CHARMC) -o alltoall alltoall.o $(OPTS) $(LIBS) -memory gnu
 
 alltoall.mpi: alltoall.c
        $(MPICC) -c alltoall.c $(OPTS)
@@ -14,7 +22,11 @@ alltoall.mpi: alltoall.c
 
 mpibench: mpibench.c
        $(CHARMC) -c mpibench.c $(OPTS)
-       $(CHARMC) -o mpibench mpibench.o $(OPTS) $(LIBS)
+       $(CHARMC) -o pgm mpibench.o $(OPTS) $(LIBS)
+
+mpibench.mpi: mpibench.c
+       $(MPICC) -c mpibench.c $(OPTS)
+       $(MPICC) -o pgm-mpi mpibench.o $(OPTS) $(LIBS)
 
 alltoall_VPtest: alltoall_VPtest.c
        $(CHARMC) -c alltoall_VPtest.c $(OPTS)
@@ -25,4 +37,4 @@ alltoall_VPtest_f: alltoall_VPtest.f
        $(CHARMC) -o alltoall_VPtest_f alltoall_VPtest.o -language ampif -swapglobals $(OPTS) $(LIBS)
 
 clean:
-       rm -rf *~ *.o alltoall mpibench charmrun conv-host alltoall_VPtest
+       rm -rf *~ *.o alltoall mpibench charmrun conv-host allgather
diff --git a/examples/ampi/alltoall/allgather.c b/examples/ampi/alltoall/allgather.c
new file mode 100644 (file)
index 0000000..aac0243
--- /dev/null
@@ -0,0 +1,116 @@
+#include <stdio.h>\r
+#include "mpi.h"\r
+#include <sys/time.h>\r
+#include <stdlib.h>\r
+\r
+#define INIT_SEC 1000000\r
+\r
+struct itimerval *tim;\r
+unsigned int Timers = 0;\r
+\r
+void   Create_Timers (int n);\r
+void   Start_Timer   (int i, int which);\r
+float  Read_Timer    (int i, int which);\r
+\r
+void Create_Timers (int n){\r
+  if( Timers > 0 ){\r
+    fprintf (stderr, "Create_Timers: timers already created!\n");\r
+    exit (-1);\r
+  }\r
+  \r
+  tim = (struct itimerval*) malloc (n * sizeof (struct itimerval));\r
+  Timers = n;\r
+}\r
+\r
+void Start_Timer (int i, int which){\r
+  if( i >= Timers ){\r
+    fprintf (stderr, "Start_Timers: out-of-range timer index %d\n", i);\r
+    exit (-1);\r
+  }\r
+  \r
+  tim[i].it_value.tv_sec = INIT_SEC;\r
+  tim[i].it_value.tv_usec = 0;\r
+  tim[i].it_interval.tv_sec = INIT_SEC;\r
+  tim[i].it_interval.tv_usec = 0;\r
+  \r
+  setitimer (which, &(tim[i]), NULL);\r
+}\r
+\r
+float Read_Timer (int i, int which){\r
+  float elapsed_time;\r
+  \r
+  if( i >= Timers ){\r
+    fprintf (stderr, "Read_Timer: out-of-range timer index %d\n", i);\r
+    exit (-1);\r
+  }\r
+  \r
+  getitimer (which, &(tim[i]));\r
+  \r
+  elapsed_time = ( (float)INIT_SEC - tim[i].it_value.tv_sec ) -\r
+    ( (float)tim[i].it_value.tv_usec/1000000 );\r
+  \r
+  return elapsed_time;\r
+}\r
+\r
+main(int argc, char **argv){\r
+  int my_id;           /* process id */\r
+  int p;               /* number of processes */\r
+  char* message;       /* storage for the message */\r
+  int i, k, max_msgs, msg_size;\r
+  MPI_Status status;   /* return status for receive */\r
+  float elapsed_time_msec;\r
+  float bandwidth;\r
+  char *sndbuf, *recvbuf;\r
+  \r
+  MPI_Init( &argc, &argv );\r
+  MPI_Comm_rank( MPI_COMM_WORLD, &my_id );\r
+  MPI_Comm_size( MPI_COMM_WORLD, &p );\r
+  \r
+  if (argc < 2) {\r
+    fprintf (stderr, "need msg size as params\n");\r
+    goto EXIT;\r
+  }\r
+  \r
+  if(sscanf (argv[1], "%d", &msg_size) < 1){\r
+    fprintf (stderr, "need msg size as params\n");\r
+    goto EXIT;\r
+  }\r
+  message = (char*)malloc (msg_size);\r
+\r
+  max_msgs = 100;\r
+  if(argc>2) \r
+    sscanf (argv[2], "%d", &max_msgs);\r
+  \r
+  /* don't start timer until everybody is ok */\r
+  MPI_Barrier(MPI_COMM_WORLD); \r
+  \r
+  sndbuf = (char *)malloc(msg_size * sizeof(char));\r
+  recvbuf = (char *)malloc(msg_size * sizeof(char) * p);\r
+  if( my_id == 0 ){\r
+    int flag=0;\r
+    printf("Starting benchmark on %d processors with %d iterations\n", p, max_msgs); \r
+    Create_Timers (1);\r
+    Start_Timer (0, ITIMER_REAL);\r
+  }    \r
+  for(i=0; i<max_msgs; i++) {\r
+    MPI_Allgather(sndbuf, msg_size, MPI_CHAR, recvbuf, msg_size, MPI_CHAR, MPI_COMM_WORLD);\r
+  }\r
+  MPI_Barrier(MPI_COMM_WORLD); \r
+\r
+  if(my_id==0){\r
+    elapsed_time_msec = Read_Timer (0, ITIMER_REAL) * 1000.0 / max_msgs;\r
+    bandwidth = 2 * 8 * msg_size * (p-1) / (1000.0 * elapsed_time_msec);\r
+    \r
+    fprintf (stdout, "%5d %7d\t ", max_msgs, msg_size);\r
+    fprintf (stdout,"%8.3f msec,\t %8.3f Mbits/sec\n",\r
+            elapsed_time_msec, bandwidth);\r
+  }\r
+  \r
+  free(sndbuf);\r
+  free(recvbuf);\r
+  \r
+  \r
+ EXIT:\r
+  MPI_Finalize();\r
+}\r
+\r
index 47db6887d99f2a70eac1e05cc336f5bcc3ac045a..b655c0ca557c42052095fd8a7ced67b6c9317fce 100644 (file)
@@ -5,9 +5,9 @@
 #include <unistd.h>
 
 #define NUMTIMES 50
-#define REPS 10
-#define MAX_SIZE 32768
-#define NUM_SIZES 8
+#define REPS 100
+#define MAX_SIZE 131072
+#define NUM_SIZES 9
 
 #ifndef MPIWTIME
 void getclockvalue(double *retval)
@@ -47,6 +47,7 @@ char *argv[];
     msgsizes[5] = 2048;
     msgsizes[6] = 8192;
     msgsizes[7] = 32768;
+    msgsizes[8] = 131072;
 
     MPI_Init(&argc,&argv);
     MPI_Comm_size(MPI_COMM_WORLD,&numprocs);
diff --git a/examples/ampi/alltoall/runscript.sh b/examples/ampi/alltoall/runscript.sh
deleted file mode 100755 (executable)
index 799874e..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-#!/bin/bash
-
-./charmrun ./alltoall_VPtest +tcharm_stacksize 100000 +p 2 +vp 8 16
-./charmrun ./alltoall_VPtest +tcharm_stacksize 100000 +p 2 +vp 16 16
-./charmrun ./alltoall_VPtest +tcharm_stacksize 100000 +p 2 +vp 32 16
-./charmrun ./alltoall_VPtest +tcharm_stacksize 100000 +p 2 +vp 64 16
-./charmrun ./alltoall_VPtest +tcharm_stacksize 100000 +p 2 +vp 128 16
-./charmrun ./alltoall_VPtest +tcharm_stacksize 100000 +p 2 +vp 256 16
-./charmrun ./alltoall_VPtest +tcharm_stacksize 100000 +p 2 +vp 512 16
-./charmrun ./alltoall_VPtest +tcharm_stacksize 100000 +p 2 +vp 1024 16
-
-./charmrun ./alltoall_VPtest +tcharm_stacksize 100000 +p 2 +vp 8 1024
-./charmrun ./alltoall_VPtest +tcharm_stacksize 100000 +p 2 +vp 16 1024
-./charmrun ./alltoall_VPtest +tcharm_stacksize 100000 +p 2 +vp 32 1024
-./charmrun ./alltoall_VPtest +tcharm_stacksize 100000 +p 2 +vp 64 1024
-./charmrun ./alltoall_VPtest +tcharm_stacksize 100000 +p 2 +vp 128 1024
-./charmrun ./alltoall_VPtest +tcharm_stacksize 100000 +p 2 +vp 256 1024
-
-./charmrun ./alltoall_VPtest +tcharm_stacksize 100000 +p 2 +vp 8 16000
-./charmrun ./alltoall_VPtest +tcharm_stacksize 100000 +p 2 +vp 16 16000
-./charmrun ./alltoall_VPtest +tcharm_stacksize 100000 +p 2 +vp 32 16000
-./charmrun ./alltoall_VPtest +tcharm_stacksize 100000 +p 2 +vp 64 16000
-./charmrun ./alltoall_VPtest +tcharm_stacksize 100000 +p 2 +vp 128 16000
-
-./charmrun ./alltoall_VPtest +tcharm_stacksize 100000 +p 2 +vp 8 1000000
-./charmrun ./alltoall_VPtest +tcharm_stacksize 100000 +p 2 +vp 16 1000000
-./charmrun ./alltoall_VPtest +tcharm_stacksize 100000 +p 2 +vp 32 1000000