minor change for using +comm_thread_only_recv
authorGengbin Zheng <gzheng@illinois.edu>
Fri, 13 Jan 2012 07:19:50 +0000 (23:19 -0800)
committerGengbin Zheng <gzheng@illinois.edu>
Fri, 13 Jan 2012 07:19:50 +0000 (23:19 -0800)
src/arch/mpi/machine.c

index 08df32208d9fe1d81f8578aad4bd901b6e559a5e..3ef7c36d28f4ddd7fd3f585efcb15b7bf9ef1ab5 100644 (file)
@@ -1313,11 +1313,13 @@ static void MachineInitForMPI(int *argc, char ***argv, int *numNodes, int *myNod
 #endif
 #endif
 
 #endif
 #endif
 
-#if CMK_SMP
     if (CmiGetArgFlag(largv, "+comm_thread_only_recv")) {
     if (CmiGetArgFlag(largv, "+comm_thread_only_recv")) {
+#if CMK_SMP
       Cmi_smp_mode_setting = COMM_THREAD_ONLY_RECV;
       Cmi_smp_mode_setting = COMM_THREAD_ONLY_RECV;
-    }
+#else
+      CmiAbort("+comm_thread_only_recv option can only be used with SMP version of Charm++");
 #endif
 #endif
+    }
 
 #if CMK_MPI_INIT_THREAD
 #if CMK_SMP
 
 #if CMK_MPI_INIT_THREAD
 #if CMK_SMP
@@ -1342,18 +1344,21 @@ static void MachineInitForMPI(int *argc, char ***argv, int *numNodes, int *myNod
 
     myNID = *myNodeID;
 
 
     myNID = *myNodeID;
 
-#if CMK_SMP
-    if (Cmi_smp_mode_setting == COMM_THREAD_ONLY_RECV && _thread_provided != MPI_THREAD_MULTIPLE) {
-        Cmi_smp_mode_setting = COMM_THREAD_SEND_RECV; 
-    }
-#endif
-
     MPI_Get_version(&ver, &subver);
     if (myNID == 0) {
         printf("Charm++> Running on MPI version: %d.%d\n", ver, subver);
         printf("Charm++> level of thread support used: %s (desired: %s)\n", thread_level_tostring(_thread_provided), thread_level_tostring(thread_level));
     }
 
     MPI_Get_version(&ver, &subver);
     if (myNID == 0) {
         printf("Charm++> Running on MPI version: %d.%d\n", ver, subver);
         printf("Charm++> level of thread support used: %s (desired: %s)\n", thread_level_tostring(_thread_provided), thread_level_tostring(thread_level));
     }
 
+#if CMK_SMP
+    if (Cmi_smp_mode_setting == COMM_THREAD_ONLY_RECV && _thread_provided != MPI_THREAD_MULTIPLE) {
+        Cmi_smp_mode_setting = COMM_THREAD_SEND_RECV; 
+        if (myNID == 0) {
+          printf("Charm++> +comm_thread_only_recv disabled\n");
+        }
+    }
+#endif
+
     {
         int debug = CmiGetArgFlag(largv,"++debug");
         int debug_no_pause = CmiGetArgFlag(largv,"++debug-no-pause");
     {
         int debug = CmiGetArgFlag(largv,"++debug");
         int debug_no_pause = CmiGetArgFlag(largv,"++debug-no-pause");