1
1
ifndef JULIAHOME
2
2
$(error JULIAHOME not defined. Set value to the root of the Julia source tree.)
3
3
endif
4
+ ifndef DSFMTDIR
5
+ $(error DSFMTDIR not defined. Set value to the root of the dSFMT source tree.)
6
+ endif
7
+
8
+
9
+ # Will make multi-line targets work
10
+ # (so we can use @for on the second line)
11
+ .ONESHELL :
12
+
4
13
include $(JULIAHOME ) /Make.inc
5
14
include $(JULIAHOME ) /deps/Versions.make
6
15
7
- NODEJSBIN = node8
16
+ NODEJSBIN = node
17
+
18
+ ITERATIONS =$(shell seq 1 5)
8
19
9
20
# Use python2 for Python 2.x
10
21
PYTHON = python3
19
30
MATHEMATICABIN = math
20
31
endif
21
32
22
- # Which BLAS library am I using?
23
- ifeq ($(USE_SYSTEM_BLAS ) , 0)
24
- BLASMANIFEST =$(shell cat $(JULIAHOME ) /usr/manifest/openblas)
25
- BLASDIR =$(JULIAHOME ) /deps/scratch/$(BLASMANIFEST ) /
26
- LIBBLAS =$(BLASDIR )$(LIBBLASNAME ) .a
27
- endif
28
-
29
33
FFLAGS =-fexternal-blas
30
34
# gfortran cannot multiply matrices using 64-bit external BLAS.
31
35
ifeq ($(findstring gfortran, $(FC ) ) , gfortran)
@@ -43,25 +47,21 @@ LIBM = $(LIBMDIR)libopenlibm.a
43
47
endif
44
48
endif
45
49
46
- DSFMTDIR = $(JULIAHOME ) /deps/scratch/dsfmt-$(DSFMT_VER )
47
- RMATHDIR = $(JULIAHOME ) /deps/scratch/Rmath-julia-$(RMATH_JULIA_VER )
48
-
49
50
default : benchmarks.html
50
51
51
52
export OMP_NUM_THREADS =1
52
53
export GOTO_NUM_THREADS =1
53
54
export OPENBLAS_NUM_THREADS =1
54
55
55
56
perf.h : $(JULIAHOME ) /deps/Versions.make
56
- echo ' #include "$(BLASDIR) cblas.h"' > $@
57
+ echo ' #include "cblas.h"' > $@
57
58
echo ' #include "$(DSFMTDIR)/dSFMT.c"' >> $@
58
59
59
60
bin/perf% : perf.c perf.h
60
- $(CC ) -std=c99 -O$* $< -o $@ -I$(DSFMTDIR ) $( LIBBLAS ) -L$(LIBMDIR ) $(LIBM ) $(CFLAGS ) -lpthread
61
+ $(CC ) -std=c99 -O$* $< -o $@ -I$(DSFMTDIR ) -lopenblas -L$(LIBMDIR ) $(LIBM ) $(CFLAGS ) -lpthread
61
62
62
63
bin/fperf% : perf.f90
63
64
mkdir -p mods/$@ # Modules for each binary go in separate directories
64
- # $(FC) $(FFLAGS) -Jmods/$@ -O$* $< -o $@ $(LIBBLAS) -L$(LIBMDIR) $(LIBM) -lpthread
65
65
$(FC ) $(FFLAGS ) -Jmods/$@ -O$* $< -o $@ -lopenblas -L$(LIBMDIR ) $(LIBM ) -lpthread
66
66
67
67
benchmarks/c.csv : \
@@ -80,73 +80,90 @@ benchmarks/fortran.csv: \
80
80
81
81
82
82
benchmarks/c% .csv : bin/perf%
83
- for t in 1 2 3 4 5 ; do $< ; done > $@
83
+ @ for t in $( ITERATIONS ) ; do $< ; done > $@
84
84
85
85
benchmarks/fortran% .csv : bin/fperf%
86
- for t in 1 2 3 4 5 ; do $< ; done > $@
86
+ @ for t in $( ITERATIONS ) ; do $< ; done > $@
87
87
88
88
benchmarks/go.csv : export GOPATH=$(abspath gopath)
89
89
benchmarks/go.csv : perf.go
90
- # CGO_LDFLAGS="$(LIBBLAS) $(LIBM)" go get github.com/gonum/blas/cgo
90
+ # CGO_LDFLAGS="-lopenblas $(LIBM)" go get github.com/gonum/blas/cgo
91
91
go get github.com/gonum/blas/blas64
92
92
go get github.com/gonum/blas/cgo
93
93
go get github.com/gonum/matrix/mat64
94
94
go get github.com/gonum/stat
95
- for t in 1 2 3 4 5 ; do go run $< ; done > $@
95
+ @ for t in $( ITERATIONS ) ; do go run $< ; done > $@
96
96
97
97
benchmarks/julia.csv : perf.jl
98
- for t in 1 2 3 4 5 ; do $( JULIAHOME) /usr/bin/julia $< ; done > $@
98
+ @ for t in $( ITERATIONS ) ; do $(JULIAHOME ) /usr/bin/julia $< ; done > $@
99
99
100
100
benchmarks/python.csv : perf.py
101
- for t in 1 2 3 4 5 ; do $( PYTHON) $< ; done > $@
101
+ @ for t in $( ITERATIONS ) ; do $(PYTHON ) $< ; done > $@
102
102
103
103
benchmarks/matlab.csv : perf.m
104
- for t in 1 2 3 4 5 ; do matlab -nojvm -singleCompThread -r ' perf; perf; exit' | grep ^matlab | tail -8; done > $@
104
+ @ for t in $( ITERATIONS ) ; do matlab -nojvm -singleCompThread -r ' perf; perf; exit' | grep ^matlab | tail -8; done > $@
105
105
106
106
benchmarks/octave.csv : perf.m
107
- for t in 1 2 3 4 5 ; do $( OCTAVE) -q --eval perf 2> /dev/null; done > $@
107
+ @ for t in $( ITERATIONS ) ; do $(OCTAVE ) -q --eval perf 2> /dev/null; done > $@
108
108
109
109
benchmarks/r.csv : perf.R
110
- for t in 1 2 3 4 5 ; do cat $< | R --vanilla --slave 2> /dev/null; done > $@
110
+ @ for t in $( ITERATIONS ) ; do cat $< | R --vanilla --slave 2> /dev/null; done > $@
111
111
112
112
benchmarks/javascript.csv : perf.js
113
- for t in 1 2 3 4 5 ; do $( NODEJSBIN) $< ; done > $@
113
+ @ for t in $( ITERATIONS ) ; do $(NODEJSBIN ) $< ; done > $@
114
114
115
115
benchmarks/mathematica.csv : perf.nb
116
- for t in 1 2 3 4 5 ; do $( MATHEMATICABIN) -noprompt -run " <<$<; Exit[]" ; done > $@
116
+ @ for t in $( ITERATIONS ) ; do $(MATHEMATICABIN ) -noprompt -run " <<$<; Exit[]" ; done > $@
117
117
118
118
benchmarks/stata.csv : perf.do
119
- for t in 1 2 3 4 5 ; do stata -b do $^ $@ ; done
119
+ @ for t in $( ITERATIONS ) ; do stata -b do $^ $@ ; done
120
120
121
121
benchmarks/lua.csv : perf.lua
122
- for t in 1 2 3 4 5 ; do scilua $< ; done > $@
122
+ @ for t in $( ITERATIONS ) ; do luajit $< ; done > $@
123
123
124
124
benchmarks/java.csv : java/src/main/java/PerfBLAS.java
125
- cd java; sh setup.sh; for t in 1 2 3 4 5; do mvn -q exec:java; done > ../$@
125
+ cd java
126
+ sh setup.sh
127
+ @for t in $(ITERATIONS ) ; do mvn -q exec:java; done > ../$@
126
128
127
129
benchmarks/scala.csv : scala/src/main/scala/perf.scala scala/build.sbt
128
- cd scala; for t in 1 2 3 4 5; do sbt run; done > ../$@
130
+ cd scala
131
+ @for t in $(ITERATIONS ) ; do sbt run; done > ../$@
129
132
130
133
benchmarks/rust.csv : rust/src/main.rs rust/src/util.rs rust/Cargo.lock
131
- cd rust; for t in 1 2 3 4 5; do cargo run --release -q; done > ../$@
134
+ cd rust
135
+ @for t in $(ITERATIONS ) ; do cargo run --release -q; done > ../$@
132
136
133
137
LANGUAGES = c fortran go java javascript julia lua mathematica matlab octave python r rust
138
+ GH_ACTION_LANGUAGES = c fortran java javascript julia python r rust
134
139
135
140
# These were formerly listed in LANGUAGES, but I can't get them to run
136
141
# 2017-09-27 johnfgibson
137
142
# scala, stata
138
143
139
144
BENCHMARKS = $(foreach lang,$(LANGUAGES ) ,benchmarks/$(lang ) .csv)
145
+ GH_ACTION_BENCHMARKS = $(foreach lang,$(GH_ACTION_LANGUAGES ) ,benchmarks/$(lang ) .csv)
146
+
147
+ COLON_SEPARATED_GHA_LANGUAGES = $(shell echo $(GH_ACTION_LANGUAGES ) | sed 's/ /:/g')
140
148
141
149
versions.csv : bin/versions.sh
142
150
$^ > $@
143
151
152
+ gh_action_versions.csv : bin/versions.sh
153
+ $^ $(COLON_SEPARATED_GHA_LANGUAGES ) > $@
154
+
144
155
benchmarks.csv : bin/collect.jl $(BENCHMARKS )
145
156
@$(call PRINT_JULIA, $^ >$@ )
146
157
158
+ gh_action_benchmarks.csv : bin/collect.jl $(GH_ACTION_BENCHMARKS )
159
+ @$(call PRINT_JULIA, $^ >$@ )
160
+
147
161
benchmarks.html : bin/table.jl versions.csv benchmarks.csv
148
162
@$(call PRINT_JULIA, $^ >$@ )
149
163
164
+ gh_action_benchmarks.html : bin/table.jl gh_action_versions.csv gh_action_benchmarks.csv
165
+ @$(call PRINT_JULIA, $^ >$@ )
166
+
150
167
clean :
151
168
@rm -rf perf.h bin/perf* bin/fperf* benchmarks/* .csv benchmarks.csv mods * ~ octave-core perf.log gopath/*
152
169
0 commit comments