]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - dense-linear-algebra-libraries/linalg.git/blobdiff - src/ti/linalg/Makefile
Pass NUM_DSP_CORES to ticblas build since it uses blis.h.
[dense-linear-algebra-libraries/linalg.git] / src / ti / linalg / Makefile
index 33f7b32cf8700e2c8e569b606208e87fde92eff0..870866b1d008659a7f9a04d162ccfbd3a17b44e7 100644 (file)
@@ -9,13 +9,31 @@ LINALG_CLAPACK_DIR  = clapack
 BLIS_VERSION = $(shell cat $(LINALG_BLIS_DIR)/version)
 
 CBLAS_HEADERS  =$(LINALG_CBLAS_DIR)/include/cblas.h
-ifeq ($(LIBOS),LIB_RTOS)
-CBLAS_HEADERS +=$(LINALG_TICBLAS_DIR)/ticblas.h
-endif
 CLAPACK_HEADERS =$(LINALG_CLAPACK_DIR)/INCLUDE/blaswrap.h  
 CLAPACK_HEADERS+=$(LINALG_CLAPACK_DIR)/INCLUDE/clapack.h  
 CLAPACK_HEADERS+=$(LINALG_CLAPACK_DIR)/INCLUDE/f2c.h  
 
+ifneq (,$(findstring DSP,$(MAKECMDGOALS)))
+
+ifeq ($(LIBOS),LIB_RTOS)
+CBLAS_HEADERS +=$(LINALG_TICBLAS_DIR)/ticblas.h
+endif
+
+ifeq ($(TARGET),SOC_K2H)
+NUM_ARM_CORES=4
+NUM_DSP_CORES=8
+else ifeq ($(TARGET),SOC_SHANNON)
+NUM_DSP_CORES=8
+else ifeq ($(TARGET),SOC_AM572x)
+NUM_ARM_CORES=2
+NUM_DSP_CORES=2
+else
+$(call error, ERROR - MEM_MODEL NOT DEFINED. Must specify one of: MEM_MODEL=Large, MEM_MODEL=Medium, MEM_MODEL=Small)
+endif
+
+endif
+
+# MEM_MODEL needs to be defined for both build and clean
 ifeq ($(MEM_MODEL),Large)
 BLIS_CFG   = c66xLarge
 else ifeq ($(MEM_MODEL),Medium)
@@ -26,21 +44,38 @@ else
 $(call error, ERROR - MEM_MODEL NOT DEFINED. Must specify one of: MEM_MODEL=Large, MEM_MODEL=Medium, MEM_MODEL=Small)
 endif
 
+# Build DSP code for DSP-only platforms and for ARM+DSP platforms. 
+# All object binaries are added to a singl archive: lib/libcblas.ae66, which includes:
+#    - CBLAS 
+#    - BLIS for specified TARGET, MEM_MODEL, LIBOS (BIOS or OPENCL), NUM_DSP_CORES
+#    - TICBLAS for specified TARGET, MEM_MODEL, LIBOS (BIOS or OPENCL)
 DSPlibs:
        cd $(LINALG_CBLAS_DIR); make arch=C66 alllib; \
-       cd ../$(LINALG_BLIS_DIR); ./configure -p install/$(BLIS_CFG) c66x; make -j8 MEM_MODEL=$(MEM_MODEL) TARGET=$(TARGET) LIBOS=$(LIBOS); make install; \
-       cd ../$(LINALG_TICBLAS_DIR)/src; make MEM_MODEL=$(MEM_MODEL) TARGET=$(TARGET) LIBOS=$(LIBOS); cd ../lib; \
+       cd ../$(LINALG_BLIS_DIR); ./configure -p install/$(BLIS_CFG) c66x; \
+       make -j8 MEM_MODEL=$(MEM_MODEL) TARGET=$(TARGET) LIBOS=$(LIBOS) NUM_DSP_CORES=$(NUM_DSP_CORES); make install; \
+       cd ../$(LINALG_TICBLAS_DIR)/src; make MEM_MODEL=$(MEM_MODEL) TARGET=$(TARGET) LIBOS=$(LIBOS) NUM_DSP_CORES=$(NUM_DSP_CORES); cd ../lib; \
        echo "combining BLIS, CBLAS, and TICBLAS libraries into one: libcblas.ae66"; \
        mkdir -p objs; cd objs; rm -f *; ar x ../../../blis/install/$(BLIS_CFG)/lib/libblis.ae66; mmv 'cblas*.o' 'blis_cblas#1.o'; \
        ar -x ../../../cblas/lib/C66/libcblas.ae66; ar -x ../libticblas.ae66; chmod +rw *;cd ../../..; \
        mkdir -p lib; cd lib; rm -f *; ar -cr libcblas.ae66 ../ticblas/lib/objs/*; cd ..; \
        mkdir -p include; rm -f include/*; cp $(CBLAS_HEADERS) include
 
+# Build ARM code for ARM+DSP platforms
 ARMlibs:
        cd $(LINALG_CBLAS_DIR); make arch=ARM alllib; \
-       cd ../$(LINALG_BLIS_DIR); ./configure -p install/arm cortex-a15; make -j8; make install; \
+       cd ../$(LINALG_BLIS_DIR); ./configure -p install/arm cortex-a15; make -j8 NUM_ARM_CORES=$(NUM_ARM_CORES); make install; \
        cd ../$(LINALG_CLAPACK_DIR); make f2clib; make cblaswrap; cd SRC; make -j8; cd ..
 
+# Build host-callable libraries for ARM+DSP platforms. 
+# BLAS has a single archive: libcblas_armplusdsp.a, which includes:
+#    - CBLAS ARM code
+#    - BLIS ARM code for specified NUM_ARM_CORES
+#    - BLAS wrapper (accelerator) code
+#    - DSP code built by DSPlibs
+# LAPACK has 3 archives: 
+#    - liblapack.a: CLAPACK ARM library
+#    - libcblaswr.a: CBLAS wrapper library used by CLAPACK
+#    - libf2c.a: F2C library used by CLAPACK
 ARMplusDSP: DSPlibs ARMlibs
        cd $(LINALG_BLASACC_DIR)/src; make MEM_MODEL=$(MEM_MODEL) TARGET=$(TARGET); cd ../..; \
        cd lib; rm -f *; \
@@ -56,12 +91,12 @@ ARMplusDSP: DSPlibs ARMlibs
 cleanDSPlibs:
        rm -f lib/*
        cd $(LINALG_CBLAS_DIR); make arch=C66 clean; \
-       cd ../$(LINALG_BLIS_DIR); ./configure -p install/$(BLIS_CFG) c66x; make -j8 clean; \
+       cd ../$(LINALG_BLIS_DIR); ./configure -p install/$(BLIS_CFG) c66x; make -j8 clean; rm -r install/$(BLIS_CFG); \
        cd ../$(LINALG_TICBLAS_DIR)/src; make clean; 
 
 cleanARMlibs:
        cd $(LINALG_CBLAS_DIR); make arch=ARM clean; \
-       cd ../$(LINALG_BLIS_DIR); ./configure -p install/arm cortex-a15; make clean; \
+       cd ../$(LINALG_BLIS_DIR); ./configure -p install/arm cortex-a15; make clean; rm -r install/arm; \
        cd ../$(LINALG_BLASACC_DIR); make clean; \
        cd ../$(LINALG_BLIS_DIR)/testsuite; make clean; \
        cd ../../$(LINALG_CLAPACK_DIR); make clean