Procházet zdrojové kódy

julia: more integration with autotools

Nathalie Furmento před 5 roky
rodič
revize
214ee6f245

+ 3 - 0
configure.ac

@@ -3520,6 +3520,9 @@ AC_CONFIG_COMMANDS([executable-scripts], [
   test -e tools/starpu_trace_state_stats.py || ln -sf $ac_abs_top_srcdir/tools/starpu_trace_state_stats.py tools/starpu_trace_state_stats.py
   chmod +x tools/starpu_trace_state_stats.py
   chmod +x julia/examples/execute.sh
+  for x in julia/examples/mult/mult_starpu.sh julia/examples/mult/perf.sh julia/examples/variable/variable.sh julia/examples/task_insert_color/task_insert_color.sh julia/examples/vector_scal/vector_scal.sh ; do
+      test -e $x || mkdir -p $(dirname $x) && ln -sf $ac_abs_top_srcdir/$x $(dirname $x)
+  done
 ])
 
 # Create links to ICD files in build/socl/vendors directory. SOCL will use this

+ 9 - 3
julia/examples/Makefile.am

@@ -73,12 +73,18 @@ TESTS			=	$(SHELL_TESTS) $(STARPU_JULIA_EXAMPLES)
 endif
 
 ######################
-#    Mult example    #
+#      Examples      #
 ######################
 
 STARPU_JULIA_EXAMPLES	+=	mult/mult
 SHELL_TESTS		+=	mult/mult_starpu.sh
-
 mult_mult_SOURCES =	mult/mult.c mult/cpu_mult.c
-mult_mult_CPPFLAGS = $(AM_CPPFLAGS) -DSTRIDE=72
+#mult_mult_CPPFLAGS = $(AM_CPPFLAGS)
+
+STARPU_JULIA_EXAMPLES				+=	task_insert_color/task_insert_color
+task_insert_color_task_insert_color_SOURCES	=	task_insert_color/task_insert_color.c
+SHELL_TESTS					+=	task_insert_color/task_insert_color.sh
+
+SHELL_TESTS	+=	variable/variable.sh
+SHELL_TESTS	+=	vector_scal/vector_scal.sh
 

+ 13 - 2
julia/examples/execute.sh.in

@@ -5,6 +5,16 @@ export JULIA_LOAD_PATH=@STARPU_SRC_DIR@/julia/src:$JULIA_LOAD_PATH
 export STARPU_JULIA_LIB=@STARPU_BUILD_DIR@/julia/src/.libs/libstarpujulia-1.3.so
 export STARPU_JULIA_BUILD=@STARPU_BUILD_DIR@/julia
 srcdir=@STARPU_SRC_DIR@/julia/examples
+
+if test "$1" == "-calllib"
+then
+    shift
+    pwd
+    make -f @STARPU_BUILD_DIR@/julia/src/dynamic_compiler/Makefile extern_tasks.so SOURCES_CPU=$srcdir/$1
+    shift
+    export JULIA_TASK_LIB=extern_tasks.so
+fi
+
 srcfile=$1
 if test ! -f $srcdir/$srcfile
 then
@@ -12,6 +22,7 @@ then
     exit 1
 fi
 shift
-cd $srcdir/$(dirname $srcfile)
-@JULIA@ $(basename $srcfile) $*
+#cd $srcdir/$(dirname $srcfile)
+#@JULIA@ $(basename $srcfile) $*
+@JULIA@ $srcdir/$srcfile $*
 

+ 2 - 2
julia/examples/mult/cpu_mult.c

@@ -25,12 +25,12 @@
  * in the case of CPU, GPU frame buffer in the case of GPU etc.). Since we have
  * registered data with the "matrix" data interface, we use the matrix macros.
  */
-void cpu_mult(void *descr[], void *arg)
+void cpu_mult(void *descr[], void *cl_arg)
 {
 	int stride;
 	float *subA, *subB, *subC;
 
-	stride = *((int *)arg);
+	stride = *((int *)cl_arg);
 
 	/* .blas.ptr gives a pointer to the first element of the local copy */
 	subA = (float *)STARPU_MATRIX_GET_PTR(descr[0]);

+ 2 - 1
julia/examples/mult/mult.c

@@ -116,7 +116,8 @@ void multiply_with_starpu(float *A, float *B, float *C,  unsigned xdim,  unsigne
 			task->cl_arg = &stride;
 			task->cl_arg_size = sizeof(stride);
 
-			if (starpu_task_submit(task)!=0) fprintf(stderr,"submit task error\n");
+			int ret = starpu_task_submit(task);
+			STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
 		}
 	}
 

+ 5 - 1
julia/examples/mult/mult_starpu.sh

@@ -1,3 +1,7 @@
 #!/bin/bash
 
-./execute.sh mult/mult.jl toto.dat
+$(dirname $0)/../execute.sh mult/mult.jl
+$(dirname $0)/../execute.sh mult/mult_native.jl
+$(dirname $0)/../execute.sh -calllib mult/cpu_mult.c mult/mult.jl $stride julia_calllib.dat
+
+

+ 23 - 0
julia/examples/mult/perf.sh

@@ -0,0 +1,23 @@
+#!/bin/bash
+
+stride=72
+#stride=4
+
+export STARPU_NOPENCL=0
+export STARPU_SCHED=dmda
+export STARPU_CALIBRATE=1
+
+rm -f ./cstarpu.dat julia_generatedc.dat julia_native.dat julia_calllib.dat
+
+$(dirname $0)/mult $stride > ./cstarpu.dat
+$(dirname $0)/../execute.sh mult/mult.jl $stride julia_generatedc.dat
+$(dirname $0)/../execute.sh mult/mult_native.jl $stride julia_native.dat
+$(dirname $0)/../execute.sh -calllib mult/cpu_mult.c mult/mult.jl $stride julia_calllib.dat
+
+(
+    cat <<EOF
+set output "comparison.pdf"
+set term pdf
+plot "julia_native.dat" w l,"cstarpu.dat" w l,"julia_generatedc.dat" w l,"julia_calllib.dat" w l
+EOF
+) | gnuplot

julia/examples/task_insert_color/Makefile → julia/examples/task_insert_color/Makefile.old


+ 4 - 0
julia/examples/task_insert_color/task_insert_color.sh

@@ -0,0 +1,4 @@
+#!/bin/bash
+
+$(dirname $0)/../execute.sh task_insert_color/task_insert_color.jl
+

julia/examples/variable/Makefile → julia/examples/variable/Makefile.old


+ 5 - 0
julia/examples/variable/variable.sh

@@ -0,0 +1,5 @@
+#!/bin/bash
+
+$(dirname $0)/../execute.sh variable/variable.jl
+$(dirname $0)/../execute.sh variable/variable_native.jl
+

julia/examples/vector_scal/Makefile → julia/examples/vector_scal/Makefile.old


+ 6 - 1
julia/examples/vector_scal/vector_scal.jl

@@ -73,8 +73,13 @@ function compute_times(io,start_dim, step_dim, stop_dim)
     end
 end
 
+if size(ARGS, 1) < 1
+    filename="x.dat"
+else
+    filename=ARGS[1]
+end
 
-io=open(ARGS[1],"w")
+io=open(filename,"w")
 compute_times(io,1024,1024,4096)
 close(io)
 

+ 5 - 0
julia/examples/vector_scal/vector_scal.sh

@@ -0,0 +1,5 @@
+#!/bin/bash
+
+$(dirname $0)/../execute.sh vector_scal/vector_scal.jl
+$(dirname $0)/../execute.sh -calllib vector_scal/cpu_vector_scal.c vector_scal/vector_scal.jl
+

+ 2 - 2
julia/src/dynamic_compiler/Makefile.am

@@ -38,8 +38,8 @@ CUDA_OBJECTS=
 %.o: %.cu
 	$(NVCC) -dc $(CUDA_CFLAGS) $^ --shared --compiler-options '-fPIC' -o $@ $(LDFLAGS)
 
-#${EXTERNLIB}: cpu_mult.c
-#	$(CC) $(CFLAGS) -shared -fPIC $(LDFLAGS) $^ -o $@
+${EXTERNLIB}: $(SOURCES_CPU)
+	$(CC) $(AM_CPPFLAGS) $(AM_CFLAGS) -shared -fPIC $(LDFLAGS) $^ -o $@
 
 ${GENERATEDLIB}: $(C_OBJECTS) $(CUDA_OBJECTS)
 	$(LD) -shared $(LDFLAGS) $^ -o $@