原创:多面体编译,polybench-c-4.2批量测试脚本
1)因为polybench-c-4.2结构比较简单,可以容易实现批量测试脚本
a@a:~/src/a3.llvm.polly/a1.polybench-c-4.2$ which clang
/home/a/src/llvm-project/build/bin/clang
llvm是我自己用源码安装的:
世界最新:ubuntu上cmake, Ninja源码编译llvm-CSDN博客
2)
a@a:~/src/a3.llvm.polly/a1.polybench-c-4.2$ pwd
/home/a/src/a3.llvm.polly/a1.polybench-c-4.2
a@a:~/src/a3.llvm.polly/a1.polybench-c-4.2$ find ./ -name *.c
./medley/floyd-warshall/floyd-warshall.c
./medley/nussinov/nussinov.c
./medley/nussinov/Nussinov.orig.c
./medley/deriche/deriche.c
./stencils/adi/adi.c
./stencils/seidel-2d/seidel-2d.c
./stencils/fdtd-2d/fdtd-2d.c
./stencils/heat-3d/heat-3d.c
./stencils/jacobi-2d/jacobi-2d.c
./stencils/jacobi-1d/jacobi-1d.c
./datamining/covariance/covariance.c
./datamining/correlation/correlation.c
./utilities/polybench.c
./utilities/template-for-new-benchmark.c
./linear-algebra/blas/symm/symm.c
./linear-algebra/blas/gemver/gemver.c
./linear-algebra/blas/syrk/syrk.c
./linear-algebra/blas/gemm/gemm.c
./linear-algebra/blas/trmm/trmm.c
./linear-algebra/blas/gesummv/gesummv.c
./linear-algebra/blas/syr2k/syr2k.c
./linear-algebra/kernels/3mm/3mm.c
./linear-algebra/kernels/atax/atax.c
./linear-algebra/kernels/doitgen/doitgen.c
./linear-algebra/kernels/mvt/mvt.c
./linear-algebra/kernels/2mm/2mm.c
./linear-algebra/kernels/bicg/bicg.c
./linear-algebra/solvers/trisolv/trisolv.c
./linear-algebra/solvers/lu/lu.c
./linear-algebra/solvers/gramschmidt/gramschmidt.c
./linear-algebra/solvers/ludcmp/ludcmp.c
./linear-algebra/solvers/cholesky/cholesky.c
./linear-algebra/solvers/durbin/durbin.c
可见大部分都在,删掉一些就行
2)
aa="./medley/floyd-warshall/floyd-warshall.c
./medley/nussinov/nussinov.c
./medley/nussinov/Nussinov.orig.c
./medley/deriche/deriche.c
./stencils/adi/adi.c
./stencils/seidel-2d/seidel-2d.c
./stencils/fdtd-2d/fdtd-2d.c
./stencils/heat-3d/heat-3d.c
./stencils/jacobi-2d/jacobi-2d.c
./stencils/jacobi-1d/jacobi-1d.c
./datamining/covariance/covariance.c
./datamining/correlation/correlation.c
./linear-algebra/blas/symm/symm.c
./linear-algebra/blas/gemver/gemver.c
./linear-algebra/blas/syrk/syrk.c
./linear-algebra/blas/gemm/gemm.c
./linear-algebra/blas/trmm/trmm.c
./linear-algebra/blas/gesummv/gesummv.c
./linear-algebra/blas/syr2k/syr2k.c
./linear-algebra/kernels/3mm/3mm.c
./linear-algebra/kernels/atax/atax.c
./linear-algebra/kernels/doitgen/doitgen.c
./linear-algebra/kernels/mvt/mvt.c
./linear-algebra/kernels/2mm/2mm.c
./linear-algebra/kernels/bicg/bicg.c
./linear-algebra/solvers/trisolv/trisolv.c
./linear-algebra/solvers/lu/lu.c
./linear-algebra/solvers/gramschmidt/gramschmidt.c
./linear-algebra/solvers/ludcmp/ludcmp.c
./linear-algebra/solvers/cholesky/cholesky.c
./linear-algebra/solvers/durbin/durbin.c"MYSIZE=-DLARGE_DATASETfor xx in $aa;
do echo "gcc -O3:" $xx ; rm -f *.o3gcc $MYSIZE -O3 -I/home/a/src/a3.llvm.polly/a1.polybench-c-4.2/utilities /home/a/src/a3.llvm.polly/a1.polybench-c-4.2/utilities/polybench.c /home/a/src/a3.llvm.polly/a1.polybench-c-4.2/$xx -o a3.o3 -lmtime ./a3.o3echo "clang -O3:" $xx ; rm -f *.o3clang $MYSIZE -O3 -I/home/a/src/a3.llvm.polly/a1.polybench-c-4.2/utilities /home/a/src/a3.llvm.polly/a1.polybench-c-4.2/utilities/polybench.c /home/a/src/a3.llvm.polly/a1.polybench-c-4.2/$xx -o a3.o3 -lmtime ./a3.o3echo "clang -O3 omp 2 threads:" $xx ; rm -f *.o3clang $MYSIZE -O3 -mllvm -polly-omp-backend=LLVM -mllvm -polly-num-threads=2 -I/home/a/src/a3.llvm.polly/a1.polybench-c-4.2/utilities /home/a/src/a3.llvm.polly/a1.polybench-c-4.2/utilities/polybench.c /home/a/src/a3.llvm.polly/a1.polybench-c-4.2/$xx -o a3.o3 -lmtime ./a3.o3echo "clang -O3 vector:" $xx ; rm -f *.o3clang $MYSIZE -O3 -mllvm -polly -mllvm -polly-vectorizer=stripmine -I/home/a/src/a3.llvm.polly/a1.polybench-c-4.2/utilities /home/a/src/a3.llvm.polly/a1.polybench-c-4.2/utilities/polybench.c /home/a/src/a3.llvm.polly/a1.polybench-c-4.2/$xx -o a3.o3 -lmtime ./a3.o3done
4)floyd-warshall/floyd-warshall.c的Polly运行时间太久,
./r3.runall.rh | tee g.txt
gcc -O3: ./medley/floyd-warshall/floyd-warshall.c
real 0m42.879s
user 0m42.764s
sys 0m0.058s
clang -O3: ./medley/floyd-warshall/floyd-warshall.c
real 0m33.317s
user 0m33.239s
sys 0m0.041s
clang -O3 omp 2 threads: ./medley/floyd-warshall/floyd-warshall.c
real 0m33.393s
user 0m33.308s
sys 0m0.044s
clang -O3 vector: ./medley/floyd-warshall/floyd-warshall.c
^C
real 4m56.889s
user 4m56.413s
sys 0m0.098s
其他目前看起来是可以的。