[PATCH] D10991: [LNT] Reduce I/O execution time for Polybench

Renato Golin renato.golin at linaro.org
Tue Jul 7 05:58:39 PDT 2015


rengolin added reviewers: kristof.beyls, ddunbar, grosser.
rengolin added subscribers: llvm-commits, cmatthews.

Herald added a subscriber: aemerson.

Polybench had large execution time due to the successive call to
fprintf as much as 4000*4000 times. For most programs, this was more
than 1/2 of its execution time.

The current solution is to transform the values into a stream of
nibbles as a char string, and print it once for every row, ie.
only as much as 4000 times, by using fputs instead of fprintf.

Overall new execution time is 47% of previous with some as low as 5%.
The reduction on x86_64 was 53%, on ARM was 51% and on AArch64 was 55%,
which means most of the time was spent on I/O, not the actual benchmark.

I ran this on all three architectures with small and full workloads. Checksums updated.

Repository:
  rL LLVM

http://reviews.llvm.org/D10991

Files:
  SingleSource/Benchmarks/Polybench/datamining/correlation/correlation.c
  SingleSource/Benchmarks/Polybench/datamining/correlation/correlation.reference_output
  SingleSource/Benchmarks/Polybench/datamining/correlation/correlation.reference_output.small
  SingleSource/Benchmarks/Polybench/datamining/covariance/covariance.c
  SingleSource/Benchmarks/Polybench/datamining/covariance/covariance.reference_output
  SingleSource/Benchmarks/Polybench/datamining/covariance/covariance.reference_output.small
  SingleSource/Benchmarks/Polybench/linear-algebra/kernels/2mm/2mm.c
  SingleSource/Benchmarks/Polybench/linear-algebra/kernels/2mm/2mm.reference_output
  SingleSource/Benchmarks/Polybench/linear-algebra/kernels/2mm/2mm.reference_output.small
  SingleSource/Benchmarks/Polybench/linear-algebra/kernels/3mm/3mm.c
  SingleSource/Benchmarks/Polybench/linear-algebra/kernels/3mm/3mm.reference_output
  SingleSource/Benchmarks/Polybench/linear-algebra/kernels/3mm/3mm.reference_output.small
  SingleSource/Benchmarks/Polybench/linear-algebra/kernels/atax/atax.c
  SingleSource/Benchmarks/Polybench/linear-algebra/kernels/atax/atax.reference_output
  SingleSource/Benchmarks/Polybench/linear-algebra/kernels/bicg/bicg.c
  SingleSource/Benchmarks/Polybench/linear-algebra/kernels/bicg/bicg.reference_output
  SingleSource/Benchmarks/Polybench/linear-algebra/kernels/cholesky/cholesky.c
  SingleSource/Benchmarks/Polybench/linear-algebra/kernels/cholesky/cholesky.reference_output
  SingleSource/Benchmarks/Polybench/linear-algebra/kernels/cholesky/cholesky.reference_output.small
  SingleSource/Benchmarks/Polybench/linear-algebra/kernels/doitgen/doitgen.c
  SingleSource/Benchmarks/Polybench/linear-algebra/kernels/doitgen/doitgen.reference_output
  SingleSource/Benchmarks/Polybench/linear-algebra/kernels/doitgen/doitgen.reference_output.small
  SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gemm/gemm.c
  SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gemm/gemm.reference_output
  SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gemm/gemm.reference_output.small
  SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gemver/gemver.c
  SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gesummv/gesummv.c
  SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gesummv/gesummv.reference_output
  SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gesummv/gesummv.reference_output.small
  SingleSource/Benchmarks/Polybench/linear-algebra/kernels/mvt/mvt.c
  SingleSource/Benchmarks/Polybench/linear-algebra/kernels/mvt/mvt.reference_output
  SingleSource/Benchmarks/Polybench/linear-algebra/kernels/symm/symm.c
  SingleSource/Benchmarks/Polybench/linear-algebra/kernels/symm/symm.reference_output
  SingleSource/Benchmarks/Polybench/linear-algebra/kernels/symm/symm.reference_output.small
  SingleSource/Benchmarks/Polybench/linear-algebra/kernels/syr2k/syr2k.c
  SingleSource/Benchmarks/Polybench/linear-algebra/kernels/syr2k/syr2k.reference_output
  SingleSource/Benchmarks/Polybench/linear-algebra/kernels/syr2k/syr2k.reference_output.small
  SingleSource/Benchmarks/Polybench/linear-algebra/kernels/syrk/syrk.c
  SingleSource/Benchmarks/Polybench/linear-algebra/kernels/syrk/syrk.reference_output
  SingleSource/Benchmarks/Polybench/linear-algebra/kernels/syrk/syrk.reference_output.small
  SingleSource/Benchmarks/Polybench/linear-algebra/kernels/trisolv/trisolv.c
  SingleSource/Benchmarks/Polybench/linear-algebra/kernels/trisolv/trisolv.reference_output
  SingleSource/Benchmarks/Polybench/linear-algebra/kernels/trmm/trmm.c
  SingleSource/Benchmarks/Polybench/linear-algebra/kernels/trmm/trmm.reference_output
  SingleSource/Benchmarks/Polybench/linear-algebra/kernels/trmm/trmm.reference_output.small
  SingleSource/Benchmarks/Polybench/linear-algebra/solvers/durbin/durbin.c
  SingleSource/Benchmarks/Polybench/linear-algebra/solvers/gramschmidt/gramschmidt.c
  SingleSource/Benchmarks/Polybench/linear-algebra/solvers/gramschmidt/gramschmidt.reference_output
  SingleSource/Benchmarks/Polybench/linear-algebra/solvers/gramschmidt/gramschmidt.reference_output.small
  SingleSource/Benchmarks/Polybench/linear-algebra/solvers/lu/lu.c
  SingleSource/Benchmarks/Polybench/linear-algebra/solvers/lu/lu.reference_output
  SingleSource/Benchmarks/Polybench/medley/floyd-warshall/floyd-warshall.c
  SingleSource/Benchmarks/Polybench/medley/floyd-warshall/floyd-warshall.reference_output
  SingleSource/Benchmarks/Polybench/medley/floyd-warshall/floyd-warshall.reference_output.small
  SingleSource/Benchmarks/Polybench/medley/reg_detect/reg_detect.c
  SingleSource/Benchmarks/Polybench/medley/reg_detect/reg_detect.reference_output
  SingleSource/Benchmarks/Polybench/stencils/adi/adi.c
  SingleSource/Benchmarks/Polybench/stencils/adi/adi.reference_output
  SingleSource/Benchmarks/Polybench/stencils/adi/adi.reference_output.small
  SingleSource/Benchmarks/Polybench/stencils/fdtd-2d/fdtd-2d.c
  SingleSource/Benchmarks/Polybench/stencils/fdtd-2d/fdtd-2d.reference_output
  SingleSource/Benchmarks/Polybench/stencils/fdtd-2d/fdtd-2d.reference_output.small
  SingleSource/Benchmarks/Polybench/stencils/fdtd-apml/fdtd-apml.c
  SingleSource/Benchmarks/Polybench/stencils/jacobi-1d-imper/jacobi-1d-imper.c
  SingleSource/Benchmarks/Polybench/stencils/jacobi-1d-imper/jacobi-1d-imper.reference_output
  SingleSource/Benchmarks/Polybench/stencils/jacobi-2d-imper/jacobi-2d-imper.c
  SingleSource/Benchmarks/Polybench/stencils/jacobi-2d-imper/jacobi-2d-imper.reference_output
  SingleSource/Benchmarks/Polybench/stencils/jacobi-2d-imper/jacobi-2d-imper.reference_output.small
  SingleSource/Benchmarks/Polybench/stencils/seidel-2d/seidel-2d.c
  SingleSource/Benchmarks/Polybench/stencils/seidel-2d/seidel-2d.reference_output
  SingleSource/Benchmarks/Polybench/stencils/seidel-2d/seidel-2d.reference_output.small
  SingleSource/Benchmarks/Polybench/utilities/polybench.h

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D10991.29167.patch
Type: text/x-patch
Size: 41065 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150707/2d63152a/attachment.bin>


More information about the llvm-commits mailing list