Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 25 additions & 22 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,10 @@ BENCH_BLASFEO = build/bin/bench-blasfeo
BENCH_BLAZE = build/bin/bench-blaze
BENCH_EIGEN = build/bin/bench-eigen
BENCH_BLAST = build/bin/bench-blast
BENCH_BLAST_OUTPUT_DIR = $(shell git rev-parse --short HEAD)
BENCH_BLAST_CPU_CORE = 11
BENCH_LIBXSMM = build/bin/bench-libxsmm
BENCHMARK_OPTIONS = --benchmark_repetitions=10 --benchmark_counters_tabular=true --benchmark_out_format=json
BENCHMARK_OPTIONS = --benchmark_repetitions=30 --benchmark_counters_tabular=true --benchmark_out_format=json --benchmark_enable_random_interleaving=true --benchmark_min_warmup_time=10 --benchmark_min_time=1000000x
RUN_MATLAB = matlab -nodisplay -nosplash -nodesktop -r
BENCH_DATA = bench_result/data
BENCH_IMAGE = bench_result/image
Expand Down Expand Up @@ -61,29 +63,29 @@ ${BENCH_DATA}/sgemm-blaze-static.json: $(BENCH_BLAZE)
$(BENCH_BLAZE) --benchmark_filter="BM_gemm_static<float>*" $(BENCHMARK_OPTIONS) \
--benchmark_out=${BENCH_DATA}/sgemm-blaze-static.json

${BENCH_DATA}/dgemm-blast-static-panel.json: $(BENCH_BLAST)
$(BENCH_BLAST) --benchmark_filter="BM_gemm_static_panel<double, .+>" $(BENCHMARK_OPTIONS) \
--benchmark_out=${BENCH_DATA}/dgemm-blast-static-panel.json
${BENCH_DATA}/${BENCH_BLAST_OUTPUT_DIR}/dgemm-blast-static-panel.json: $(BENCH_BLAST)
taskset -c ${BENCH_BLAST_CPU_CORE} $(BENCH_BLAST) --benchmark_filter="BM_gemm_static_panel<double, .+>" $(BENCHMARK_OPTIONS) \
--benchmark_out=${BENCH_DATA}/${BENCH_BLAST_OUTPUT_DIR}/dgemm-blast-static-panel.json

${BENCH_DATA}/dgemm-blast-dynamic-panel.json: $(BENCH_BLAST)
$(BENCH_BLAST) --benchmark_filter="BM_gemm_dynamic_panel<double>" $(BENCHMARK_OPTIONS) \
--benchmark_out=${BENCH_DATA}/dgemm-blast-dynamic-panel.json
${BENCH_DATA}/${BENCH_BLAST_OUTPUT_DIR}/dgemm-blast-dynamic-panel.json: $(BENCH_BLAST)
taskset -c ${BENCH_BLAST_CPU_CORE} $(BENCH_BLAST) --benchmark_filter="BM_gemm_dynamic_panel<double>" $(BENCHMARK_OPTIONS) \
--benchmark_out=${BENCH_DATA}/${BENCH_BLAST_OUTPUT_DIR}/dgemm-blast-dynamic-panel.json

${BENCH_DATA}/dgemm-blast-static-plain.json: $(BENCH_BLAST)
$(BENCH_BLAST) --benchmark_filter="BM_gemm_static_plain<double, .+>" $(BENCHMARK_OPTIONS) \
--benchmark_out=${BENCH_DATA}/dgemm-blast-static-plain.json
${BENCH_DATA}/${BENCH_BLAST_OUTPUT_DIR}/dgemm-blast-static-plain.json: $(BENCH_BLAST)
taskset -c ${BENCH_BLAST_CPU_CORE} $(BENCH_BLAST) --benchmark_filter="BM_gemm_static_plain<double, .+>" $(BENCHMARK_OPTIONS) \
--benchmark_out=${BENCH_DATA}/${BENCH_BLAST_OUTPUT_DIR}/dgemm-blast-static-plain.json

${BENCH_DATA}/dgemm-blast-dynamic-plain.json: $(BENCH_BLAST)
$(BENCH_BLAST) --benchmark_filter="BM_gemm_dynamic_plain<double>" $(BENCHMARK_OPTIONS) \
--benchmark_out=${BENCH_DATA}/dgemm-blast-dynamic-plain.json
${BENCH_DATA}/${BENCH_BLAST_OUTPUT_DIR}/dgemm-blast-dynamic-plain.json: $(BENCH_BLAST)
taskset -c ${BENCH_BLAST_CPU_CORE} $(BENCH_BLAST) --benchmark_filter="BM_gemm_dynamic_plain<double>" $(BENCHMARK_OPTIONS) \
--benchmark_out=${BENCH_DATA}/${BENCH_BLAST_OUTPUT_DIR}/dgemm-blast-dynamic-plain.json

${BENCH_DATA}/sgemm-blast-static-panel.json: $(BENCH_BLAST)
$(BENCH_BLAST) --benchmark_filter="BM_gemm_static_panel<float, .+>" $(BENCHMARK_OPTIONS) \
--benchmark_out=${BENCH_DATA}/sgemm-blast-static-panel.json
taskset -c ${BENCH_BLAST_CPU_CORE} $(BENCH_BLAST) --benchmark_filter="BM_gemm_static_panel<float, .+>" $(BENCHMARK_OPTIONS) \
--benchmark_out=${BENCH_DATA}/${BENCH_BLAST_OUTPUT_DIR}/sgemm-blast-static-panel.json

${BENCH_DATA}/sgemm-blast-dynamic-panel.json: $(BENCH_BLAST)
$(BENCH_BLAST) --benchmark_filter="BM_gemm_dynamic_panel<float>" $(BENCHMARK_OPTIONS) \
--benchmark_out=${BENCH_DATA}/sgemm-blast-dynamic-panel.json
taskset -c ${BENCH_BLAST_CPU_CORE} $(BENCH_BLAST) --benchmark_filter="BM_gemm_dynamic_panel<float>" $(BENCHMARK_OPTIONS) \
--benchmark_out=${BENCH_DATA}/${BENCH_BLAST_OUTPUT_DIR}/sgemm-blast-dynamic-panel.json

${BENCH_DATA}/dgemm-libxsmm.json: $(BENCH_LIBXSMM)
$(BENCH_LIBXSMM) --benchmark_filter="BM_gemm_nt<double>" $(BENCHMARK_OPTIONS) \
Expand All @@ -94,16 +96,17 @@ ${BENCH_DATA}/sgemm-libxsmm.json: $(BENCH_LIBXSMM)
--benchmark_out=${BENCH_DATA}/sgemm-libxsmm.json

dgemm-benchmarks: \
$(shell mkdir -p ${BENCH_DATA}/${BENCH_BLAST_OUTPUT_DIR}) \
${BENCH_DATA}/dgemm-openblas.json \
${BENCH_DATA}/dgemm-mkl.json \
${BENCH_DATA}/dgemm-libxsmm.json \
${BENCH_DATA}/dgemm-blasfeo.json \
${BENCH_DATA}/dgemm-blaze-static.json \
${BENCH_DATA}/dgemm-eigen-static.json \
${BENCH_DATA}/dgemm-blast-static-panel.json \
${BENCH_DATA}/dgemm-blast-dynamic-panel.json \
${BENCH_DATA}/dgemm-blast-static-plain.json \
${BENCH_DATA}/dgemm-blast-dynamic-plain.json
${BENCH_DATA}/${BENCH_BLAST_OUTPUT_DIR}/dgemm-blast-static-panel.json \
${BENCH_DATA}/${BENCH_BLAST_OUTPUT_DIR}/dgemm-blast-dynamic-panel.json \
${BENCH_DATA}/${BENCH_BLAST_OUTPUT_DIR}/dgemm-blast-static-plain.json \
${BENCH_DATA}/${BENCH_BLAST_OUTPUT_DIR}/dgemm-blast-dynamic-plain.json


#
Expand Down Expand Up @@ -238,4 +241,4 @@ ${BENCH_IMAGE}/mpc_software.pdf_tex: ${BENCH_IMAGE}/mpc_software.svg
/usr/bin/inkscape --without-gui --file=${BENCH_IMAGE}/mpc_software.svg --export-pdf=${BENCH_IMAGE}/mpc_software.pdf --export-latex --export-area-drawing

${BENCH_IMAGE}/mpc_software.pdf: ${BENCH_IMAGE}/mpc_software.svg
/usr/bin/inkscape --without-gui --file=${BENCH_IMAGE}/mpc_software.svg --export-pdf=${BENCH_IMAGE}/mpc_software.pdf --export-area-drawing
/usr/bin/inkscape --without-gui --file=${BENCH_IMAGE}/mpc_software.svg --export-pdf=${BENCH_IMAGE}/mpc_software.pdf --export-area-drawing
18 changes: 10 additions & 8 deletions bench/analysis/dgemm_performance.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@
matplotlib.use("Agg")
import matplotlib.pyplot as plt
import json

import glob
import pathlib

def filter_aggregate(benchmarks, name):
result = []
Expand All @@ -24,20 +25,21 @@ def filter_aggregate(benchmarks, name):

plots = [
# {'data_file': 'dgemm-openblas.json', 'label': 'OpenBLAS'},
{'data_file': 'dgemm-mkl.json', 'label': 'MKL'},
# {'data_file': 'dgemm-mkl.json', 'label': 'MKL'},
{'data_file': 'dgemm-blasfeo.json', 'label': 'BLASFEO'},
# {'data_file': 'dgemm-blasfeo-blas.json', 'label': 'BLASFEO*'},
{'data_file': 'dgemm-libxsmm.json', 'label': 'LIBXSMM'},
# {'data_file': 'dgemm-libxsmm.json', 'label': 'LIBXSMM'},
# {'data_file': 'dgemm-eigen-dynamic.json', 'label': 'Eigen (D)'},
# {'data_file': 'dgemm-eigen-static.json', 'label': 'Eigen (S)'},
# {'data_file': 'dgemm-blaze-dynamic.json', 'label': 'Blaze (D)'},
{'data_file': 'dgemm-blaze-static.json', 'label': 'Blaze (S)'},
{'data_file': 'dgemm-blast-static-panel.json', 'label': 'BLAST (SP)'},
{'data_file': 'dgemm-blast-static-plain.json', 'label': 'BLAST (SD)'},
{'data_file': 'dgemm-blast-dynamic-panel.json', 'label': 'BLAST (DP)'},
{'data_file': 'dgemm-blast-dynamic-plain.json', 'label': 'BLAST (DD)'},
# {'data_file': 'dgemm-blaze-static.json', 'label': 'Blaze (S)'},
]

for benchmark_file, benchmark_label in [('dgemm-blast-static-panel.json', 'SP'), ('dgemm-blast-static-plain.json', 'SD'), ('dgemm-blast-dynamic-panel.json', 'DP'), ('dgemm-blast-dynamic-plain.json', 'DD')]:
files = glob.glob('./**/' + benchmark_file, recursive=True, root_dir='bench_result/data')
for file in files:
plots.append({'data_file': file, 'label': f'BLAST ({benchmark_label}) {pathlib.Path(file).parent.stem}'})

fig = plt.figure(figsize=[10, 6])
ax = fig.subplots()

Expand Down
1 change: 0 additions & 1 deletion include/blast/math/dense/DynamicMatrixPointer.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
#include <blast/util/Assert.hpp>
#include <blast/system/Inline.hpp>


namespace blast
{
template <typename T, bool SO, bool AF, bool PF>
Expand Down