From bf99e7c14baf45725b698d06ad043b531e3a2763 Mon Sep 17 00:00:00 2001 From: "Field G. Van Zee" Date: Thu, 8 Nov 2018 18:47:17 -0600 Subject: [PATCH 1/6] Minor updates to test/mixeddt driver. Details: - Cleaned up test/mixeddt Makefile in preparation for gathering new data for mixeddt paper, including renaming implementations to "internal" and "ad-hoc" to match the terminology to be used in the paper. - Added new matlab scripts for generating 8 figures, each covering all mixed-precision cases for each mixed-domain case. - Updated the runme.sh script according to changes to Makefile. - Fixed a minor bug in test_gemm.c that may have given incorrect performance in complex, homogeneous storage datatype cases where the computation precision was equal to the storage precisions. (Examples: zzzd, cccs.) --- test/mixeddt/Makefile | 180 +++++++------------------- test/mixeddt/matlab/gemm_md.pdf | Bin 211080 -> 0 bytes test/mixeddt/matlab/gen_prec_combos.m | 101 +++++++++++++++ test/mixeddt/matlab/plot_all_md.m | 14 +- test/mixeddt/matlab/plot_case_all.m | 23 ++++ test/mixeddt/matlab/plot_case_md.m | 148 +++++++++++++++++++++ test/mixeddt/matlab/plot_gemm_perf.m | 91 ++++++++++--- test/mixeddt/matlab/prec_dom_to_dt.m | 17 +++ test/mixeddt/runme.sh | 29 ++--- test/mixeddt/test_gemm.c | 3 +- 10 files changed, 434 insertions(+), 172 deletions(-) delete mode 100644 test/mixeddt/matlab/gemm_md.pdf create mode 100644 test/mixeddt/matlab/gen_prec_combos.m create mode 100644 test/mixeddt/matlab/plot_case_all.m create mode 100644 test/mixeddt/matlab/plot_case_md.m create mode 100644 test/mixeddt/matlab/prec_dom_to_dt.m diff --git a/test/mixeddt/Makefile b/test/mixeddt/Makefile index cb9c3484e..80f05fc21 100644 --- a/test/mixeddt/Makefile +++ b/test/mixeddt/Makefile @@ -100,38 +100,6 @@ endif # BLAS library path(s). This is where the BLAS libraries reside. HOME_LIB_PATH := $(HOME)/flame/lib -#MKL_LIB_PATH := /opt/apps/intel/13/composer_xe_2013.2.146/mkl/lib/intel64 -#MKL_LIB_PATH := $(HOME)/intel/mkl/lib/intel64 -MKL_LIB_PATH := ${MKLROOT}/lib/intel64 -#ICC_LIB_PATH := /opt/apps/intel/13/composer_xe_2013.2.146/compiler/lib/intel64 - -# OpenBLAS -OPENBLAS_LIB := $(HOME_LIB_PATH)/libopenblas.a -OPENBLASP_LIB := $(HOME_LIB_PATH)/libopenblasp.a - -# ATLAS -ATLAS_LIB := $(HOME_LIB_PATH)/libf77blas.a \ - $(HOME_LIB_PATH)/libatlas.a - -# MKL -MKL_LIB := -L$(MKL_LIB_PATH) \ - -lmkl_intel_lp64 \ - -lmkl_core \ - -lmkl_sequential \ - -lpthread -lm -ldl -#MKLP_LIB := -L$(MKL_LIB_PATH) \ -# -lmkl_intel_thread \ -# -lmkl_core \ -# -lmkl_intel_ilp64 \ -# -L$(ICC_LIB_PATH) \ -# -liomp5 -MKLP_LIB := -L$(MKL_LIB_PATH) \ - -lmkl_intel_lp64 \ - -lmkl_core \ - -lmkl_gnu_thread \ - -lpthread -lm -ldl -fopenmp - #-L$(ICC_LIB_PATH) \ - #-lgomp @@ -162,42 +130,18 @@ CFLAGS += -I$(TEST_SRC_PATH) LIBBLIS_LINK := $(LIB_PATH)/$(LIBBLIS_L) -# Datatypes for A, B, and C. -#DTA_S := -DDTA=BLIS_FLOAT -#DTA_D := -DDTA=BLIS_DOUBLE -#DTA_C := -DDTA=BLIS_SCOMPLEX -#DTA_Z := -DDTA=BLIS_DCOMPLEX -# -#DTB_S := -DDTB=BLIS_FLOAT -#DTB_D := -DDTB=BLIS_DOUBLE -#DTB_C := -DDTB=BLIS_SCOMPLEX -#DTB_Z := -DDTB=BLIS_DCOMPLEX -# -#DTC_S := -DDTC=BLIS_FLOAT -#DTC_D := -DDTC=BLIS_DOUBLE -#DTC_C := -DDTC=BLIS_SCOMPLEX -#DTC_Z := -DDTC=BLIS_DCOMPLEX -# -#DTX_S := -DDTC=BLIS_FLOAT -#DTX_D := -DDTC=BLIS_DOUBLE - # Which library? BLI_DEF := -DBLIS BLA_DEF := -DBLAS -# Implementation string -STR_BLI := -DSTR=\"asm_blis\" -STR_OBL := -DSTR=\"openblas\" -STR_MKL := -DSTR=\"mkl\" - # Single or multithreaded string STR_ST := -DTHR_STR=\"st\" STR_MT := -DTHR_STR=\"mt\" # Problem size specification -PDEF_ST := -DP_BEGIN=96 \ - -DP_END=1200 \ - -DP_INC=96 +PDEF_ST := -DP_BEGIN=40 \ + -DP_END=2000 \ + -DP_INC=40 PDEF_MT := -DP_BEGIN=80 \ -DP_END=4000 \ @@ -232,9 +176,9 @@ get-cdef-x = $(strip $(subst s,-DDTX=BLIS_FLOAT, \ get-cdefs = $(call get-cdef-c,$(1)) $(call get-cdef-a,$(1)) $(call get-cdef-b,$(1)) $(call get-cdef-x,$(1)) # Define a function to return the appropriate -DSTR= and -D[BLIS|BLAS] flags. -get-idefs = $(strip $(subst asm_blis,-DSTR=\"$(1)\" -DBLIS, \ - $(subst openblas,-DSTR=\"$(1)\" -DBLAS, \ - $(subst mkl,-DSTR=\"$(1)\" -DBLAS,$(1))))) +get-idefs = $(strip $(subst intern,-DSTR=\"$(1)\" -DBLIS, \ + $(subst ad-hoc,-DSTR=\"$(1)\" -DBLAS, \ + $(subst mkl,-DSTR=\"$(1)\" -DBLAS,$(1))))) # Enumerate all possible datatype combinations. DT_CODES := $(foreach dt0,$(dts),$(foreach dt1,$(dts),$(foreach dt2,$(dts),$(foreach pr,$(prs),$(dt0)_$(dt1)_$(dt2)_$(pr))))) @@ -243,21 +187,15 @@ DT_CODES := $(foreach dt0,$(dts),$(foreach dt1,$(dts),$(foreach dt2,$(dts),$(for DT_COMBOS := $(foreach code,$(DT_CODES),$(call get-cstr,$(code))) # Build a list of BLIS, OpenBLAS, and MKL executables. -BLIS_OBJS_ST := $(foreach combo,$(DT_COMBOS),test_$(combo)gemm_asm_blis_st.o) -BLIS_BINS_ST := $(patsubst %.o,%.x,$(BLIS_OBJS_ST)) -OPENBLAS_OBJS_ST := $(foreach combo,$(DT_COMBOS),test_$(combo)gemm_openblas_st.o) -OPENBLAS_BINS_ST := $(patsubst %.o,%.x,$(OPENBLAS_OBJS_ST)) +INTERN_OBJS_ST := $(foreach combo,$(DT_COMBOS),test_$(combo)gemm_intern_st.o) +INTERN_BINS_ST := $(patsubst %.o,%.x,$(INTERN_OBJS_ST)) +AD_HOC_OBJS_ST := $(foreach combo,$(DT_COMBOS),test_$(combo)gemm_ad-hoc_st.o) +AD_HOC_BINS_ST := $(patsubst %.o,%.x,$(AD_HOC_OBJS_ST)) -BLIS_OBJS_MT := $(foreach combo,$(DT_COMBOS),test_$(combo)gemm_asm_blis_mt.o) -BLIS_BINS_MT := $(patsubst %.o,%.x,$(BLIS_OBJS_MT)) -OPENBLAS_OBJS_MT := $(foreach combo,$(DT_COMBOS),test_$(combo)gemm_openblas_mt.o) -OPENBLAS_BINS_MT := $(patsubst %.o,%.x,$(OPENBLAS_OBJS_MT)) - -#MKL_OBJS_ST := $(foreach combo,$(DT_COMBOS),test_$(combo)gemm_mkl_st.o) - -#BLIS_OBJS_MT := $(foreach combo,$(DT_COMBOS),test_$(combo)gemm_asm_blis_mt.o) -#OPENBLAS_OBJS_MT := $(foreach combo,$(DT_COMBOS),test_$(combo)gemm_openblas_mt.o) -#MKL_OBJS_MT := $(foreach combo,$(DT_COMBOS),test_$(combo)gemm_mkl_mt.o) +INTERN_OBJS_MT := $(foreach combo,$(DT_COMBOS),test_$(combo)gemm_intern_mt.o) +INTERN_BINS_MT := $(patsubst %.o,%.x,$(INTERN_OBJS_MT)) +AD_HOC_OBJS_MT := $(foreach combo,$(DT_COMBOS),test_$(combo)gemm_ad-hoc_mt.o) +AD_HOC_BINS_MT := $(patsubst %.o,%.x,$(AD_HOC_OBJS_MT)) @@ -265,15 +203,16 @@ OPENBLAS_BINS_MT := $(patsubst %.o,%.x,$(OPENBLAS_OBJS_MT)) # --- Targets/rules ------------------------------------------------------------ # -all: st +all: st -st: blis-st openblas-st -mt: blis-mt openblas-mt +st: intern-st ad-hoc-st +mt: intern-mt ad-hoc-mt + +intern-st: $(INTERN_BINS_ST) +ad-hoc-st: $(AD_HOC_BINS_ST) +intern-mt: $(INTERN_BINS_MT) +ad-hoc-mt: $(AD_HOC_BINS_MT) -blis-st: $(BLIS_BINS_ST) -openblas-st: $(OPENBLAS_BINS_ST) -blis-mt: $(BLIS_BINS_MT) -openblas-mt: $(OPENBLAS_BINS_MT) #blis: test_ssssgemm_asm_blis_st.x \ # test_sssdgemm_asm_blis_st.x \ # test_ssdsgemm_asm_blis_st.x \ @@ -281,13 +220,6 @@ openblas-mt: $(OPENBLAS_BINS_MT) # test_dsssgemm_asm_blis_st.x \ # test_dddsgemm_asm_blis_st.x \ # test_ddddgemm_asm_blis_st.x -#openblas: test_ssssgemm_openblas_st.x \ -# test_sssdgemm_openblas_st.x \ -# test_ssdsgemm_openblas_st.x \ -# test_sdssgemm_openblas_st.x \ -# test_dsssgemm_openblas_st.x \ -# test_dddsgemm_openblas_st.x \ -# test_ddddgemm_openblas_st.x # --Object file rules -- @@ -316,7 +248,7 @@ endef # Define the implementations for which we will instantiate compilation rules. -IMPLS := asm_blis openblas +IMPLS := intern ad-hoc # Instantiate the rule function make-st-rule() and make-mt-rule for each # implementation in IMPLS and each of the datatype "codes" in DT_CODES. @@ -334,56 +266,44 @@ $(foreach code,$(DT_CODES),$(eval $(call make-mt-rule,$(code),$(impl))))) # compatibility layer. This prevents BLIS from inadvertently getting called # for the BLAS routines we are trying to test with. -test_%_openblas_st.x: test_%_openblas_st.o $(LIBBLIS_LINK) +test_%_ad-hoc_st.x: test_%_ad-hoc_st.o $(LIBBLIS_LINK) ifeq ($(ENABLE_VERBOSE),yes) - $(LINKER) $< $(OPENBLAS_LIB) $(LIBBLIS_LINK) $(LDFLAGS) -o $@ - $(RM_F) $< -else - @@echo "Linking $@ to '$(notdir $(OPENBLAS_LIB)) $(LIBBLIS_LINK)'" - @$(LINKER) $< $(OPENBLAS_LIB) $(LIBBLIS_LINK) $(LDFLAGS) -o $@ - @$(RM_F) $< -endif - -test_%_openblas_mt.x: test_%_openblas_mt.o $(LIBBLIS_LINK) -ifeq ($(ENABLE_VERBOSE),yes) - $(LINKER) $< $(OPENBLASP_LIB) $(LIBBLIS_LINK) $(LDFLAGS) -o $@ - $(RM_F) $< -else - @@echo "Linking $@ to '$(notdir $(OPENBLAS_LIB)) $(LIBBLIS_LINK)'" - @$(LINKER) $< $(OPENBLASP_LIB) $(LIBBLIS_LINK) $(LDFLAGS) -o $@ - @$(RM_F) $< -endif - -#test_%_mkl_st.x: test_%_mkl_st.o $(LIBBLIS_LINK) -#ifeq ($(ENABLE_VERBOSE),yes) -# $(LINKER) $< $(MKL_LIB) $(LIBBLIS_LINK) $(LDFLAGS) -o $@ -# $(RM_F) $< -#else -# @@echo "Linking $@ to '$(notdir $(MKL_LIB)) $(LIBBLIS_LINK)'" -# @$(LINKER) $< $(MKL_LIB) $(LIBBLIS_LINK) $(LDFLAGS) -o $@ -# @$(RM_F) $< -#endif - -#test_%_mkl_mt.x: test_%_mkl_mt.o $(LIBBLIS_LINK) -# $(LINKER) $< $(MKLP_LIB) $(LIBBLIS_LINK) $(LDFLAGS) -o $@ - -test_%_blis_st.x: test_%_blis_st.o $(LIBBLIS_LINK) -ifeq ($(ENABLE_VERBOSE),yes) - $(LINKER) $< $(LIBBLIS_LINK) $(LDFLAGS) -o $@ + $(LINKER) $< $(LIBBLIS_LINK) $(LDFLAGS) -o $@ $(RM_F) $< else @@echo "Linking $@ to '$(LIBBLIS_LINK)'" - @$(LINKER) $< $(LIBBLIS_LINK) $(LDFLAGS) -o $@ + @$(LINKER) $< $(LIBBLIS_LINK) $(LDFLAGS) -o $@ @$(RM_F) $< endif -test_%_blis_mt.x: test_%_blis_mt.o $(LIBBLIS_LINK) +test_%_ad-hoc_mt.x: test_%_ad-hoc_mt.o $(LIBBLIS_LINK) ifeq ($(ENABLE_VERBOSE),yes) - $(LINKER) $< $(LIBBLIS_LINK) $(LDFLAGS) -o $@ + $(LINKER) $< $(LIBBLIS_LINK) $(LDFLAGS) -o $@ $(RM_F) $< else @@echo "Linking $@ to '$(LIBBLIS_LINK)'" - @$(LINKER) $< $(LIBBLIS_LINK) $(LDFLAGS) -o $@ + @$(LINKER) $< $(LIBBLIS_LINK) $(LDFLAGS) -o $@ + @$(RM_F) $< +endif + + +test_%_intern_st.x: test_%_intern_st.o $(LIBBLIS_LINK) +ifeq ($(ENABLE_VERBOSE),yes) + $(LINKER) $< $(LIBBLIS_LINK) $(LDFLAGS) -o $@ + $(RM_F) $< +else + @@echo "Linking $@ to '$(LIBBLIS_LINK)'" + @$(LINKER) $< $(LIBBLIS_LINK) $(LDFLAGS) -o $@ + @$(RM_F) $< +endif + +test_%_intern_mt.x: test_%_intern_mt.o $(LIBBLIS_LINK) +ifeq ($(ENABLE_VERBOSE),yes) + $(LINKER) $< $(LIBBLIS_LINK) $(LDFLAGS) -o $@ + $(RM_F) $< +else + @@echo "Linking $@ to '$(LIBBLIS_LINK)'" + @$(LINKER) $< $(LIBBLIS_LINK) $(LDFLAGS) -o $@ @$(RM_F) $< endif diff --git a/test/mixeddt/matlab/gemm_md.pdf b/test/mixeddt/matlab/gemm_md.pdf deleted file mode 100644 index e665aef46e42c67d4f773c23763ff563ebd693ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 211080 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 z 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

2m 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 z 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 diff --git a/test/mixeddt/matlab/gen_prec_combos.m b/test/mixeddt/matlab/gen_prec_combos.m new file mode 100644 index 000000000..44b56f0c9 --- /dev/null +++ b/test/mixeddt/matlab/gen_prec_combos.m @@ -0,0 +1,101 @@ +function r_val = gen_prec_combos( mdcase ) + +dt_chars = [ 's' 'd' 'c' 'z' ]; +pr_chars = [ 's' 'd' ]; +dm_chars = [ 'r' 'c' ]; + +dmc = mdcase( 1 ); +dma = mdcase( 2 ); +dmb = mdcase( 3 ); + +if 0 +pr_combos( 1, : ) = 'ssss'; +pr_combos( 2, : ) = 'ssds'; +pr_combos( 3, : ) = 'sdss'; +pr_combos( 4, : ) = 'sdds'; +pr_combos( 5, : ) = 'dsss'; +pr_combos( 6, : ) = 'dsds'; +pr_combos( 7, : ) = 'ddss'; +pr_combos( 8, : ) = 'ddds'; +pr_combos( 9, : ) = 'dddd'; +pr_combos( 10, : ) = 'ddsd'; +pr_combos( 11, : ) = 'dsdd'; +pr_combos( 12, : ) = 'dssd'; +pr_combos( 13, : ) = 'sddd'; +pr_combos( 14, : ) = 'sdsd'; +pr_combos( 15, : ) = 'ssdd'; +pr_combos( 16, : ) = 'sssd'; +end + +pr_combos( 1, : ) = 'ssss'; +pr_combos( 2, : ) = 'ssds'; +pr_combos( 3, : ) = 'dddd'; +pr_combos( 4, : ) = 'ddsd'; + +pr_combos( 5, : ) = 'sdss'; +pr_combos( 6, : ) = 'sdds'; +pr_combos( 7, : ) = 'dsdd'; +pr_combos( 8, : ) = 'dssd'; + +pr_combos( 9, : ) = 'dsss'; +pr_combos( 10, : ) = 'dsds'; +pr_combos( 11, : ) = 'sddd'; +pr_combos( 12, : ) = 'sdsd'; + +pr_combos( 13, : ) = 'ddss'; +pr_combos( 14, : ) = 'ddds'; +pr_combos( 15, : ) = 'ssdd'; +pr_combos( 16, : ) = 'sssd'; + +for i = 1:16 + + pr_combo = pr_combos( i, : ); + + %str = sprintf( '%s', pr_combo ); disp(str); + + prc = pr_combo( 1 ); + pra = pr_combo( 2 ); + prb = pr_combo( 3 ); + pr = pr_combo( 4 ); + + dtc = prec_dom_to_dt( prc, dmc ); + dta = prec_dom_to_dt( pra, dma ); + dtb = prec_dom_to_dt( prb, dmb ); + + dt_combos( i, : ) = sprintf( '%c%c%c%c', dtc, dta, dtb, pr ); + +end + + +%if 0 +%i = 1; +%pr = 's'; +%for prc = pr_chars +% for pra = pr_chars +% for prb = pr_chars +% dtc = prec_dom_to_dt( prc, dmc ); +% dta = prec_dom_to_dt( pra, dma ); +% dtb = prec_dom_to_dt( prb, dmb ); +% dt_combos( i, : ) = sprintf( '%c%c%c%c', dtc, dta, dtb, pr ); +% i = i + 1; +% end +% end +%end +% +%pr = 'd'; +%for prc = flip( pr_chars ) +% for pra = flip( pr_chars ) +% for prb = flip( pr_chars ) +% dtc = prec_dom_to_dt( prc, dmc ); +% dta = prec_dom_to_dt( pra, dma ); +% dtb = prec_dom_to_dt( prb, dmb ); +% dt_combos( i, : ) = sprintf( '%c%c%c%c', dtc, dta, dtb, pr ); +% i = i + 1; +% end +% end +%end +%end + +r_val = dt_combos; + +end diff --git a/test/mixeddt/matlab/plot_all_md.m b/test/mixeddt/matlab/plot_all_md.m index 9302bdb0a..8d417da82 100644 --- a/test/mixeddt/matlab/plot_all_md.m +++ b/test/mixeddt/matlab/plot_all_md.m @@ -73,8 +73,8 @@ set(gcf,'Position',[0 0 2000 900]); set(gcf,'PaperUnits', 'inches'); set(gcf,'PaperSize', [64 33]); set(gcf,'PaperPosition', [0 0 64 33]); -%set(gcf,'PaperPositionMode','auto'); -set(gcf,'PaperPositionMode','manual'); +%set(gcf,'PaperPositionMode','auto'); +set(gcf,'PaperPositionMode','manual'); set(gcf,'PaperOrientation','landscape'); for dti = 1:n_combos @@ -88,9 +88,11 @@ for dti = 1:n_combos if combo(4) == 's' data_gemm_asm_blis_ref( :, : ) = data_gemm_asm_blis_sref( :, : ); data_gemm_openblas_ref( :, : ) = data_gemm_openblas_sref( :, : ); - elseif combo(4) == 'd' + refch = 's'; + else %if combo(4) == 'd' data_gemm_asm_blis_ref( :, : ) = data_gemm_asm_blis_dref( :, : ); data_gemm_openblas_ref( :, : ) = data_gemm_openblas_dref( :, : ); + refch = 'd'; end if ( combo(1) == 'c' || combo(1) == 'z' ) && ... @@ -99,9 +101,11 @@ for dti = 1:n_combos if combo(4) == 's' data_gemm_asm_blis_ref( :, : ) = data_gemm_asm_blis_cref( :, : ); data_gemm_openblas_ref( :, : ) = data_gemm_openblas_cref( :, : ); - elseif combo(4) == 'd' + refch = 'c'; + else %if combo(4) == 'd' data_gemm_asm_blis_ref( :, : ) = data_gemm_asm_blis_zref( :, : ); data_gemm_openblas_ref( :, : ) = data_gemm_openblas_zref( :, : ); + refch = 'z'; end end @@ -121,7 +125,7 @@ for dti = 1:n_combos data_gemm_asm_blis_ref, ... data_gemm_openblas, ... data_gemm_openblas_ref, ... - is_mt, dti ); + is_mt, refch, 8, 16, dti ); end diff --git a/test/mixeddt/matlab/plot_case_all.m b/test/mixeddt/matlab/plot_case_all.m new file mode 100644 index 000000000..05f54e6ea --- /dev/null +++ b/test/mixeddt/matlab/plot_case_all.m @@ -0,0 +1,23 @@ +function r_val = plot_case_all( is_mt ) + +cases( 1, : ) = [ 'rrr' ]; +cases( 2, : ) = [ 'rrc' ]; +cases( 3, : ) = [ 'rcr' ]; +cases( 4, : ) = [ 'rcc' ]; +cases( 5, : ) = [ 'crr' ]; +cases( 6, : ) = [ 'crc' ]; +cases( 7, : ) = [ 'ccr' ]; +cases( 8, : ) = [ 'ccc' ]; + +n_cases = size(cases,1); + +for i = 1:n_cases + + thecase = cases( i, : ); + + plot_case_md( thecase, is_mt ); +end + +r_val = 0; + +end diff --git a/test/mixeddt/matlab/plot_case_md.m b/test/mixeddt/matlab/plot_case_md.m new file mode 100644 index 000000000..492f9c2ca --- /dev/null +++ b/test/mixeddt/matlab/plot_case_md.m @@ -0,0 +1,148 @@ +function r_val = plot_case_md( mdcase, is_mt ) + +if is_mt == 1 + thr_str = 'mt'; +else + thr_str = 'st'; +end + +if 1 +dt_combos = gen_prec_combos( mdcase ); +else +dt_combos( 1, : ) = [ 'ssss' ]; +dt_combos( 2, : ) = [ 'sssd' ]; +dt_combos( 3, : ) = [ 'ssds' ]; +dt_combos( 4, : ) = [ 'sdss' ]; +dt_combos( 5, : ) = [ 'dsss' ]; +dt_combos( 6, : ) = [ 'ddds' ]; +dt_combos( 7, : ) = [ 'dddd' ]; +end + +n_combos = size(dt_combos,1); + +filetemp_blis = '../output_%s_%sgemm_asm_blis.m'; +filetemp_open = '../output_%s_%sgemm_openblas.m'; + +% Construct filenames for the "reference" (single real) data, then load +% the data files, and finally save the results to different variable names. +file_blis_sref = sprintf( filetemp_blis, thr_str, 'ssss' ); +file_open_sref = sprintf( filetemp_open, thr_str, 'ssss' ); +%str = sprintf( ' Loading %s', file_blis_sref ); disp(str); +run( file_blis_sref ) +%str = sprintf( ' Loading %s', file_open_sref ); disp(str); +run( file_open_sref ) +data_gemm_asm_blis_sref( :, : ) = data_gemm_asm_blis( :, : ); +data_gemm_openblas_sref( :, : ) = data_gemm_openblas( :, : ); + +% Construct filenames for the "reference" (double real) data, then load +% the data files, and finally save the results to different variable names. +file_blis_dref = sprintf( filetemp_blis, thr_str, 'dddd' ); +file_open_dref = sprintf( filetemp_open, thr_str, 'dddd' ); +%str = sprintf( ' Loading %s', file_blis_dref ); disp(str); +run( file_blis_dref ) +%str = sprintf( ' Loading %s', file_open_dref ); disp(str); +run( file_open_dref ) +data_gemm_asm_blis_dref( :, : ) = data_gemm_asm_blis( :, : ); +data_gemm_openblas_dref( :, : ) = data_gemm_openblas( :, : ); + +% Construct filenames for the "reference" (single complex) data, then load +% the data files, and finally save the results to different variable names. +file_blis_cref = sprintf( filetemp_blis, thr_str, 'cccs' ); +file_open_cref = sprintf( filetemp_open, thr_str, 'cccs' ); +%str = sprintf( ' Loading %s', file_blis_cref ); disp(str); +run( file_blis_cref ) +%str = sprintf( ' Loading %s', file_open_cref ); disp(str); +run( file_open_cref ) +data_gemm_asm_blis_cref( :, : ) = data_gemm_asm_blis( :, : ); +data_gemm_openblas_cref( :, : ) = data_gemm_openblas( :, : ); + +% Construct filenames for the "reference" (double complex) data, then load +% the data files, and finally save the results to different variable names. +file_blis_zref = sprintf( filetemp_blis, thr_str, 'zzzd' ); +file_open_zref = sprintf( filetemp_open, thr_str, 'zzzd' ); +%str = sprintf( ' Loading %s', file_blis_zref ); disp(str); +run( file_blis_zref ) +%str = sprintf( ' Loading %s', file_open_zref ); disp(str); +run( file_open_zref ) +data_gemm_asm_blis_zref( :, : ) = data_gemm_asm_blis( :, : ); +data_gemm_openblas_zref( :, : ) = data_gemm_openblas( :, : ); + +fig = figure; +orient( fig, 'portrait' ); +%set(gcf,'Position',[0 0 2000 900]); +set(gcf,'PaperUnits', 'inches'); +%set(gcf,'PaperSize', [16 12.4]); +%set(gcf,'PaperPosition', [0 0 16 12.4]); +set(gcf,'PaperSize', [14 11.0]); +set(gcf,'PaperPosition', [0 0 14 11.0]); +%set(gcf,'PaperPositionMode','auto'); +set(gcf,'PaperPositionMode','manual'); +set(gcf,'PaperOrientation','portrait'); + +for dti = 1:n_combos +%for dti = 1:1 + + % Grab the current datatype combination. + combo = dt_combos( dti, : ); + + str = sprintf( 'Plotting %d: %s', dti, combo ); disp(str); + + if combo(4) == 's' + data_gemm_asm_blis_ref( :, : ) = data_gemm_asm_blis_sref( :, : ); + data_gemm_openblas_ref( :, : ) = data_gemm_openblas_sref( :, : ); + refch = 's'; + else %if combo(4) == 'd' + data_gemm_asm_blis_ref( :, : ) = data_gemm_asm_blis_dref( :, : ); + data_gemm_openblas_ref( :, : ) = data_gemm_openblas_dref( :, : ); + refch = 'd'; + end + + if ( combo(1) == 'c' || combo(1) == 'z' ) && ... + ( combo(2) == 'c' || combo(2) == 'z' ) && ... + ( combo(3) == 'c' || combo(3) == 'z' ) + if combo(4) == 's' + data_gemm_asm_blis_ref( :, : ) = data_gemm_asm_blis_cref( :, : ); + data_gemm_openblas_ref( :, : ) = data_gemm_openblas_cref( :, : ); + refch = 'c'; + else %if combo(4) == 'd' + data_gemm_asm_blis_ref( :, : ) = data_gemm_asm_blis_zref( :, : ); + data_gemm_openblas_ref( :, : ) = data_gemm_openblas_zref( :, : ); + refch = 'z'; + end + end + + % Construct filenames for the data files from templates. + file_blis = sprintf( filetemp_blis, thr_str, combo ); + file_open = sprintf( filetemp_open, thr_str, combo ); + + % Load the data files. + %str = sprintf( ' Loading %s', file_blis ); disp(str); + run( file_blis ) + %str = sprintf( ' Loading %s', file_open ); disp(str); + run( file_open ) + + % Plot the result. + plot_gemm_perf( combo, ... + data_gemm_asm_blis, ... + data_gemm_asm_blis_ref, ... + data_gemm_openblas, ... + data_gemm_openblas_ref, ... + is_mt, refch, 4, 4, dti ); + +end + + +%if 0 +%set(gcf,'Position',[0 0 2000 900]); +%set(gcf,'PaperUnits', 'inches'); +%set(gcf,'PaperSize', [48 22]); +%set(gcf,'PaperPosition', [0 0 48 22]); +%%set(gcf,'PaperPositionMode','auto'); +%set(gcf,'PaperPositionMode','manual'); +%set(gcf,'PaperOrientation','landscape'); +%end + +outfile = sprintf( 'gemm_%s', mdcase ); + +print(gcf, outfile,'-bestfit','-dpdf'); +%print(gcf, 'gemm_md','-fillpage','-dpdf'); diff --git a/test/mixeddt/matlab/plot_gemm_perf.m b/test/mixeddt/matlab/plot_gemm_perf.m index 7fc9b0752..a93daa22e 100644 --- a/test/mixeddt/matlab/plot_gemm_perf.m +++ b/test/mixeddt/matlab/plot_gemm_perf.m @@ -4,10 +4,12 @@ function r_val = plot_gemm_perf( dt_str, ... data_open, ... data_open_ref, ... is_mt, ... + refch, ... + rows, cols, ... theid ) if 1 -ax1 = subplot( 8, 16, theid ); +ax1 = subplot( rows, cols, theid ); hold( ax1, 'on' ); end @@ -16,7 +18,7 @@ color_open_ref = 'k'; lines_open_ref = ':'; markr_open_ref = 'o'; color_mkl_ref = 'r'; lines_mkl_ref = ':'; markr_mkl_ref = '.'; color_blis = 'b'; lines_blis = '-'; markr_blis = ''; -color_open = 'k'; lines_open = '-'; markr_open = 'o'; +color_open = 'k'; lines_open = '-.'; markr_open = 'o'; color_mkl = 'r'; lines_mkl = '-'; markr_mkl = '.'; if dt_str(4) == 's' @@ -50,12 +52,24 @@ filename_png = sprintf( filename_png, dt_str ); %dt0_str = [ dt_str(4), dt_str(4), dt_str(4), dt_str(4) ]; dt0_str = dt_str(4); -blis_sref_legend = sprintf( 'BLIS [sc]gemm' ); -blis_dref_legend = sprintf( 'BLIS [dz]gemm' ); -blis_legend = sprintf( 'BLIS mixed' ); -open_sref_legend = sprintf( 'OBLA [sc]gemm' ); -open_dref_legend = sprintf( 'OBLA [dz]gemm' ); -open_legend = sprintf( 'OBLA mixed' ); +if refch == 's' +blis_ref_legend = sprintf( 'Ref (sgemm)' ); +%blis_ref_legend = sprintf( 'Reference' ); +elseif refch == 'd' +blis_ref_legend = sprintf( 'Ref (dgemm)' ); +%blis_ref_legend = sprintf( 'Reference' ); +elseif refch == 'c' +blis_ref_legend = sprintf( 'Ref (cgemm)' ); +elseif refch == 'z' +blis_ref_legend = sprintf( 'Ref (zgemm)' ); +end + +blis_sref_legend = sprintf( 'Ref [sc]gemm' ); +blis_dref_legend = sprintf( 'Ref [dz]gemm' ); +blis_legend = sprintf( 'Internal' ); +open_sref_legend = sprintf( 'Ad-hoc [sc]gemm' ); +open_dref_legend = sprintf( 'Ad-hoc [dz]gemm' ); +open_legend = sprintf( 'Ad-hoc' ); y_scale = 1.00; @@ -72,12 +86,12 @@ y_end = max_perf_core * y_scale; flopscol = 4; msize = 5; if 1 -fontsize = 12; +fontsize = 13; else fontsize = 16; end -linesize = 0.7; -legend_loc = 'SouthEast'; +linesize = 0.5; +legend_loc = 'southeast'; % -------------------------------------------------------------------- @@ -95,9 +109,9 @@ blis_ref = line( x_axis( :, 1 ), data_blis_ref( :, flopscol ) / nth, ... blis_md = line( x_axis( :, 1 ), data_blis( :, flopscol ) / nth, ... 'Color',color_blis, 'LineStyle',lines_blis, ... 'LineWidth',linesize ); -open_ref = line( x_axis( :, 1 ), data_open_ref( :, flopscol ) / nth, ... - 'Color',color_open_ref, 'LineStyle',lines_open_ref, ... - 'LineWidth',linesize ); +%open_ref = line( x_axis( :, 1 ), data_open_ref( :, flopscol ) / nth, ... +% 'Color',color_open_ref, 'LineStyle',lines_open_ref, ... +% 'LineWidth',linesize ); open_md = line( x_axis( :, 1 ), data_open( :, flopscol ) / nth, ... 'Color',color_open, 'LineStyle',lines_open, ... 'LineWidth',linesize ); @@ -108,17 +122,17 @@ open_md = line( x_axis( :, 1 ), data_open( :, flopscol ) / nth, ... xlim( ax1, [x_begin x_end] ); ylim( ax1, [y_begin y_end] ); +if rows == 8 && cols == 16 + if theid == 1 leg = legend( ... [ ... blis_ref ... blis_md ... - open_ref ... open_md ... ], ... blis_sref_legend, ... blis_legend, ... -open_sref_legend, ... open_legend, ... 'Location', 'best' ); %'Location', legend_loc ); @@ -131,12 +145,10 @@ leg = legend( ... [ ... blis_ref ... blis_md ... - open_ref ... open_md ... ], ... blis_dref_legend, ... blis_legend, ... -open_dref_legend, ... open_legend, ... 'Location', 'best' ); %'Location', legend_loc ); @@ -144,6 +156,45 @@ set( leg,'Box','off' ); set( leg,'Color','none' ); set( leg,'FontSize',fontsize-2 ); set( leg,'Units','inches' ); +end + +else % rows == 4 && cols == 4 + +if theid == 1 +leg = legend( ... +[ ... + blis_ref ... + blis_md ... + open_md ... +], ... +blis_ref_legend, ... +blis_legend, ... +open_legend, ... +'Location', legend_loc ); +%'Location', 'best' ); +set( leg,'Box','off' ); +set( leg,'Color','none' ); +set( leg,'FontSize',fontsize-2 ); +set( leg,'Units','inches' ); +set( leg,'Position',[1.03 3.46 0.7 0.3 ] ); +elseif theid == 3 +leg = legend( ... +[ ... + blis_ref ... + blis_md ... + open_md ... +], ... +blis_ref_legend, ... +blis_legend, ... +open_legend, ... +'Location', legend_loc ); +%'Location', 'best' ); +set( leg,'Box','off' ); +set( leg,'Color','none' ); +set( leg,'FontSize',fontsize-2 ); +set( leg,'Units','inches' ); +set( leg,'Position',[3.51 3.46 0.7 0.3 ] ); +end end @@ -159,14 +210,14 @@ tpos = get( titl, 'Position' ); % default is to align across whole figure, not b tpos(1) = tpos(1) + 40; set( titl, 'Position', tpos ); % here we nudge it back to centered with box. -if theid > 112 +if theid > (rows-1)*cols xlab = xlabel( ax1,xaxisname ); %tpos = get( xlab, 'Position' ) %tpos(2) = tpos(2) + 10; %set( xlab, 'Position', tpos ); end -if mod(theid-1,16) == 0 +if mod(theid-1,cols) == 0 ylab = ylabel( ax1,yaxisname ); end diff --git a/test/mixeddt/matlab/prec_dom_to_dt.m b/test/mixeddt/matlab/prec_dom_to_dt.m new file mode 100644 index 000000000..86e61413b --- /dev/null +++ b/test/mixeddt/matlab/prec_dom_to_dt.m @@ -0,0 +1,17 @@ +function r_val = prec_dom_to_dt( pc, dc ) + +if dc == 'r' + if pc == 's' + r_val = 's'; + else + r_val = 'd'; + end +else + if pc == 's' + r_val = 'c'; + else + r_val = 'z'; + end +end + +end diff --git a/test/mixeddt/runme.sh b/test/mixeddt/runme.sh index 2e9967f2b..81283e5fb 100755 --- a/test/mixeddt/runme.sh +++ b/test/mixeddt/runme.sh @@ -67,15 +67,15 @@ fi # Complex domain implementations to test. if [ ${sys} = "blis" ]; then - test_impls="openblas asm_blis" + test_impls="ad-hoc intern" elif [ ${sys} = "stampede2" ]; then - test_impls="openblas asm_blis mkl" + test_impls="" elif [ ${sys} = "lonestar5" ]; then - test_impls="openblas mkl asm_blis" + test_impls="" fi # Datatypes to test. @@ -102,16 +102,13 @@ for dtc in ${dt_chars}; do done # Threadedness to test. -threads="mt" -#threads="st" - -test_impls="openblas" +#threads="mt" +threads="st" +# Overrides, in case something goes wrong for a subset of tests. +#test_impls="ad-hoc" #dt_combos="ssss sssd ssds sdss dsss ddds dddd" -#dt_combos="csss csds cdss cdds zsss zsds zdss zdds cssd csdd cdsd cddd zssd zsdd zdsd zddd" -#dt_combos="cssd csdd cdsd cddd zsss zsds zdss zdds" -#dt_combos="cdsd cddd zsss zsds zdss zdds" -#test_impls="asm_blis" + # Now perform complex test cases. for th in ${threads}; do @@ -134,11 +131,11 @@ for th in ${threads}; do # Unset GOMP_CPU_AFFINITY for OpenBLAS, as it causes the library # to execute sequentially. - if [ ${im} = "openblas" ]; then - unset GOMP_CPU_AFFINITY - else - export GOMP_CPU_AFFINITY="0 1 2 3" - fi + #if [ ${im} = "openblas" ]; then + # unset GOMP_CPU_AFFINITY + #else + # export GOMP_CPU_AFFINITY="0 1 2 3" + #fi else export BLIS_JC_NT=1 diff --git a/test/mixeddt/test_gemm.c b/test/mixeddt/test_gemm.c index 7be31960d..14d0cfed6 100644 --- a/test/mixeddt/test_gemm.c +++ b/test/mixeddt/test_gemm.c @@ -259,7 +259,8 @@ void blas_gemm_md( obj_t* alpha, obj_t* a, obj_t* b, obj_t* beta, obj_t* c ) if ( bli_obj_dt( a ) == bli_obj_dt( b ) && bli_obj_dt( b ) == bli_obj_dt( c ) && - bli_obj_dt( c ) == ( num_t )comp_prec ) + //bli_obj_dt( c ) == ( num_t )comp_prec ) + bli_obj_prec( c ) == comp_prec ) { blas_gemm( transa, transb, bli_obj_dt( c ), alpha, a, b, beta, c ); return; From ce719f816d1237f5277527d7f61123e77180be54 Mon Sep 17 00:00:00 2001 From: "Field G. Van Zee" Date: Sat, 10 Nov 2018 14:48:43 -0600 Subject: [PATCH 2/6] More edits to mixeddt matlab scripts. Details: - Renamed scripts in test/mixeddt/matlab: plot_case_all.m -> plot_dom_all.m plot_case_md.m -> plot_dom_case.m plot_all_md.m -> plot_dt_all.m - Added plot_dt_select.m in order to plot select graphs for the main body of the mixeddt paper, and added additional related legend handling in plot_gemm_perf.m. - Added test/mixeddt/matlab/output and a .gitkeep file within in order to force git to recognize the directory. --- test/mixeddt/matlab/output/.gitkeep | 0 .../{plot_case_all.m => plot_dom_all.m} | 4 +- .../{plot_case_md.m => plot_dom_case.m} | 12 +- .../matlab/{plot_all_md.m => plot_dt_all.m} | 4 +- test/mixeddt/matlab/plot_dt_select.m | 148 +++++++++++++++ test/mixeddt/matlab/plot_gemm_perf.m | 176 +++++++++++------- test/mixeddt/matlab/testrand.pdf | Bin 33468 -> 0 bytes 7 files changed, 261 insertions(+), 83 deletions(-) create mode 100644 test/mixeddt/matlab/output/.gitkeep rename test/mixeddt/matlab/{plot_case_all.m => plot_dom_all.m} (80%) rename test/mixeddt/matlab/{plot_case_md.m => plot_dom_case.m} (88%) rename test/mixeddt/matlab/{plot_all_md.m => plot_dt_all.m} (98%) create mode 100644 test/mixeddt/matlab/plot_dt_select.m delete mode 100644 test/mixeddt/matlab/testrand.pdf diff --git a/test/mixeddt/matlab/output/.gitkeep b/test/mixeddt/matlab/output/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/test/mixeddt/matlab/plot_case_all.m b/test/mixeddt/matlab/plot_dom_all.m similarity index 80% rename from test/mixeddt/matlab/plot_case_all.m rename to test/mixeddt/matlab/plot_dom_all.m index 05f54e6ea..f2fe7df4e 100644 --- a/test/mixeddt/matlab/plot_case_all.m +++ b/test/mixeddt/matlab/plot_dom_all.m @@ -1,4 +1,4 @@ -function r_val = plot_case_all( is_mt ) +function r_val = plot_dom_all( is_mt ) cases( 1, : ) = [ 'rrr' ]; cases( 2, : ) = [ 'rrc' ]; @@ -15,7 +15,7 @@ for i = 1:n_cases thecase = cases( i, : ); - plot_case_md( thecase, is_mt ); + plot_dom_case( thecase, is_mt ); end r_val = 0; diff --git a/test/mixeddt/matlab/plot_case_md.m b/test/mixeddt/matlab/plot_dom_case.m similarity index 88% rename from test/mixeddt/matlab/plot_case_md.m rename to test/mixeddt/matlab/plot_dom_case.m index 492f9c2ca..e0147d049 100644 --- a/test/mixeddt/matlab/plot_case_md.m +++ b/test/mixeddt/matlab/plot_dom_case.m @@ -1,4 +1,4 @@ -function r_val = plot_case_md( mdcase, is_mt ) +function r_val = plot_dom_case( mdcase, is_mt ) if is_mt == 1 thr_str = 'mt'; @@ -27,9 +27,7 @@ filetemp_open = '../output_%s_%sgemm_openblas.m'; % the data files, and finally save the results to different variable names. file_blis_sref = sprintf( filetemp_blis, thr_str, 'ssss' ); file_open_sref = sprintf( filetemp_open, thr_str, 'ssss' ); -%str = sprintf( ' Loading %s', file_blis_sref ); disp(str); run( file_blis_sref ) -%str = sprintf( ' Loading %s', file_open_sref ); disp(str); run( file_open_sref ) data_gemm_asm_blis_sref( :, : ) = data_gemm_asm_blis( :, : ); data_gemm_openblas_sref( :, : ) = data_gemm_openblas( :, : ); @@ -38,9 +36,7 @@ data_gemm_openblas_sref( :, : ) = data_gemm_openblas( :, : ); % the data files, and finally save the results to different variable names. file_blis_dref = sprintf( filetemp_blis, thr_str, 'dddd' ); file_open_dref = sprintf( filetemp_open, thr_str, 'dddd' ); -%str = sprintf( ' Loading %s', file_blis_dref ); disp(str); run( file_blis_dref ) -%str = sprintf( ' Loading %s', file_open_dref ); disp(str); run( file_open_dref ) data_gemm_asm_blis_dref( :, : ) = data_gemm_asm_blis( :, : ); data_gemm_openblas_dref( :, : ) = data_gemm_openblas( :, : ); @@ -49,9 +45,7 @@ data_gemm_openblas_dref( :, : ) = data_gemm_openblas( :, : ); % the data files, and finally save the results to different variable names. file_blis_cref = sprintf( filetemp_blis, thr_str, 'cccs' ); file_open_cref = sprintf( filetemp_open, thr_str, 'cccs' ); -%str = sprintf( ' Loading %s', file_blis_cref ); disp(str); run( file_blis_cref ) -%str = sprintf( ' Loading %s', file_open_cref ); disp(str); run( file_open_cref ) data_gemm_asm_blis_cref( :, : ) = data_gemm_asm_blis( :, : ); data_gemm_openblas_cref( :, : ) = data_gemm_openblas( :, : ); @@ -60,9 +54,7 @@ data_gemm_openblas_cref( :, : ) = data_gemm_openblas( :, : ); % the data files, and finally save the results to different variable names. file_blis_zref = sprintf( filetemp_blis, thr_str, 'zzzd' ); file_open_zref = sprintf( filetemp_open, thr_str, 'zzzd' ); -%str = sprintf( ' Loading %s', file_blis_zref ); disp(str); run( file_blis_zref ) -%str = sprintf( ' Loading %s', file_open_zref ); disp(str); run( file_open_zref ) data_gemm_asm_blis_zref( :, : ) = data_gemm_asm_blis( :, : ); data_gemm_openblas_zref( :, : ) = data_gemm_openblas( :, : ); @@ -142,7 +134,7 @@ end %set(gcf,'PaperOrientation','landscape'); %end -outfile = sprintf( 'gemm_%s', mdcase ); +outfile = sprintf( 'output/gemm_%s', mdcase ); print(gcf, outfile,'-bestfit','-dpdf'); %print(gcf, 'gemm_md','-fillpage','-dpdf'); diff --git a/test/mixeddt/matlab/plot_all_md.m b/test/mixeddt/matlab/plot_dt_all.m similarity index 98% rename from test/mixeddt/matlab/plot_all_md.m rename to test/mixeddt/matlab/plot_dt_all.m index 8d417da82..865d578bb 100644 --- a/test/mixeddt/matlab/plot_all_md.m +++ b/test/mixeddt/matlab/plot_dt_all.m @@ -1,4 +1,4 @@ -function r_val = plot_all_md( is_mt ) +function r_val = plot_dt_all( is_mt ) if is_mt == 1 thr_str = 'mt'; @@ -139,5 +139,5 @@ set(gcf,'PaperPosition', [0 0 48 22]); set(gcf,'PaperPositionMode','manual'); set(gcf,'PaperOrientation','landscape'); end -print(gcf, 'gemm_md','-bestfit','-dpdf'); +print(gcf, 'output/gemm_md','-bestfit','-dpdf'); %print(gcf, 'gemm_md','-fillpage','-dpdf'); diff --git a/test/mixeddt/matlab/plot_dt_select.m b/test/mixeddt/matlab/plot_dt_select.m new file mode 100644 index 000000000..38c8d3cd1 --- /dev/null +++ b/test/mixeddt/matlab/plot_dt_select.m @@ -0,0 +1,148 @@ +function r_val = plot_dt_select( dom, is_mt ) + +if is_mt == 1 + thr_str = 'mt'; +else + thr_str = 'st'; +end + +if dom == 'r' + + dt_combos( 1, : ) = [ 'dsss' ]; + dt_combos( 2, : ) = [ 'sddd' ]; + dt_combos( 3, : ) = [ 'sdds' ]; + dt_combos( 4, : ) = [ 'dssd' ]; + dt_combos( 5, : ) = [ 'ddds' ]; + dt_combos( 6, : ) = [ 'sssd' ]; + +else + + dt_combos( 1, : ) = [ 'csss' ]; + dt_combos( 2, : ) = [ 'zddd' ]; + dt_combos( 3, : ) = [ 'ccss' ]; + dt_combos( 4, : ) = [ 'zzdd' ]; + dt_combos( 5, : ) = [ 'cscs' ]; + dt_combos( 6, : ) = [ 'zdzd' ]; +end + +n_combos = size(dt_combos,1); + +filetemp_blis = '../output_%s_%sgemm_asm_blis.m'; +filetemp_open = '../output_%s_%sgemm_openblas.m'; + +% Construct filenames for the "reference" (single real) data, then load +% the data files, and finally save the results to different variable names. +file_blis_sref = sprintf( filetemp_blis, thr_str, 'ssss' ); +file_open_sref = sprintf( filetemp_open, thr_str, 'ssss' ); +run( file_blis_sref ) +run( file_open_sref ) +data_gemm_asm_blis_sref( :, : ) = data_gemm_asm_blis( :, : ); +data_gemm_openblas_sref( :, : ) = data_gemm_openblas( :, : ); + +% Construct filenames for the "reference" (double real) data, then load +% the data files, and finally save the results to different variable names. +file_blis_dref = sprintf( filetemp_blis, thr_str, 'dddd' ); +file_open_dref = sprintf( filetemp_open, thr_str, 'dddd' ); +run( file_blis_dref ) +run( file_open_dref ) +data_gemm_asm_blis_dref( :, : ) = data_gemm_asm_blis( :, : ); +data_gemm_openblas_dref( :, : ) = data_gemm_openblas( :, : ); + +% Construct filenames for the "reference" (single complex) data, then load +% the data files, and finally save the results to different variable names. +file_blis_cref = sprintf( filetemp_blis, thr_str, 'cccs' ); +file_open_cref = sprintf( filetemp_open, thr_str, 'cccs' ); +run( file_blis_cref ) +run( file_open_cref ) +data_gemm_asm_blis_cref( :, : ) = data_gemm_asm_blis( :, : ); +data_gemm_openblas_cref( :, : ) = data_gemm_openblas( :, : ); + +% Construct filenames for the "reference" (double complex) data, then load +% the data files, and finally save the results to different variable names. +file_blis_zref = sprintf( filetemp_blis, thr_str, 'zzzd' ); +file_open_zref = sprintf( filetemp_open, thr_str, 'zzzd' ); +run( file_blis_zref ) +run( file_open_zref ) +data_gemm_asm_blis_zref( :, : ) = data_gemm_asm_blis( :, : ); +data_gemm_openblas_zref( :, : ) = data_gemm_openblas( :, : ); + +%fig = figure; +fig = figure('Position', [100, 100, 1024, 1300]); +orient( fig, 'portrait' ); +%set(gcf,'Position',[0 0 2000 900]); +set(gcf,'PaperUnits', 'inches'); +%set(gcf,'PaperSize', [16 12.4]); +%set(gcf,'PaperPosition', [0 0 16 12.4]); +set(gcf,'PaperSize', [9 11.0]); +set(gcf,'PaperPosition', [0 0 9 11.0]); +%set(gcf,'PaperPositionMode','auto'); +set(gcf,'PaperPositionMode','manual'); +set(gcf,'PaperOrientation','portrait'); + +for dti = 1:n_combos +%for dti = 1:1 + + % Grab the current datatype combination. + combo = dt_combos( dti, : ); + + str = sprintf( 'Plotting %d: %s', dti, combo ); disp(str); + + if combo(4) == 's' + data_gemm_asm_blis_ref( :, : ) = data_gemm_asm_blis_sref( :, : ); + data_gemm_openblas_ref( :, : ) = data_gemm_openblas_sref( :, : ); + refch = 's'; + else %if combo(4) == 'd' + data_gemm_asm_blis_ref( :, : ) = data_gemm_asm_blis_dref( :, : ); + data_gemm_openblas_ref( :, : ) = data_gemm_openblas_dref( :, : ); + refch = 'd'; + end + + if ( combo(1) == 'c' || combo(1) == 'z' ) && ... + ( combo(2) == 'c' || combo(2) == 'z' ) && ... + ( combo(3) == 'c' || combo(3) == 'z' ) + if combo(4) == 's' + data_gemm_asm_blis_ref( :, : ) = data_gemm_asm_blis_cref( :, : ); + data_gemm_openblas_ref( :, : ) = data_gemm_openblas_cref( :, : ); + refch = 'c'; + else %if combo(4) == 'd' + data_gemm_asm_blis_ref( :, : ) = data_gemm_asm_blis_zref( :, : ); + data_gemm_openblas_ref( :, : ) = data_gemm_openblas_zref( :, : ); + refch = 'z'; + end + end + + % Construct filenames for the data files from templates. + file_blis = sprintf( filetemp_blis, thr_str, combo ); + file_open = sprintf( filetemp_open, thr_str, combo ); + + % Load the data files. + %str = sprintf( ' Loading %s', file_blis ); disp(str); + run( file_blis ) + %str = sprintf( ' Loading %s', file_open ); disp(str); + run( file_open ) + + % Plot the result. + plot_gemm_perf( combo, ... + data_gemm_asm_blis, ... + data_gemm_asm_blis_ref, ... + data_gemm_openblas, ... + data_gemm_openblas_ref, ... + is_mt, refch, 3, 2, dti ); + +end + + +%if 0 +%set(gcf,'Position',[0 0 2000 900]); +%set(gcf,'PaperUnits', 'inches'); +%set(gcf,'PaperSize', [48 22]); +%set(gcf,'PaperPosition', [0 0 48 22]); +%%set(gcf,'PaperPositionMode','auto'); +%set(gcf,'PaperPositionMode','manual'); +%set(gcf,'PaperOrientation','landscape'); +%end + +outfile = sprintf( 'output/gemm_select_%c', dom ); + +print(gcf, outfile,'-bestfit','-dpdf'); +%print(gcf, 'gemm_md','-fillpage','-dpdf'); diff --git a/test/mixeddt/matlab/plot_gemm_perf.m b/test/mixeddt/matlab/plot_gemm_perf.m index a93daa22e..f30cc7da5 100644 --- a/test/mixeddt/matlab/plot_gemm_perf.m +++ b/test/mixeddt/matlab/plot_gemm_perf.m @@ -124,77 +124,115 @@ ylim( ax1, [y_begin y_end] ); if rows == 8 && cols == 16 -if theid == 1 -leg = legend( ... -[ ... - blis_ref ... - blis_md ... - open_md ... -], ... -blis_sref_legend, ... -blis_legend, ... -open_legend, ... -'Location', 'best' ); -%'Location', legend_loc ); -set( leg,'Box','off' ); -set( leg,'Color','none' ); -set( leg,'FontSize',fontsize-2 ); -set( leg,'Units','inches' ); -elseif theid == 9 -leg = legend( ... -[ ... - blis_ref ... - blis_md ... - open_md ... -], ... -blis_dref_legend, ... -blis_legend, ... -open_legend, ... -'Location', 'best' ); -%'Location', legend_loc ); -set( leg,'Box','off' ); -set( leg,'Color','none' ); -set( leg,'FontSize',fontsize-2 ); -set( leg,'Units','inches' ); -end + if theid == 1 + leg = legend( ... + [ ... + blis_ref ... + blis_md ... + open_md ... + ], ... + blis_sref_legend, ... + blis_legend, ... + open_legend, ... + 'Location', 'best' ); + %'Location', legend_loc ); + set( leg,'Box','off' ); + set( leg,'Color','none' ); + set( leg,'FontSize',fontsize-2 ); + set( leg,'Units','inches' ); + elseif theid == 9 + leg = legend( ... + [ ... + blis_ref ... + blis_md ... + open_md ... + ], ... + blis_dref_legend, ... + blis_legend, ... + open_legend, ... + 'Location', 'best' ); + %'Location', legend_loc ); + set( leg,'Box','off' ); + set( leg,'Color','none' ); + set( leg,'FontSize',fontsize-2 ); + set( leg,'Units','inches' ); + end -else % rows == 4 && cols == 4 +elseif rows == 4 && cols == 4 -if theid == 1 -leg = legend( ... -[ ... - blis_ref ... - blis_md ... - open_md ... -], ... -blis_ref_legend, ... -blis_legend, ... -open_legend, ... -'Location', legend_loc ); -%'Location', 'best' ); -set( leg,'Box','off' ); -set( leg,'Color','none' ); -set( leg,'FontSize',fontsize-2 ); -set( leg,'Units','inches' ); -set( leg,'Position',[1.03 3.46 0.7 0.3 ] ); -elseif theid == 3 -leg = legend( ... -[ ... - blis_ref ... - blis_md ... - open_md ... -], ... -blis_ref_legend, ... -blis_legend, ... -open_legend, ... -'Location', legend_loc ); -%'Location', 'best' ); -set( leg,'Box','off' ); -set( leg,'Color','none' ); -set( leg,'FontSize',fontsize-2 ); -set( leg,'Units','inches' ); -set( leg,'Position',[3.51 3.46 0.7 0.3 ] ); -end + if theid == 1 + leg = legend( ... + [ ... + blis_ref ... + blis_md ... + open_md ... + ], ... + blis_ref_legend, ... + blis_legend, ... + open_legend, ... + 'Location', legend_loc ); + %'Location', 'best' ); + set( leg,'Box','off' ); + set( leg,'Color','none' ); + set( leg,'FontSize',fontsize-2 ); + set( leg,'Units','inches' ); + set( leg,'Position',[1.03 3.46 0.7 0.3 ] ); + elseif theid == 3 + leg = legend( ... + [ ... + blis_ref ... + blis_md ... + open_md ... + ], ... + blis_ref_legend, ... + blis_legend, ... + open_legend, ... + 'Location', legend_loc ); + %'Location', 'best' ); + set( leg,'Box','off' ); + set( leg,'Color','none' ); + set( leg,'FontSize',fontsize-2 ); + set( leg,'Units','inches' ); + set( leg,'Position',[3.51 3.46 0.7 0.3 ] ); + end + +elseif rows == 3 && cols == 2 + + if theid == 1 + leg = legend( ... + [ ... + blis_ref ... + blis_md ... + open_md ... + ], ... + blis_ref_legend, ... + blis_legend, ... + open_legend, ... + 'Location', legend_loc ); + %'Location', 'best' ); + set( leg,'Box','off' ); + set( leg,'Color','none' ); + set( leg,'FontSize',fontsize-2 ); + set( leg,'Units','inches' ); + %set( leg,'Position',[1.03 3.46 0.7 0.3 ] ); + elseif theid == 2 + leg = legend( ... + [ ... + blis_ref ... + blis_md ... + open_md ... + ], ... + blis_ref_legend, ... + blis_legend, ... + open_legend, ... + 'Location', legend_loc ); + %'Location', 'best' ); + set( leg,'Box','off' ); + set( leg,'Color','none' ); + set( leg,'FontSize',fontsize-2 ); + set( leg,'Units','inches' ); + %set( leg,'Position',[3.51 3.46 0.7 0.3 ] ); + end end diff --git a/test/mixeddt/matlab/testrand.pdf b/test/mixeddt/matlab/testrand.pdf deleted file mode 100644 index b97c17528fcde15318d7cf5970f2bd7f00d7cf37..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33468 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 From 0f9b53e84b48d8d73a56cc9889eae3595ca58a78 Mon Sep 17 00:00:00 2001 From: "Field G. Van Zee" Date: Tue, 13 Nov 2018 13:03:15 -0600 Subject: [PATCH 3/6] Fixed a bug in high-level mixeddt conditional. Details: - Fixed a bug in frame/3/bli_l3_oapi.c in the conditional that divides use of induced method (1m) execution from native execution. The former was intended to only be used in cases where all storage datatypes are complex and the datatype of C is equal to the computation datatype. (If mixed datatypes are detected, native execution would be used.) However, the code in bli_gemm() was erroneously checking the execution datatype instead of the computation datatype, which at that point is guaranteed to be equal to the storage datatype even if the computation datatype contains a different value. Thanks to Devangi Parikh for helping in isolating this bug. --- frame/3/bli_l3_oapi.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frame/3/bli_l3_oapi.c b/frame/3/bli_l3_oapi.c index 701428a59..0340cf566 100644 --- a/frame/3/bli_l3_oapi.c +++ b/frame/3/bli_l3_oapi.c @@ -64,7 +64,7 @@ void PASTEMAC(opname,EX_SUF) \ where mixed datatype support will be implemented (if at all). */ \ if ( bli_obj_dt( c ) == bli_obj_dt( a ) && \ bli_obj_dt( c ) == bli_obj_dt( b ) && \ - bli_obj_dt( c ) == bli_obj_exec_dt( c ) && \ + bli_obj_dt( c ) == bli_obj_comp_dt( c ) && \ bli_obj_is_complex( c ) ) \ { \ /* Invoke the operation's "ind" function--its induced method front-end. From a2e0cdd7debf8109198536d55af05d5631072fb2 Mon Sep 17 00:00:00 2001 From: "Field G. Van Zee" Date: Tue, 13 Nov 2018 14:15:11 -0600 Subject: [PATCH 4/6] Added hemm test driver to test/3m4m. Details: - Added a new test_hemm.c test driver to test/3m4m, which was modeled after the driver by the similar name in test. Also updated Makefile so that blis-nat-[sm]t would trigger builds for the new driver. --- test/3m4m/Makefile | 8 + test/3m4m/test_hemm.c | 332 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 340 insertions(+) create mode 100644 test/3m4m/test_hemm.c diff --git a/test/3m4m/Makefile b/test/3m4m/Makefile index e91b100b2..7582c70ec 100644 --- a/test/3m4m/Makefile +++ b/test/3m4m/Makefile @@ -243,6 +243,10 @@ blis-nat-st: \ test_dgemm_asm_blis_st.x \ test_cgemm_asm_blis_st.x \ test_zgemm_asm_blis_st.x \ + test_shemm_asm_blis_st.x \ + test_dhemm_asm_blis_st.x \ + test_chemm_asm_blis_st.x \ + test_zhemm_asm_blis_st.x \ test_sherk_asm_blis_st.x \ test_dherk_asm_blis_st.x \ test_cherk_asm_blis_st.x \ @@ -261,6 +265,10 @@ blis-nat-mt: \ test_dgemm_asm_blis_mt.x \ test_cgemm_asm_blis_mt.x \ test_zgemm_asm_blis_mt.x \ + test_shemm_asm_blis_mt.x \ + test_dhemm_asm_blis_mt.x \ + test_chemm_asm_blis_mt.x \ + test_zhemm_asm_blis_mt.x \ test_sherk_asm_blis_mt.x \ test_dherk_asm_blis_mt.x \ test_cherk_asm_blis_mt.x \ diff --git a/test/3m4m/test_hemm.c b/test/3m4m/test_hemm.c new file mode 100644 index 000000000..7563e3cba --- /dev/null +++ b/test/3m4m/test_hemm.c @@ -0,0 +1,332 @@ +/* + + BLIS + An object-based framework for developing high-performance BLAS-like + libraries. + + Copyright (C) 2014, The University of Texas at Austin + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + - Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + - Neither the name of The University of Texas nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + +#include +#include "blis.h" + +//#define PRINT + +int main( int argc, char** argv ) +{ + obj_t a, b, c; + obj_t c_save; + obj_t alpha, beta; + dim_t m, n; + dim_t p; + dim_t p_begin, p_end, p_inc; + int m_input, n_input; + ind_t ind; + num_t dt; + char dt_ch; + int r, n_repeats; + side_t side; + uplo_t uploa; + f77_char f77_side; + f77_char f77_uploa; + + double dtime; + double dtime_save; + double gflops; + + //bli_init(); + + //bli_error_checking_level_set( BLIS_NO_ERROR_CHECKING ); + + n_repeats = 3; + + dt = DT; + + ind = IND; + + p_begin = P_BEGIN; + p_end = P_END; + p_inc = P_INC; + + m_input = -1; + n_input = -1; + + + // Supress compiler warnings about unused variable 'ind'. + ( void )ind; + +#if 0 + + cntx_t* cntx; + + ind_t ind_mod = ind; + + // A hack to use 3m1 as 1mpb (with 1m as 1mbp). + if ( ind == BLIS_3M1 ) ind_mod = BLIS_1M; + + // Initialize a context for the current induced method and datatype. + cntx = bli_gks_query_ind_cntx( ind_mod, dt ); + + // Set k to the kc blocksize for the current datatype. + k_input = bli_cntx_get_blksz_def_dt( dt, BLIS_KC, cntx ); + +#elif 1 + + //k_input = 256; + +#endif + + // Choose the char corresponding to the requested datatype. + if ( bli_is_float( dt ) ) dt_ch = 's'; + else if ( bli_is_double( dt ) ) dt_ch = 'd'; + else if ( bli_is_scomplex( dt ) ) dt_ch = 'c'; + else dt_ch = 'z'; + + side = BLIS_LEFT; + uploa = BLIS_LOWER; + + bli_param_map_blis_to_netlib_side( side, &f77_side ); + bli_param_map_blis_to_netlib_uplo( uploa, &f77_uploa ); + + // Begin with initializing the last entry to zero so that + // matlab allocates space for the entire array once up-front. + for ( p = p_begin; p + p_inc <= p_end; p += p_inc ) ; +#ifdef BLIS + printf( "data_%s_%chemm_%s_blis", THR_STR, dt_ch, STR ); +#else + printf( "data_%s_%chemm_%s", THR_STR, dt_ch, STR ); +#endif + printf( "( %2lu, 1:4 ) = [ %4lu %4lu %4lu %7.2f ];\n", + ( unsigned long )(p - p_begin + 1)/p_inc + 1, + ( unsigned long )0, + ( unsigned long )0, + ( unsigned long )0, 0.0 ); + + + for ( p = p_begin; p <= p_end; p += p_inc ) + { + + if ( m_input < 0 ) m = p / ( dim_t )abs(m_input); + else m = ( dim_t ) m_input; + if ( n_input < 0 ) n = p / ( dim_t )abs(n_input); + else n = ( dim_t ) n_input; + + bli_obj_create( dt, 1, 1, 0, 0, &alpha ); + bli_obj_create( dt, 1, 1, 0, 0, &beta ); + + if ( bli_is_left( side ) ) + bli_obj_create( dt, m, m, 0, 0, &a ); + else + bli_obj_create( dt, n, n, 0, 0, &a ); + bli_obj_create( dt, m, n, 0, 0, &b ); + bli_obj_create( dt, m, n, 0, 0, &c ); + bli_obj_create( dt, m, n, 0, 0, &c_save ); + + bli_randm( &a ); + bli_randm( &b ); + bli_randm( &c ); + + bli_obj_set_struc( BLIS_HERMITIAN, &a ); + bli_obj_set_uplo( uploa, &a ); + + // Make A densely Hermitian, and zero the unstored triangle to + // ensure the implementation reads only from the stored region. + bli_mkherm( &a ); + bli_mktrim( &a ); + + bli_setsc( (2.0/1.0), 0.0, &alpha ); + bli_setsc( (1.0/1.0), 0.0, &beta ); + + + bli_copym( &c, &c_save ); + +#ifdef BLIS + bli_ind_disable_all_dt( dt ); + bli_ind_enable_dt( ind, dt ); +#endif + + dtime_save = DBL_MAX; + + for ( r = 0; r < n_repeats; ++r ) + { + bli_copym( &c_save, &c ); + + dtime = bli_clock(); + + +#ifdef PRINT + bli_printm( "a", &a, "%4.1f", "" ); + bli_printm( "b", &b, "%4.1f", "" ); + bli_printm( "c", &c, "%4.1f", "" ); +#endif + +#ifdef BLIS + + bli_hemm( side, + &alpha, + &a, + &b, + &beta, + &c ); + +#else + + if ( bli_is_float( dt ) ) + { + f77_int mm = bli_obj_length( &c ); + f77_int nn = bli_obj_width( &c ); + f77_int lda = bli_obj_col_stride( &a ); + f77_int ldb = bli_obj_col_stride( &b ); + f77_int ldc = bli_obj_col_stride( &c ); + float* alphap = bli_obj_buffer( &alpha ); + float* ap = bli_obj_buffer( &a ); + float* bp = bli_obj_buffer( &b ); + float* betap = bli_obj_buffer( &beta ); + float* cp = bli_obj_buffer( &c ); + + shemm_( &f77_side, + &f77_uploa, + &mm, + &nn, + alphap, + ap, &lda, + bp, &ldb, + betap, + cp, &ldc ); + } + else if ( bli_is_double( dt ) ) + { + f77_int mm = bli_obj_length( &c ); + f77_int nn = bli_obj_width( &c ); + f77_int lda = bli_obj_col_stride( &a ); + f77_int ldb = bli_obj_col_stride( &b ); + f77_int ldc = bli_obj_col_stride( &c ); + double* alphap = bli_obj_buffer( &alpha ); + double* ap = bli_obj_buffer( &a ); + double* bp = bli_obj_buffer( &b ); + double* betap = bli_obj_buffer( &beta ); + double* cp = bli_obj_buffer( &c ); + + dhemm_( &f77_side, + &f77_uploa, + &mm, + &nn, + alphap, + ap, &lda, + bp, &ldb, + betap, + cp, &ldc ); + } + else if ( bli_is_scomplex( dt ) ) + { + f77_int mm = bli_obj_length( &c ); + f77_int nn = bli_obj_width( &c ); + f77_int lda = bli_obj_col_stride( &a ); + f77_int ldb = bli_obj_col_stride( &b ); + f77_int ldc = bli_obj_col_stride( &c ); + scomplex* alphap = bli_obj_buffer( &alpha ); + scomplex* ap = bli_obj_buffer( &a ); + scomplex* bp = bli_obj_buffer( &b ); + scomplex* betap = bli_obj_buffer( &beta ); + scomplex* cp = bli_obj_buffer( &c ); + + chemm_( &f77_side, + &f77_uploa, + &mm, + &nn, + alphap, + ap, &lda, + bp, &ldb, + betap, + cp, &ldc ); + } + else if ( bli_is_dcomplex( dt ) ) + { + f77_int mm = bli_obj_length( &c ); + f77_int nn = bli_obj_width( &c ); + f77_int lda = bli_obj_col_stride( &a ); + f77_int ldb = bli_obj_col_stride( &b ); + f77_int ldc = bli_obj_col_stride( &c ); + dcomplex* alphap = bli_obj_buffer( &alpha ); + dcomplex* ap = bli_obj_buffer( &a ); + dcomplex* bp = bli_obj_buffer( &b ); + dcomplex* betap = bli_obj_buffer( &beta ); + dcomplex* cp = bli_obj_buffer( &c ); + + zhemm_( &f77_side, + &f77_uploa, + &mm, + &nn, + alphap, + ap, &lda, + bp, &ldb, + betap, + cp, &ldc ); + } +#endif + +#ifdef PRINT + bli_printm( "c after", &c, "%4.1f", "" ); + exit(1); +#endif + + + dtime_save = bli_clock_min_diff( dtime_save, dtime ); + } + + if ( bli_is_left( side ) ) + gflops = ( 2.0 * m * m * n ) / ( dtime_save * 1.0e9 ); + else + gflops = ( 2.0 * m * n * n ) / ( dtime_save * 1.0e9 ); + + if ( bli_is_complex( dt ) ) gflops *= 4.0; + +#ifdef BLIS + printf( "data_%s_%chemm_%s_blis", THR_STR, dt_ch, STR ); +#else + printf( "data_%s_%chemm_%s", THR_STR, dt_ch, STR ); +#endif + printf( "( %2lu, 1:4 ) = [ %4lu %4lu %7.2f ];\n", + ( unsigned long )(p - p_begin + 1)/p_inc + 1, + ( unsigned long )m, + ( unsigned long )n, gflops ); + + bli_obj_free( &alpha ); + bli_obj_free( &beta ); + + bli_obj_free( &a ); + bli_obj_free( &b ); + bli_obj_free( &c ); + bli_obj_free( &c_save ); + } + + //bli_finalize(); + + return 0; +} + From 4f12e36a0d0e6df146314b4e50e36c5e7a1af3d3 Mon Sep 17 00:00:00 2001 From: "Field G. Van Zee" Date: Tue, 13 Nov 2018 14:23:12 -0600 Subject: [PATCH 5/6] Fixed number of columns in first output line. Details: - In previous commit, forgot to remove output column corresponding to the k dimension. --- test/3m4m/test_hemm.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/test/3m4m/test_hemm.c b/test/3m4m/test_hemm.c index 7563e3cba..860ae4c31 100644 --- a/test/3m4m/test_hemm.c +++ b/test/3m4m/test_hemm.c @@ -121,10 +121,9 @@ int main( int argc, char** argv ) #else printf( "data_%s_%chemm_%s", THR_STR, dt_ch, STR ); #endif - printf( "( %2lu, 1:4 ) = [ %4lu %4lu %4lu %7.2f ];\n", + printf( "( %2lu, 1:3 ) = [ %4lu %4lu %7.2f ];\n", ( unsigned long )(p - p_begin + 1)/p_inc + 1, ( unsigned long )0, - ( unsigned long )0, ( unsigned long )0, 0.0 ); @@ -311,7 +310,7 @@ int main( int argc, char** argv ) #else printf( "data_%s_%chemm_%s", THR_STR, dt_ch, STR ); #endif - printf( "( %2lu, 1:4 ) = [ %4lu %4lu %7.2f ];\n", + printf( "( %2lu, 1:3 ) = [ %4lu %4lu %7.2f ];\n", ( unsigned long )(p - p_begin + 1)/p_inc + 1, ( unsigned long )m, ( unsigned long )n, gflops ); From 52392932dc1ea3c16220cc4e6978efcb2f5f0616 Mon Sep 17 00:00:00 2001 From: "Field G. Van Zee" Date: Tue, 13 Nov 2018 22:23:38 +0000 Subject: [PATCH 6/6] Minor fixes to test/3m4m drivers. Details: - Cleanups to Makefile to allow all test drivers to be built for OpenBLAS and MKL in addition to BLIS. - Fixed copy-paste typos in test_hemm in calls to ssymm_() and dsymm_(). - Fixed incorrect types for betap in BLAS cpp macro branch of test_herk.c. --- test/3m4m/Makefile | 178 ++++++++++++++++++++++++++---------------- test/3m4m/test_hemm.c | 4 +- test/3m4m/test_herk.c | 4 +- 3 files changed, 115 insertions(+), 71 deletions(-) diff --git a/test/3m4m/Makefile b/test/3m4m/Makefile index 7582c70ec..b129ab020 100644 --- a/test/3m4m/Makefile +++ b/test/3m4m/Makefile @@ -201,9 +201,9 @@ STR_ST := -DTHR_STR=\"st\" STR_MT := -DTHR_STR=\"mt\" # Problem size specification -PDEF_ST := -DP_BEGIN=96 \ +PDEF_ST := -DP_BEGIN=40 \ -DP_END=2000 \ - -DP_INC=96 + -DP_INC=40 PDEF_MT := -DP_BEGIN=192 \ -DP_END=3000 \ @@ -215,28 +215,47 @@ PDEF_MT := -DP_BEGIN=192 \ # --- Targets/rules ------------------------------------------------------------ # -all: all-st all-mt -blis: blis-st blis-mt -blis-nat: blis-nat-st blis-nat-mt -openblas: openblas-st openblas-mt -mkl: mkl-st mkl-mt +all: all-st all-mt +blis: blis-st blis-mt +openblas: openblas-st openblas-mt +mkl: mkl-st mkl-mt -all-st: blis-st openblas-st mkl-st -all-mt: blis-mt openblas-mt mkl-mt +all-st: blis-st openblas-st mkl-st +all-mt: blis-mt openblas-mt mkl-mt -blis-st: blis-gemm-st -blis-mt: blis-gemm-mt +blis-st: blis-nat-st +blis-mt: blis-nat-mt -openblas-st: openblas-gemm-st -openblas-mt: openblas-gemm-mt +blis-ind: blis-ind-st blis-ind-mt +blis-nat: blis-nat-st blis-nat-mt -mkl-st: mkl-gemm-st -mkl-mt: mkl-gemm-mt +blis-ind-st: \ + test_cgemm_3mhw_blis_st.x \ + test_zgemm_3mhw_blis_st.x \ + test_cgemm_3m1_blis_st.x \ + test_zgemm_3m1_blis_st.x \ + test_cgemm_4mhw_blis_st.x \ + test_zgemm_4mhw_blis_st.x \ + test_cgemm_4m1b_blis_st.x \ + test_zgemm_4m1b_blis_st.x \ + test_cgemm_4m1a_blis_st.x \ + test_zgemm_4m1a_blis_st.x \ + test_cgemm_1m_blis_st.x \ + test_zgemm_1m_blis_st.x -blis-gemm-st: blis-gemm-nat-st \ - blis-gemm-ind-st -blis-gemm-mt: blis-gemm-nat-mt \ - blis-gemm-ind-mt +blis-ind-mt: \ + test_cgemm_3mhw_blis_mt.x \ + test_zgemm_3mhw_blis_mt.x \ + test_cgemm_3m1_blis_mt.x \ + test_zgemm_3m1_blis_mt.x \ + test_cgemm_4mhw_blis_mt.x \ + test_zgemm_4mhw_blis_mt.x \ + test_cgemm_4m1b_blis_mt.x \ + test_zgemm_4m1b_blis_mt.x \ + test_cgemm_4m1a_blis_mt.x \ + test_zgemm_4m1a_blis_mt.x \ + test_cgemm_1m_blis_mt.x \ + test_zgemm_1m_blis_mt.x blis-nat-st: \ test_sgemm_asm_blis_st.x \ @@ -282,69 +301,94 @@ blis-nat-mt: \ test_ctrsm_asm_blis_mt.x \ test_ztrsm_asm_blis_mt.x -blis-gemm-nat-st: \ - test_sgemm_asm_blis_st.x \ - test_dgemm_asm_blis_st.x \ - test_cgemm_asm_blis_st.x \ - test_zgemm_asm_blis_st.x - -blis-gemm-nat-mt: \ - test_sgemm_asm_blis_mt.x \ - test_dgemm_asm_blis_mt.x \ - test_cgemm_asm_blis_mt.x \ - test_zgemm_asm_blis_mt.x - -blis-gemm-ind-st: \ - test_cgemm_3mhw_blis_st.x \ - test_zgemm_3mhw_blis_st.x \ - test_cgemm_3m1_blis_st.x \ - test_zgemm_3m1_blis_st.x \ - test_cgemm_4mhw_blis_st.x \ - test_zgemm_4mhw_blis_st.x \ - test_cgemm_4m1b_blis_st.x \ - test_zgemm_4m1b_blis_st.x \ - test_cgemm_4m1a_blis_st.x \ - test_zgemm_4m1a_blis_st.x \ - test_cgemm_1m_blis_st.x \ - test_zgemm_1m_blis_st.x - -blis-gemm-ind-mt: \ - test_cgemm_3mhw_blis_mt.x \ - test_zgemm_3mhw_blis_mt.x \ - test_cgemm_3m1_blis_mt.x \ - test_zgemm_3m1_blis_mt.x \ - test_cgemm_4mhw_blis_mt.x \ - test_zgemm_4mhw_blis_mt.x \ - test_cgemm_4m1b_blis_mt.x \ - test_zgemm_4m1b_blis_mt.x \ - test_cgemm_4m1a_blis_mt.x \ - test_zgemm_4m1a_blis_mt.x \ - test_cgemm_1m_blis_mt.x \ - test_zgemm_1m_blis_mt.x - -openblas-gemm-st: \ +openblas-st: \ test_sgemm_openblas_st.x \ test_dgemm_openblas_st.x \ test_cgemm_openblas_st.x \ - test_zgemm_openblas_st.x + test_zgemm_openblas_st.x \ + test_shemm_openblas_st.x \ + test_dhemm_openblas_st.x \ + test_chemm_openblas_st.x \ + test_zhemm_openblas_st.x \ + test_sherk_openblas_st.x \ + test_dherk_openblas_st.x \ + test_cherk_openblas_st.x \ + test_zherk_openblas_st.x \ + test_strmm_openblas_st.x \ + test_dtrmm_openblas_st.x \ + test_ctrmm_openblas_st.x \ + test_ztrmm_openblas_st.x \ + test_strsm_openblas_st.x \ + test_dtrsm_openblas_st.x \ + test_ctrsm_openblas_st.x \ + test_ztrsm_openblas_st.x -openblas-gemm-mt: \ +openblas-mt: \ test_sgemm_openblas_mt.x \ test_dgemm_openblas_mt.x \ test_cgemm_openblas_mt.x \ - test_zgemm_openblas_mt.x + test_zgemm_openblas_mt.x \ + test_shemm_openblas_mt.x \ + test_dhemm_openblas_mt.x \ + test_chemm_openblas_mt.x \ + test_zhemm_openblas_mt.x \ + test_sherk_openblas_mt.x \ + test_dherk_openblas_mt.x \ + test_cherk_openblas_mt.x \ + test_zherk_openblas_mt.x \ + test_strmm_openblas_mt.x \ + test_dtrmm_openblas_mt.x \ + test_ctrmm_openblas_mt.x \ + test_ztrmm_openblas_mt.x \ + test_strsm_openblas_mt.x \ + test_dtrsm_openblas_mt.x \ + test_ctrsm_openblas_mt.x \ + test_ztrsm_openblas_mt.x -mkl-gemm-st: \ +mkl-st: \ test_sgemm_mkl_st.x \ test_dgemm_mkl_st.x \ test_cgemm_mkl_st.x \ - test_zgemm_mkl_st.x + test_zgemm_mkl_st.x \ + test_shemm_mkl_st.x \ + test_dhemm_mkl_st.x \ + test_chemm_mkl_st.x \ + test_zhemm_mkl_st.x \ + test_sherk_mkl_st.x \ + test_dherk_mkl_st.x \ + test_cherk_mkl_st.x \ + test_zherk_mkl_st.x \ + test_strmm_mkl_st.x \ + test_dtrmm_mkl_st.x \ + test_ctrmm_mkl_st.x \ + test_ztrmm_mkl_st.x \ + test_strsm_mkl_st.x \ + test_dtrsm_mkl_st.x \ + test_ctrsm_mkl_st.x \ + test_ztrsm_mkl_st.x -mkl-gemm-mt: \ +mkl-mt: \ test_sgemm_mkl_mt.x \ test_dgemm_mkl_mt.x \ test_cgemm_mkl_mt.x \ - test_zgemm_mkl_mt.x + test_zgemm_mkl_mt.x \ + test_shemm_mkl_mt.x \ + test_dhemm_mkl_mt.x \ + test_chemm_mkl_mt.x \ + test_zhemm_mkl_mt.x \ + test_sherk_mkl_mt.x \ + test_dherk_mkl_mt.x \ + test_cherk_mkl_mt.x \ + test_zherk_mkl_mt.x \ + test_strmm_mkl_mt.x \ + test_dtrmm_mkl_mt.x \ + test_ctrmm_mkl_mt.x \ + test_ztrmm_mkl_mt.x \ + test_strsm_mkl_mt.x \ + test_dtrsm_mkl_mt.x \ + test_ctrsm_mkl_mt.x \ + test_ztrsm_mkl_mt.x + diff --git a/test/3m4m/test_hemm.c b/test/3m4m/test_hemm.c index 860ae4c31..cf640b4f6 100644 --- a/test/3m4m/test_hemm.c +++ b/test/3m4m/test_hemm.c @@ -208,7 +208,7 @@ int main( int argc, char** argv ) float* betap = bli_obj_buffer( &beta ); float* cp = bli_obj_buffer( &c ); - shemm_( &f77_side, + ssymm_( &f77_side, &f77_uploa, &mm, &nn, @@ -231,7 +231,7 @@ int main( int argc, char** argv ) double* betap = bli_obj_buffer( &beta ); double* cp = bli_obj_buffer( &c ); - dhemm_( &f77_side, + dsymm_( &f77_side, &f77_uploa, &mm, &nn, diff --git a/test/3m4m/test_herk.c b/test/3m4m/test_herk.c index 66a057a59..6616ffe9f 100644 --- a/test/3m4m/test_herk.c +++ b/test/3m4m/test_herk.c @@ -242,7 +242,7 @@ int main( int argc, char** argv ) f77_int ldc = bli_obj_col_stride( &c ); float* alphap = bli_obj_buffer( &alpha ); scomplex* ap = bli_obj_buffer( &a ); - scomplex* betap = bli_obj_buffer( &beta ); + float* betap = bli_obj_buffer( &beta ); scomplex* cp = bli_obj_buffer( &c ); cherk_( &f77_uploc, @@ -262,7 +262,7 @@ int main( int argc, char** argv ) f77_int ldc = bli_obj_col_stride( &c ); double* alphap = bli_obj_buffer( &alpha ); dcomplex* ap = bli_obj_buffer( &a ); - dcomplex* betap = bli_obj_buffer( &beta ); + double* betap = bli_obj_buffer( &beta ); dcomplex* cp = bli_obj_buffer( &c ); zherk_( &f77_uploc,