merge cpu affinity into build.
authorGengbin Zheng <gzheng@illinois.edu>
Tue, 23 Oct 2007 15:04:27 +0000 (15:04 +0000)
committerGengbin Zheng <gzheng@illinois.edu>
Tue, 23 Oct 2007 15:04:27 +0000 (15:04 +0000)
use +setcpuaffinity runtime flag to activate the capability.

src/scripts/Makefile
src/scripts/configure
src/scripts/configure.in
src/scripts/conv-autoconfig.h.in

index 3b223a7973807310f463ca4bc599c93cf610065a..292294a9edb0925a9939490a2c1278bdf02f483c 100644 (file)
@@ -336,7 +336,7 @@ LIBCONV_CORE= convcore.o conv-conds.o queueing.o msgmgr.o \
        traceCore.o traceCoreCommon.o tracec.o \
        converseProjections.o machineProjections.o \
        quiescence.o isomalloc.o conv-counter.o \
-       global-nop.o cmipool.o
+       global-nop.o cmipool.o cpuaffinity.o
 
 #############################################
 #
@@ -743,9 +743,6 @@ LIBTRACE_BG=trace-bluegene.o
 $(L)/libtrace-bluegene.a:$(LIBTRACE_BG)
        $(CHARMC) -o $@ $(LIBTRACE_BG)
 
-tracec.o: tracec.h tracec.C
-       $(CHARMC) -o $@ tracec.C
-
 LIBTRACE_MEMORY=trace-memory.o
 $(L)/libtrace-memory.a: $(LIBTRACE_MEMORY)
        $(CHARMC) -o $@ $(LIBTRACE_MEMORY)
index e65831ed0165d9ee129a24c188e4d492d37e9fa3..d7d83f180f60b57d4599cd34089329210b84ac7e 100755 (executable)
@@ -1752,6 +1752,37 @@ echo $ECHO_N "checking \"$1\"... $ECHO_C" >&6; }
        /bin/rm -f out
 }
 
+# Testlinkc: tries to compile and link a C file $t (described by $1).
+#  If successful, prints $2 and sets $pass/clears $fail
+#  If failure, prints $3 and sets $pass/clears $fail
+#  additional arguments to c++ compiler are passed as $4
+test_linkc() {
+        { echo "$as_me:$LINENO: checking \"$1\"" >&5
+echo $ECHO_N "checking \"$1\"... $ECHO_C" >&6; }
+       cat $tc >> $charmout
+       echo $CMK_CC -I../include -I. $CMK_INCDIR $OPTS_CC -c $tc -o test.o $4 >> $charmout
+       $CMK_CC -I../include -I. $CMK_INCDIR $OPTS_CC -c $tc -o test.o $4 > out 2>&1
+        if test $? = 1
+        then
+          test_result 1 "$1" "$2" "$3"
+        else
+          echo $CMK_LD -o testlink test.o $CMK_LIBDIR $OPTS_LD $4 >> $charmout
+          $CMK_LD -o testlink test.o $CMK_LIBDIR $OPTS_LD $4 > out 2>&1
+          test_result $? "$1" "$2" "$3"
+        fi
+       strictpass=$pass
+       strictfail=$fail
+        if test $pass -eq 1
+       then
+         if cat out | grep -i "warn" > /dev/null 2>&1
+         then
+           strictpass="0" && strictfail="1"
+          fi
+        fi
+       cat out >> $charmout
+       /bin/rm -f out
+}
+
 # test_linkso $1 $2 $3 $4, where
 # $1: debug msg
 # $2: yes msg
@@ -2229,6 +2260,35 @@ cat >>confdefs.h <<_ACEOF
 _ACEOF
 
 
+### test sched_setaffinity ####
+cat > $tc <<EOT
+#include <stdlib.h>
+#include <stdio.h>
+#include <unistd.h>
+
+#define _GNU_SOURCE
+#include <sched.h>
+long sched_setaffinity(pid_t pid, unsigned int len, unsigned long *user_mask_ptr);
+long sched_getaffinity(pid_t pid, unsigned int len, unsigned long *user_mask_ptr);
+
+int main()
+{
+  unsigned long mask = 0xffffffff;
+  unsigned int len = sizeof(mask);
+
+  if (sched_setaffinity(0, len, &mask) < 0) {
+    return -1;
+  }
+  return 0;
+}
+EOT
+test_linkc "whether sched_setaffinity call exists" "yes" "no" ""
+
+cat >>confdefs.h <<_ACEOF
+#define CMK_HAS_SETAFFINITY $pass
+_ACEOF
+
+
 #### check if dlopen works ####
 skip_dl=0
 # for bproc, ignore -ldl
index 07becbe0beb01f02fc0fcf0a6a666e414a42da50..ab274c3ad1334ab1b697cc99b53312ae391f3687 100644 (file)
@@ -126,6 +126,36 @@ test_link() {
        /bin/rm -f out
 }
 
+# Testlinkc: tries to compile and link a C file $t (described by $1).
+#  If successful, prints $2 and sets $pass/clears $fail
+#  If failure, prints $3 and sets $pass/clears $fail
+#  additional arguments to c++ compiler are passed as $4
+test_linkc() {
+        AC_MSG_CHECKING("$1")
+       cat $tc >> $charmout
+       echo $CMK_CC -I../include -I. $CMK_INCDIR $OPTS_CC -c $tc -o test.o $4 >> $charmout
+       $CMK_CC -I../include -I. $CMK_INCDIR $OPTS_CC -c $tc -o test.o $4 > out 2>&1
+        if test $? = 1
+        then
+          test_result 1 "$1" "$2" "$3"
+        else
+          echo $CMK_LD -o testlink test.o $CMK_LIBDIR $OPTS_LD $4 >> $charmout
+          $CMK_LD -o testlink test.o $CMK_LIBDIR $OPTS_LD $4 > out 2>&1
+          test_result $? "$1" "$2" "$3"
+        fi
+       strictpass=$pass
+       strictfail=$fail
+        if test $pass -eq 1
+       then 
+         if cat out | grep -i "warn" > /dev/null 2>&1
+         then 
+           strictpass="0" && strictfail="1"
+          fi
+        fi
+       cat out >> $charmout
+       /bin/rm -f out
+}
+
 # test_linkso $1 $2 $3 $4, where
 # $1: debug msg
 # $2: yes msg
@@ -498,6 +528,31 @@ EOT
 test_cxx "whether to use signal-safe system() " "yes" "no" ""
 AC_DEFINE_UNQUOTED(CMK_SIGSAFE_SYSTEM, $pass, [whether to use signal-safe system()])
 
+### test sched_setaffinity ####
+cat > $tc <<EOT
+#include <stdlib.h>
+#include <stdio.h>
+#include <unistd.h>
+
+#define _GNU_SOURCE
+#include <sched.h>
+long sched_setaffinity(pid_t pid, unsigned int len, unsigned long *user_mask_ptr);
+long sched_getaffinity(pid_t pid, unsigned int len, unsigned long *user_mask_ptr);
+
+int main()
+{
+  unsigned long mask = 0xffffffff;
+  unsigned int len = sizeof(mask);
+
+  if (sched_setaffinity(0, len, &mask) < 0) {
+    return -1;
+  }
+  return 0;
+}
+EOT
+test_linkc "whether sched_setaffinity call exists" "yes" "no" ""
+AC_DEFINE_UNQUOTED(CMK_HAS_SETAFFINITY, $pass, [whether the sched_setaffinity() exists])
+
 #### check if dlopen works ####
 skip_dl=0
 # for bproc, ignore -ldl
index ec61c5fe02170742278504a6b4dc72ebff1783c4..6b3313c457fe34538b5607e5f0fe5307638fa0dd 100644 (file)
@@ -75,6 +75,9 @@
 /* whether Python is installed */
 #undef CMK_HAS_PYTHON
 
+/* whether the sched_setaffinity() exists */
+#undef CMK_HAS_SETAFFINITY
+
 /* whether the setpriority() exists */
 #undef CMK_HAS_SETPRIORITY