X-Git-Url: http://plrg.eecs.uci.edu/git/?p=IRC.git;a=blobdiff_plain;f=Robust%2Fsrc%2Fbuildscript;h=e1b2566dc1f407e1349abe50116975a414926a80;hp=7d672df9b44b4cf81fac9dc89af6c2d00c549e23;hb=bab4f71e5ab6b7b885818a4a38f604c6cead458f;hpb=9936990c3fa2a468074f9ef761571013d7a8a8c4 diff --git a/Robust/src/buildscript b/Robust/src/buildscript index 7d672df9..e1b2566d 100755 --- a/Robust/src/buildscript +++ b/Robust/src/buildscript @@ -50,6 +50,15 @@ echo -disjoint-dvisit-stack-callees-on-top alternate stack strat echo -disjoint-dvisit-pqueue use prio. q strat to visit descriptors echo -disjoint-desire-determinism set above interproc for determinism echo -disjoint-debug-scheduling debug when methods are scheduled for analysis +echo -disjoint-count-visits for counting visits in the fixed point algorithm to evaluate convergence behavior +echo -disjoint-count-graph-elements FILE nodes, edges and states in final graph for main method context +echo +echo -do-definite-reach-analysis enable improved precision for disjoint reachability analysis +echo -disjoint-disable-global-sweep +echo -disjoint-disable-strong-update +echo -disjoint-disable-predicates +echo -disjoint-summarize-per-class +echo echo echo -pointsto-check-v-runtime check allocation site of pointer targets at runtime to help verify heap analysis results echo @@ -74,6 +83,7 @@ echo "-rawpath print out execute path information for raw version (should be use echo "-useprofile use profiling data for scheduling (should be used together with -raw)" echo -printscheduling print out scheduling graphs echo -printschedulesim print out scheduling simulator result graphs +echo "-tilera_output_dir specify the output directory for the generated TILERA code" echo "-tilera_bme generate tilera version binary for Bare Mental Environment (should be used together with -multicore" echo "-tilera_zlinux generate tilera version binary for Zero-Overhead Linux with multi-process mode (should be used together with -multicore" echo "-tileraconfig config tilera simulator/pci as nxm (should be used together with -tilera)" @@ -83,9 +93,15 @@ echo "-tilera_memprof build the memprof version (should be used together with -t echo -accurateprofile build with accurate profile information including pre/post task processing info echo -profile_interrupt build with profile information of interrupts echo "-useio use standard io to output profiling data (should be used together with -raw and -profile), it only works with single core version" +echo -gccachecoherent turns on the cache coherence during gc +echo -inputfile enables reading input files in Tilera +echo -inputfilecompress enables the compressed version of input files echo echo Multicore GC options +echo -perfcount performance counters +echo -memperfcount Memory performance counters echo -multicoregc generate multi-core binary with garbage collection +echo -pmc parallel collector echo "-numcore4gc set the number of cores for gc (should be used together with -multicoregc), defaultly set as 0" echo "-gcmem_local set the gc shared memory allocation strategy as local (should be used together with -multicoregc)" echo "-gcmem_fixed set the gc shared memory allocation strategy as fixed (should be used together with -multicoregc)" @@ -98,6 +114,10 @@ echo "-gccontroller_remote set the gc shared memory to use a remote controller f echo "-gcsmallpagesize(2) set the gc shared memory to use small page size (should be used together with -multicoregc)" echo "-gclargepagesize set the gc shared memory to use large page size (should be used together with -multicoregc)" echo "-gclargesharedheap(2) set the gc shared memory as large (should be used together with -multicoregc)" +echo "-tilera_page_size set the page size in multicore code" +echo "-tilera_page_size_bits set the page size bits in multicore code" +echo "-tilera_num_blocks set the total number of blocks in multicore code" +echo "-tilera_num_pages_per_block set the number of pages per block in multicore code" echo "-gccacheadapt setup as cacheadaptable mode (should be used together with -multicoregc)" echo -gcprofile build with gcprofile options echo -mgc generate Multicore GC binary without task stuff @@ -107,6 +127,8 @@ echo echo SSJava options echo -ssjava enables SSJava echo -ssjavadebug reports interim results +echo -ssjavainfer location type inference +echo -ssjava-induce-error N S where 1/N is the probability to error at any deref or divide and S is a random seed echo echo Other options echo -jni enable jni @@ -132,7 +154,8 @@ echo -tagstate do tag state analysis echo -optional enable optional echo -debug generate debug symbols echo -prefetch do prefetch analysis -echo -heapsize-mb NUM set initial heap size in MB, default is 256 +echo -heapsize-mb NUM set output program initial heap size in MB, default is 256 +echo -compiler-heapsize-mb NUM set heap size in MB for the JVM running the compiler, default is 1500 echo -garbagestats Print garbage collection statistics echo -webinterface enable web interface echo -runtimedebug printout runtime debug messages @@ -160,6 +183,7 @@ echo -help help tmpbuilddirectory="tmpbuilddirectory" JNI=false SSJAVA=false +USE_SSJAVA_CLASSPATH=false SRCAFTERPP=false; COREPROF=false; NUMA=false; @@ -183,6 +207,7 @@ NOJAVA=false CHECKFLAG=false RECOVERFLAG=false MLP_ON=false +OOOJAVA=false RCR=false RCR_DEBUG=false RCR_DEBUG_VERBOSE=false @@ -207,6 +232,9 @@ USEIOFLAG=false INTERRUPTFLAG=false THREADSIMULATEFLAG=false; MULTICOREGCFLAG=false; +PERFCOUNT=false; +MEMPERFCOUNT=false; +PMCFLAG=false; GCMEMLOCALFLAG=false; GCMEMFIXEDFLAG=false; GCMEMMIXEDFLAG=false; @@ -244,6 +272,17 @@ ASSEMBLY=false GCCORES='' TILERAN1COREFLAG=false TILERA56COREFLAG=false +TILERAOUTPUTDIR="tilera" +TILERA_PAGE_SIZE="0x10000" +TILERA_PAGE_SIZE_BITS="16" +TILERA_NUM_BLOCKS="20" +TILERA_NUM_PAGES_PER_BLOCK="16" +INPUTFILEFLAG=false +INPUTFILES='' +INPUTFILEOPTS='' +GCCACHECOHERENTFLAG=false +COMPILER_HEAP_SIZE="1500" + if [[ -z $1 ]] then @@ -420,6 +459,9 @@ PROFILEINTERRUPTFLAG=true elif [[ $1 = '-useio' ]] then USEIOFLAG=true +elif [[ $1 = '-gccachecoherent' ]] +then +GCCACHECOHERENTFLAG=true elif [[ $1 = '-taskstate' ]] then JAVAOPTS="$JAVAOPTS -taskstate" @@ -455,6 +497,26 @@ elif [[ $1 = '-raw' ]] then RAWFLAG=true JAVAOPTS="$JAVAOPTS -raw" +elif [[ $1 = '-tilera_output_dir' ]] +then +TILERAOUTPUTDIR="$2" +shift +elif [[ $1 = '-tilera_page_size' ]] +then +TILERA_PAGE_SIZE="$2" +shift +elif [[ $1 = '-tilera_page_size_bits' ]] +then +TILERA_PAGE_SIZE_BITS="$2" +shift +elif [[ $1 = '-tilera_num_blocks' ]] +then +TILERA_NUM_BLOCKS="$2" +shift +elif [[ $1 = '-tilera_num_pages_per_block' ]] +then +TILERA_NUM_PAGES_PER_BLOCK="$2" +shift elif [[ $1 = '-tilera_bme' ]] then TILERAFLAG=true @@ -488,6 +550,16 @@ elif [[ $1 = '-multicoregc' ]] then MULTICOREGCFLAG=true JAVAOPTS="$JAVAOPTS -multicoregc" +elif [[ $1 = '-pmc' ]] +then +PMCFLAG=true +JAVAOPTS="$JAVAOPTS -pmc" +elif [[ $1 = '-perfcount' ]] +then +PERFCOUNT=true +elif [[ $1 = '-memperfcount' ]] +then +MEMPERFCOUNT=true elif [[ $1 = '-gcmem_local' ]] then GCMEMLOCALFLAG=true @@ -545,6 +617,14 @@ elif [[ $1 = '-mgc' ]] then MGCFLAG=true JAVAOPTS="$JAVAOPTS -mgc" +elif [[ $1 = '-inputfile' ]] +then +INPUTFILEFLAG=true +INPUTFILES="$INPUTFILES $2" +shift +elif [[ $1 = '-inputfilecompress' ]] +then +INPUTFILEOPTS="$INPUTFILEOPTS -compress" elif [[ $1 = '-mgcintel' ]] then MGCINTELFLAG=true @@ -596,6 +676,7 @@ JAVAOPTS="$JAVAOPTS -minimize" elif [[ $1 = '-ooojava' ]] then MLP_ON=true +OOOJAVA=true JAVAOPTS="$JAVAOPTS -ooojava $2 $3" EXTRAOPTIONS="$EXTRAOPTIONS -DPRECISE_GC -lpthread -DMLP" shift @@ -608,12 +689,24 @@ EXTRAOPTIONS="$EXTRAOPTIONS -DOOO_DISABLE_TASKMEMPOOL" elif [[ $1 = '-ssjava' ]] then SSJAVA=true +USE_SSJAVA_CLASSPATH=true JAVAOPTS="$JAVAOPTS -ssjava" elif [[ $1 = '-ssjavadebug' ]] then JAVAOPTS="$JAVAOPTS -ssjavadebug" +elif [[ $1 = '-ssjavainfer' ]] +then +JAVAOPTS="$JAVAOPTS -ssjavainfer" + +elif [[ $1 = '-ssjava-inject-error' ]] +then +USE_SSJAVA_CLASSPATH=true +JAVAOPTS="$JAVAOPTS -ssjava-inject-error $2 $3" +shift +shift + elif [[ $1 = '-mempool-detect-misuse' ]] then EXTRAOPTIONS="$EXTRAOPTIONS -DMEMPOOL_DETECT_MISUSE" @@ -623,6 +716,11 @@ then EXTRAOPTIONS="$EXTRAOPTIONS -DINITIALHEAPSIZE_MB=($2)" shift +elif [[ $1 = '-compiler-heapsize-mb' ]] +then +COMPILER_HEAP_SIZE="$2" +shift + elif [[ $1 = '-nostalltr' ]] then JAVAOPTS="$JAVAOPTS -nostalltr" @@ -762,6 +860,7 @@ fi shift done + BUILDDIR="$CURDIR/$tmpbuilddirectory" BAMBOORUNTIME=$ROBUSTROOT/Runtime/bamboo @@ -777,15 +876,25 @@ then JAVAOPTS="$JAVAOPTS -struct structfile" fi +if $TILERAFLAG +then +# for tilera code, generate multicorememsize.h +./generate_memsize.sh ${TILERA_PAGE_SIZE} ${TILERA_PAGE_SIZE_BITS} ${TILERA_NUM_BLOCKS} ${TILERA_NUM_PAGES_PER_BLOCK} ${BUILDDIR} +fi ######################### # Setup class path ######################### -if $JNI +if $OOOJAVA then - JAVAOPTS="$JAVAOPTS -classlibrary $ROBUSTROOT/classpath/ -classlibrary $ROBUSTROOT/classpath/vm/reference" + # stuff for OoOJava to mask parts of the base + JAVAOPTS="$JAVAOPTS -classlibrary $ROBUSTROOT/ClassLibrary/OoOJava" +fi +if $JNI + then + JAVAOPTS="$JAVAOPTS -classlibrary $ROBUSTROOT/classpath/ -classlibrary $ROBUSTROOT/classpath/vm/reference/" elif $MGCINTELFLAG then JAVAOPTS="$JAVAOPTS -classlibrary $ROBUSTROOT/ClassLibrary/MGC/ -classlibrary $ROBUSTROOT/ClassLibrary/MGC/gnu/" @@ -795,11 +904,13 @@ elif $MGCFLAG #base multicore gc files JAVAOPTS="$JAVAOPTS -classlibrary $ROBUSTROOT/ClassLibrary/MGC/ -classlibrary $ROBUSTROOT/ClassLibrary/MGC/gnu/" -elif $SSJAVA +elif $USE_SSJAVA_CLASSPATH then JAVAOPTS="$JAVAOPTS -classlibrary $ROBUSTROOT/ClassLibrary/SSJava" else + JAVAOPTS="$JAVAOPTS -classlibrary $ROBUSTROOT/ClassLibrary/ -classlibrary $ROBUSTROOT/ClassLibrary/gnu/" + if $RECOVERFLAG then if $FASTCHECK @@ -832,7 +943,7 @@ else fi # everyone gets this except ssjava! -if ! $SSJAVA +if ! $USE_SSJAVA_CLASSPATH then JAVAOPTS="$JAVAOPTS -classlibrary $ROBUSTROOT/ClassLibrary/ -classlibrary $ROBUSTROOT/ClassLibrary/gnu/" fi @@ -841,12 +952,14 @@ fi ######################### +echo "compiler running in JVM with heap size: ${COMPILER_HEAP_SIZE}MB" + # Build bristlecone/java sources if $MULTICOREFLAG then - if ! ${ROBUSTROOT}/ourjava -Xms50m -Xmx1500m $JAVAFORWARDOPTS -classpath $ROBUSTROOT/../cup/:$ROBUSTROOT Main.Main \ + if ! ${ROBUSTROOT}/ourjava -Xms50m -Xmx${COMPILER_HEAP_SIZE}m $JAVAFORWARDOPTS -classpath $ROBUSTROOT/../cup/:$ROBUSTROOT Main.Main \ -dir $BUILDDIR $JAVAOPTS $SRCFILES then exit $? fi @@ -855,7 +968,7 @@ else if $MGCINTELFLAG then - if ! ${ROBUSTROOT}/ourjava -Xms50m -Xmx1500m $JAVAFORWARDOPTS -classpath $ROBUSTROOT/../cup/:$ROBUSTROOT Main.Main $JAVAOPTS \ + if ! ${ROBUSTROOT}/ourjava -Xms50m -Xmx${COMPILER_HEAP_SIZE}m $JAVAFORWARDOPTS -classpath $ROBUSTROOT/../cup/:$ROBUSTROOT Main.Main $JAVAOPTS \ -dir $BUILDDIR -precise $SRCFILES then exit $? fi @@ -863,7 +976,7 @@ else else if ! $NOJAVA then - if ! ${ROBUSTROOT}/ourjava -Xms50m -Xmx1500m $JAVAFORWARDOPTS -classpath $ROBUSTROOT/../cup/:$ROBUSTROOT Main.Main \ + if ! ${ROBUSTROOT}/ourjava -Xms50m -Xmx${COMPILER_HEAP_SIZE}m $JAVAFORWARDOPTS -classpath $ROBUSTROOT/../cup/:$ROBUSTROOT Main.Main \ -dir $BUILDDIR -precise $JAVAOPTS $SRCFILES then exit $? fi @@ -871,11 +984,25 @@ else fi fi +# transfer the input files + +if $INPUTFILEFLAG +then +./ourjavac -cp ../cup:.:$(CLASSPATH) ${ROBUSTROOT}/Tilera/Benchmarks/GC/galois/InputFileTranslator.java +if ! ${ROBUSTROOT}/ourjava -Xms50m -Xmx${COMPILER_HEAP_SIZE}m -classpath $ROBUSTROOT/Tilera/Benchmarks/GC/galois InputFileTranslator \ + -dir $BUILDDIR $INPUTFILEOPTS $INPUTFILES + then exit $? +fi +fi + +# after executing Main, if -justanalyze flag, just exit if $EXITAFTERANALYSIS then exit fi + + # Build all of the consistency specs if $CHECKFLAG # CHECKFLAG @@ -981,7 +1108,7 @@ make elif $TILERAFLAG then # TILERAFLAG -TILERADIR="$CURDIR/tilera" +TILERADIR="$CURDIR/${TILERAOUTPUTDIR}" if $TILERABMEFLAG then # TILERABMEFLAG TILERA_INDIR="BME" @@ -1010,6 +1137,11 @@ else export TILERACFLAGS="-DTASK -DMULTICORE -DCLOSE_PRINT -DTILERA" fi +if $INPUTFILEFLAG +then +TILERACFLAGS="${TILERACFLAGS} -DINPUTFILE" +fi + if $GCTBLDEBUGFLAG then TILERACFLAGS="${TILERACFLAGS} -DGC_TBL_DEBUG" @@ -1079,6 +1211,21 @@ then #MULTICOREGC version TILERACFLAGS="${TILERACFLAGS} -DMULTICORE_GC -D${GCCORES}" fi +if $PMCFLAG +then #MULTICOREGC version +TILERACFLAGS="${TILERACFLAGS} -DPMC_GC -D${GCCORES}" +fi + +if $PERFCOUNT +then #MULTICOREGC version +TILERACFLAGS="${TILERACFLAGS} -DPERFCOUNT" +fi + +if $MEMPERFCOUNT +then #MULTICOREGC version +TILERACFLAGS="${TILERACFLAGS} -DMEMPERFCOUNT" +fi + if $GCPROFILEFLAG then # GC_PROFILE version TILERACFLAGS="${TILERACFLAGS} -DGC_PROFILE" @@ -1174,7 +1321,15 @@ then # GC_CACHE_ADAPT version TILERACFLAGS="${TILERACFLAGS} -DGC_CACHE_SAMPLING" fi -if $MGCFLAG +if $GCCACHECOHERENTFLAG +then # gc cache coherent version +TILERACFLAGS="${TILERACFLAGS} -DGC_CACHE_COHERENT_ON" +fi + +if $PMCFLAG +then +cp $ROBUSTROOT/Tilera/Runtime/PMC/$MAKEFILE ./Makefile +elif $MGCFLAG then cp $ROBUSTROOT/Tilera/Runtime/MGC/$MAKEFILE ./Makefile else @@ -1237,6 +1392,8 @@ cp ../Tilera/lib/* ./ cp ../$tmpbuilddirectory/*.c ./ cp ../$tmpbuilddirectory/*.h ./ +echo $TILERACFLAGS > ./tileracflags.txt + make else #!RAWFLAG && !TILERABMEFLAG && ! TILERAZLINUXFLAG