================ Lösungsvorschlag [TOC] ================ In __hpc_project.tgz__ ist jetzt die Cache-optimierte Implementierung der GEMM-Operation enthalten. Wesentliche Änderungen: - In `hpc_project/ulmblas/level3.h` wurde aufgeräumt. Es enthält nur noch die Signatur _einer_ GEMM-Variante: :import: session08/example02/hpc_project/ulmblas/level3.h - In `hpc_project/ulmblas/level3.c` sind neben dem Frame-Algorithmus auch der der Macro-Kernel für GEMM und die Pack-Prozeduren enthalten. :links: hpc_project.tgz -> http://www.mathematik.uni-ulm.de/numerik/hpc/ss16/session08/example02/hpc_project.tgz Benchmark durchführen ===================== ---- SHELL(path=session08/example02/hpc_project/ulmblas/,hostname=heim,hide) --- make clean -------------------------------------------------------------------------------- ---- SHELL(path=session08/example02/hpc_project/bench/,hostname=heim,hide) ----- make clean -------------------------------------------------------------------------------- Um den Benchmark durchzuführen, muss in `hpc_project/ulmblas` eine statische Bibliothek für *ulmBLAS* erzeugt werden: ---- SHELL(path=session08/example02/hpc_project/ulmblas/,hostname=heim) -------- pwd make -------------------------------------------------------------------------------- Anschließend kann im `bench`-Verzeichnis der Benchmark erzeugt werden: ---- SHELL(path=session08/example02/hpc_project/bench/,hostname=heim) ---------- pwd make -------------------------------------------------------------------------------- Wie üblich kann ein Plot erzeugt werden, indem die Ausgabe zunächst in eine Datei umgelenkt wird und mit einem GNUplot-Skript verarbeitet wird: ---- SHELL(path=session08/example02/hpc_project/bench/,hostname=heim) ---------- ./bench_dgemm_4_8 > report.gemm_avx gnuplot plot.gemm -------------------------------------------------------------------------------- Damit erhält man: ---- IMAGE --------------------------------------------- session08/example02/hpc_project/bench/bench.gemm_ccc.svg -------------------------------------------------------- Assembler-Code für AVX ====================== :import: session08/example02/hpc_project/ulmblas/ugemm_4_8.s :navigate: up -> doc:index back -> doc:session08/page01 next -> doc:session08/page03