Updated sup[mt] Makefiles for variable dim ranges.

Details:
- Updated test/sup/Makefile and test/supmt/Makefile to allow specifying
  different problem size ranges for the drivers where one, two, or three
  matrix dimensions is large. This will facilitate the generation of
  more meaningful graphs, particularly when two dimensions are tiny.
This commit is contained in:
Field G. Van Zee
2020-03-02 15:06:48 -06:00
parent 31f11a06ea
commit 90db88e572
2 changed files with 59 additions and 39 deletions

View File

@@ -142,14 +142,17 @@ VENDORP_LIB := $(MKLP_LIB)
# #
# Single core # Single core
PS_BEGIN := 4 PS_BEGIN_3L := 2
PS_MAX := 800 PS_MAX_3L := 400
PS_INC := 4 PS_INC_3L := 2
# Multicore PS_BEGIN_2L := 4
P1_BEGIN := 120 PS_MAX_2L := 800
P1_MAX := 6000 PS_INC_2L := 4
P1_INC := 120
PS_BEGIN_1L := 32
PS_MAX_1L := 6400
PS_INC_1L := 32
# #
@@ -186,21 +189,17 @@ CXXFLAGS += -I$(EIGEN_INC)
CXXFLAGS_ST := -march=native $(subst -fopenmp,,$(CXXFLAGS)) CXXFLAGS_ST := -march=native $(subst -fopenmp,,$(CXXFLAGS))
CXXFLAGS_MT := -march=native $(CXXFLAGS) CXXFLAGS_MT := -march=native $(CXXFLAGS)
# Single or multithreaded string # Single or multithreaded string.
STR_ST := -DTHR_STR=\"st\" STR_ST := -DTHR_STR=\"st\"
STR_MT := -DTHR_STR=\"mt\" STR_MT := -DTHR_STR=\"mt\"
# Number of trials per problem size. # Number of trials per problem size.
N_TRIALS := -DN_TRIALS=3 N_TRIALS := -DN_TRIALS=3
# Problem size specification # Problem size specification.
PDEF_ST := -DP_BEGIN=$(PS_BEGIN) \ PDEF_ST_1L := -DP_BEGIN=$(PS_BEGIN_1L) -DP_MAX=$(PS_MAX_1L) -DP_INC=$(PS_INC_1L)
-DP_MAX=$(PS_MAX) \ PDEF_ST_2L := -DP_BEGIN=$(PS_BEGIN_2L) -DP_MAX=$(PS_MAX_2L) -DP_INC=$(PS_INC_2L)
-DP_INC=$(PS_INC) PDEF_ST_3L := -DP_BEGIN=$(PS_BEGIN_3L) -DP_MAX=$(PS_MAX_3L) -DP_INC=$(PS_INC_3L)
PDEF_MT := -DP_BEGIN=$(P1_BEGIN) \
-DP_MAX=$(P1_MAX) \
-DP_INC=$(P1_INC)
ifeq ($(E),1) ifeq ($(E),1)
ERRCHK := -DERROR_CHECK ERRCHK := -DERROR_CHECK
@@ -262,6 +261,15 @@ get-1of3 = $(word 1,$(subst _, ,$(1)))
get-2of3 = $(word 2,$(subst _, ,$(1))) get-2of3 = $(word 2,$(subst _, ,$(1)))
get-3of3 = $(word 3,$(subst _, ,$(1))) get-3of3 = $(word 3,$(subst _, ,$(1)))
# A function to return the correct PDEFS_ST variable given the shape string.
get-pdefs = $(strip $(subst l_l_l,$(PDEF_ST_3L), \
$(subst l_l_s,$(PDEF_ST_2L), \
$(subst l_s_l,$(PDEF_ST_2L), \
$(subst s_l_l,$(PDEF_ST_2L), \
$(subst s_s_l,$(PDEF_ST_1L), \
$(subst s_l_s,$(PDEF_ST_1L), \
$(subst l_s_s,$(PDEF_ST_1L),$(1)))))))))
# Datatype defs. # Datatype defs.
get-dt-cpp = $(strip \ get-dt-cpp = $(strip \
$(if $(findstring s,$(1)),-DDT=BLIS_FLOAT -DIS_FLOAT,\ $(if $(findstring s,$(1)),-DDT=BLIS_FLOAT -DIS_FLOAT,\
@@ -416,7 +424,7 @@ EIMPLS := eigen
# for the various implementations. # for the various implementations.
define make-st-rule define make-st-rule
test_$(1)gemm_$(call stripu,$(2))_$(call stripu,$(3))_$(call get-shape-dim-str,$(4),$(5),$(6),$(7))_$(8)_st.o: test_gemm.c Makefile test_$(1)gemm_$(call stripu,$(2))_$(call stripu,$(3))_$(call get-shape-dim-str,$(4),$(5),$(6),$(7))_$(8)_st.o: test_gemm.c Makefile
$(CC) $(CFLAGS) $(ERRCHK) $(N_TRIALS) $(PDEF_ST) $(call get-dt-cpp,$(1)) $(call get-tra-defs,$(2)) $(call get-sto-defs,$(3)) $(call get-shape-defs,$(4),$(5),$(6),$(7)) $(call get-imp-defs,$(8)) $(STR_ST) -c $$< -o $$@ $(CC) $(CFLAGS) $(ERRCHK) $(N_TRIALS) $(call get-pdefs,$(4)) $(call get-dt-cpp,$(1)) $(call get-tra-defs,$(2)) $(call get-sto-defs,$(3)) $(call get-shape-defs,$(4),$(5),$(6),$(7)) $(call get-imp-defs,$(8)) $(STR_ST) -c $$< -o $$@
endef endef
# Instantiate the rule function make-st-rule() for each BLIS/BLAS/CBLAS # Instantiate the rule function make-st-rule() for each BLIS/BLAS/CBLAS
@@ -435,7 +443,7 @@ $(eval $(call make-st-rule,$(dt),$(tr),$(st),$(sh),$(sm),$(sn),$(sk),$(impl)))))
# for the various implementations. # for the various implementations.
define make-eigst-rule define make-eigst-rule
test_$(1)gemm_$(call stripu,$(2))_$(call stripu,$(3))_$(call get-shape-dim-str,$(4),$(5),$(6),$(7))_$(8)_st.o: test_gemm.c Makefile test_$(1)gemm_$(call stripu,$(2))_$(call stripu,$(3))_$(call get-shape-dim-str,$(4),$(5),$(6),$(7))_$(8)_st.o: test_gemm.c Makefile
$(CXX) $(CXXFLAGS_ST) $(ERRCHK) $(N_TRIALS) $(PDEF_ST) $(call get-dt-cpp,$(1)) $(call get-tra-defs,$(2)) $(call get-sto-defs,$(3)) $(call get-shape-defs,$(4),$(5),$(6),$(7)) $(call get-imp-defs,$(8)) $(STR_ST) -c $$< -o $$@ $(CXX) $(CXXFLAGS_ST) $(ERRCHK) $(N_TRIALS) $(call get-pdefs,$(4)) $(call get-dt-cpp,$(1)) $(call get-tra-defs,$(2)) $(call get-sto-defs,$(3)) $(call get-shape-defs,$(4),$(5),$(6),$(7)) $(call get-imp-defs,$(8)) $(STR_ST) -c $$< -o $$@
endef endef
# Instantiate the rule function make-st-rule() for each Eigen implementation. # Instantiate the rule function make-st-rule() for each Eigen implementation.

View File

@@ -141,15 +141,18 @@ VENDORP_LIB := $(MKLP_LIB)
# --- Problem size definitions ------------------------------------------------- # --- Problem size definitions -------------------------------------------------
# #
# Single core
PS_BEGIN := 4
PS_MAX := 800
PS_INC := 4
# Multicore # Multicore
P1_BEGIN := 8 P1_BEGIN_3L := 4
P1_MAX := 1600 P1_MAX_3L := 800
P1_INC := 8 P1_INC_3L := 4
P1_BEGIN_2L := 8
P1_MAX_2L := 1600
P1_INC_2L := 8
P1_BEGIN_1L := 64
P1_MAX_1L := 12800
P1_INC_1L := 64
# #
@@ -186,21 +189,17 @@ CXXFLAGS += -I$(EIGEN_INC)
CXXFLAGS_ST := -march=native $(subst -fopenmp,,$(CXXFLAGS)) CXXFLAGS_ST := -march=native $(subst -fopenmp,,$(CXXFLAGS))
CXXFLAGS_MT := -march=native $(CXXFLAGS) CXXFLAGS_MT := -march=native $(CXXFLAGS)
# Single or multithreaded string # Single or multithreaded string.
STR_ST := -DTHR_STR=\"st\" STR_ST := -DTHR_STR=\"st\"
STR_MT := -DTHR_STR=\"mt\" STR_MT := -DTHR_STR=\"mt\"
# Number of trials per problem size. # Number of trials per problem size.
N_TRIALS := -DN_TRIALS=3 N_TRIALS := -DN_TRIALS=3
# Problem size specification # Problem size specification.
PDEF_ST := -DP_BEGIN=$(PS_BEGIN) \ PDEF_MT_1L := -DP_BEGIN=$(P1_BEGIN_1L) -DP_MAX=$(P1_MAX_1L) -DP_INC=$(P1_INC_1L)
-DP_MAX=$(PS_MAX) \ PDEF_MT_2L := -DP_BEGIN=$(P1_BEGIN_2L) -DP_MAX=$(P1_MAX_2L) -DP_INC=$(P1_INC_2L)
-DP_INC=$(PS_INC) PDEF_MT_3L := -DP_BEGIN=$(P1_BEGIN_3L) -DP_MAX=$(P1_MAX_3L) -DP_INC=$(P1_INC_3L)
PDEF_MT := -DP_BEGIN=$(P1_BEGIN) \
-DP_MAX=$(P1_MAX) \
-DP_INC=$(P1_INC)
ifeq ($(E),1) ifeq ($(E),1)
ERRCHK := -DERROR_CHECK ERRCHK := -DERROR_CHECK
@@ -262,6 +261,15 @@ get-1of3 = $(word 1,$(subst _, ,$(1)))
get-2of3 = $(word 2,$(subst _, ,$(1))) get-2of3 = $(word 2,$(subst _, ,$(1)))
get-3of3 = $(word 3,$(subst _, ,$(1))) get-3of3 = $(word 3,$(subst _, ,$(1)))
# A function to return the correct PDEFS_ST variable given the shape string.
get-pdefs = $(strip $(subst l_l_l,$(PDEF_MT_3L), \
$(subst l_l_s,$(PDEF_MT_2L), \
$(subst l_s_l,$(PDEF_MT_2L), \
$(subst s_l_l,$(PDEF_MT_2L), \
$(subst s_s_l,$(PDEF_MT_1L), \
$(subst s_l_s,$(PDEF_MT_1L), \
$(subst l_s_s,$(PDEF_MT_1L),$(1)))))))))
# Datatype defs. # Datatype defs.
get-dt-cpp = $(strip \ get-dt-cpp = $(strip \
$(if $(findstring s,$(1)),-DDT=BLIS_FLOAT -DIS_FLOAT,\ $(if $(findstring s,$(1)),-DDT=BLIS_FLOAT -DIS_FLOAT,\
@@ -453,9 +461,11 @@ EIMPLS := eigen
# Define the function that will be used to instantiate compilation rules # Define the function that will be used to instantiate compilation rules
# for the various single-threaded implementations. # for the various single-threaded implementations.
# NOTE: The rules from this function are not yet working since this Makefile
# targets multithreaded, not single-threaded, drivers.
define make-st-rule define make-st-rule
test_$(1)gemm_$(call stripu,$(2))_$(call stripu,$(3))_$(call get-shape-dim-str,$(4),$(5),$(6),$(7))_$(8)_st.o: test_gemm.c Makefile test_$(1)gemm_$(call stripu,$(2))_$(call stripu,$(3))_$(call get-shape-dim-str,$(4),$(5),$(6),$(7))_$(8)_st.o: test_gemm.c Makefile
$(CC) $(CFLAGS) $(ERRCHK) $(N_TRIALS) $(PDEF_ST) $(call get-dt-cpp,$(1)) $(call get-tra-defs,$(2)) $(call get-sto-defs,$(3)) $(call get-shape-defs,$(4),$(5),$(6),$(7)) $(call get-imp-defs,$(8)) $(STR_ST) -c $$< -o $$@ $(CC) $(CFLAGS) $(ERRCHK) $(N_TRIALS) $(call get-pdefs,$(4)) $(call get-dt-cpp,$(1)) $(call get-tra-defs,$(2)) $(call get-sto-defs,$(3)) $(call get-shape-defs,$(4),$(5),$(6),$(7)) $(call get-imp-defs,$(8)) $(STR_ST) -c $$< -o $$@
endef endef
# Instantiate the rule function make-st-rule() for each BLIS/BLAS/CBLAS # Instantiate the rule function make-st-rule() for each BLIS/BLAS/CBLAS
@@ -474,7 +484,7 @@ $(eval $(call make-st-rule,$(dt),$(tr),$(st),$(sh),$(sm),$(sn),$(sk),$(impl)))))
# for the various multithreaded implementations. # for the various multithreaded implementations.
define make-mt-rule define make-mt-rule
test_$(1)gemm_$(call stripu,$(2))_$(call stripu,$(3))_$(call get-shape-dim-str,$(4),$(5),$(6),$(7))_$(8)_mt.o: test_gemm.c Makefile test_$(1)gemm_$(call stripu,$(2))_$(call stripu,$(3))_$(call get-shape-dim-str,$(4),$(5),$(6),$(7))_$(8)_mt.o: test_gemm.c Makefile
$(CC) $(CFLAGS) $(ERRCHK) $(N_TRIALS) $(PDEF_MT) $(call get-dt-cpp,$(1)) $(call get-tra-defs,$(2)) $(call get-sto-defs,$(3)) $(call get-shape-defs,$(4),$(5),$(6),$(7)) $(call get-imp-defs,$(8)) $(STR_MT) -c $$< -o $$@ $(CC) $(CFLAGS) $(ERRCHK) $(N_TRIALS) $(call get-pdefs,$(4)) $(call get-dt-cpp,$(1)) $(call get-tra-defs,$(2)) $(call get-sto-defs,$(3)) $(call get-shape-defs,$(4),$(5),$(6),$(7)) $(call get-imp-defs,$(8)) $(STR_MT) -c $$< -o $$@
endef endef
# Instantiate the rule function make-mt-rule() for each BLIS/BLAS/CBLAS # Instantiate the rule function make-mt-rule() for each BLIS/BLAS/CBLAS
@@ -491,9 +501,11 @@ $(eval $(call make-mt-rule,$(dt),$(tr),$(st),$(sh),$(sm),$(sn),$(sk),$(impl)))))
# Define the function that will be used to instantiate compilation rules # Define the function that will be used to instantiate compilation rules
# for the single-threaded Eigen implementation. # for the single-threaded Eigen implementation.
# NOTE: The rules from this function are not yet working since this Makefile
# targets multithreaded, not single-threaded, drivers.
define make-eigst-rule define make-eigst-rule
test_$(1)gemm_$(call stripu,$(2))_$(call stripu,$(3))_$(call get-shape-dim-str,$(4),$(5),$(6),$(7))_$(8)_st.o: test_gemm.c Makefile test_$(1)gemm_$(call stripu,$(2))_$(call stripu,$(3))_$(call get-shape-dim-str,$(4),$(5),$(6),$(7))_$(8)_st.o: test_gemm.c Makefile
$(CXX) $(CXXFLAGS_ST) $(ERRCHK) $(N_TRIALS) $(PDEF_ST) $(call get-dt-cpp,$(1)) $(call get-tra-defs,$(2)) $(call get-sto-defs,$(3)) $(call get-shape-defs,$(4),$(5),$(6),$(7)) $(call get-imp-defs,$(8)) $(STR_ST) -c $$< -o $$@ $(CXX) $(CXXFLAGS_ST) $(ERRCHK) $(N_TRIALS) $(call get-pdefs,$(4)) $(call get-dt-cpp,$(1)) $(call get-tra-defs,$(2)) $(call get-sto-defs,$(3)) $(call get-shape-defs,$(4),$(5),$(6),$(7)) $(call get-imp-defs,$(8)) $(STR_ST) -c $$< -o $$@
endef endef
# Instantiate the rule function make-st-rule() for each Eigen implementation. # Instantiate the rule function make-st-rule() for each Eigen implementation.
@@ -511,7 +523,7 @@ $(eval $(call make-eigst-rule,$(dt),$(tr),$(st),$(sh),$(sm),$(sn),$(sk),$(impl))
# for the multithreaded Eigen implementation. # for the multithreaded Eigen implementation.
define make-eigmt-rule define make-eigmt-rule
test_$(1)gemm_$(call stripu,$(2))_$(call stripu,$(3))_$(call get-shape-dim-str,$(4),$(5),$(6),$(7))_$(8)_mt.o: test_gemm.c Makefile test_$(1)gemm_$(call stripu,$(2))_$(call stripu,$(3))_$(call get-shape-dim-str,$(4),$(5),$(6),$(7))_$(8)_mt.o: test_gemm.c Makefile
$(CXX) $(CXXFLAGS_MT) $(ERRCHK) $(N_TRIALS) $(PDEF_MT) $(call get-dt-cpp,$(1)) $(call get-tra-defs,$(2)) $(call get-sto-defs,$(3)) $(call get-shape-defs,$(4),$(5),$(6),$(7)) $(call get-imp-defs,$(8)) $(STR_MT) -c $$< -o $$@ $(CXX) $(CXXFLAGS_MT) $(ERRCHK) $(N_TRIALS) $(call get-pdefs,$(4)) $(call get-dt-cpp,$(1)) $(call get-tra-defs,$(2)) $(call get-sto-defs,$(3)) $(call get-shape-defs,$(4),$(5),$(6),$(7)) $(call get-imp-defs,$(8)) $(STR_MT) -c $$< -o $$@
endef endef
# Instantiate the rule function make-st-rule() for each Eigen implementation. # Instantiate the rule function make-st-rule() for each Eigen implementation.