diff --git a/blas/Jenkinsfile b/blas/Jenkinsfile index fd5cdbf8d5..3c4149edb2 100644 --- a/blas/Jenkinsfile +++ b/blas/Jenkinsfile @@ -1,5 +1,5 @@ @Library('pipeline-library')_ -VitisLibPipeline (branch: 'next', libname: 'xf_blas', TARGETS: 'hls_csim:hls_csynth:hls_cosim:vitis_sw_emu:vitis_hw_emu:vitis_hw_build', - upstream_dependencies: 'xf_hpc,next,../hpc', - devtest: 'RunDeploy.sh', TOOLVERSION: '2021.2_stable_latest') +VitisLibPipeline (branch: 'master', libname: 'xf_blas', TARGETS: 'hls_csim:hls_csynth:hls_cosim:vitis_sw_emu:vitis_hw_emu:vitis_hw_build', + upstream_dependencies: 'xf_hpc,master,../hpc', + devtest: 'RunDeploy.sh', TOOLVERSION: '2021.2_released') diff --git a/blas/L3/benchmarks/gemm/streamingKernel/Makefile b/blas/L3/benchmarks/gemm/streamingKernel/Makefile deleted file mode 100644 index 68c397863a..0000000000 --- a/blas/L3/benchmarks/gemm/streamingKernel/Makefile +++ /dev/null @@ -1,372 +0,0 @@ -# Copyright 2019-2021 Xilinx, Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# vitis makefile-generator v2.0.3 - -############################## Help Section ############################## -.PHONY: help - -help:: - $(ECHO) "Makefile Usage:" - $(ECHO) " make all TARGET= PLATFORM= HOST_ARCH=< >" - $(ECHO) " Command to generate the design for specified Target and Shell." - $(ECHO) " By default, HOST_ARCH=. HOST_ARCH is required for SoC shells" - $(ECHO) "" - $(ECHO) " make run TARGET= PLATFORM= HOST_ARCH=< >" - $(ECHO) " Command to run application in emulation." - $(ECHO) " By default, HOST_ARCH=. HOST_ARCH required for SoC shells" - $(ECHO) "" - $(ECHO) " make xclbin TARGET= PLATFORM= HOST_ARCH=< >" - $(ECHO) " Command to build xclbin application." - $(ECHO) " By default, HOST_ARCH=. HOST_ARCH is required for SoC shells" - $(ECHO) "" - $(ECHO) " make host HOST_ARCH=" - $(ECHO) " Command to build host application." - $(ECHO) " By default, HOST_ARCH=. HOST_ARCH is required for SoC shells" - $(ECHO) "" - $(ECHO) " NOTE: For embedded devices, e.g. zcu102/zcu104/vck190, env variable SYSROOT and EDGE_COMMON_SW need to be set first, and HOST_ARCH is either aarch32 or aarch64. For example," - $(ECHO) " export SYSROOT=< path-to-platform-sysroot >" - $(ECHO) " export EDGE_COMMON_SW=< path-to-rootfs-and-Image-files >" - $(ECHO) "" - $(ECHO) " make clean " - $(ECHO) " Command to remove the generated non-hardware files." - $(ECHO) "" - $(ECHO) " make cleanall" - $(ECHO) " Command to remove all the generated files." - $(ECHO) "" - -############################## Setting up Project Variables ############################## - -MK_PATH := $(abspath $(lastword $(MAKEFILE_LIST))) -XF_PROJ_ROOT ?= $(shell bash -c 'export MK_PATH=$(MK_PATH); echo $${MK_PATH%/L3/*}') -CUR_DIR := $(patsubst %/,%,$(dir $(MK_PATH))) -XFLIB_DIR = $(XF_PROJ_ROOT) - -# setting devault value -TARGET ?= hw_emu -HOST_ARCH ?= - -#setting PLATFORM -ifeq ($(PLATFORM),) -PLATFORM := $(DEVICE) -endif -ifeq ($(PLATFORM),) -PLATFORM := xilinx_u250_gen3x16_xdma_3_1_202020_1 -endif - -# ###dddd################# Checking if PLATFORM in whitelist ############################ -PLATFORM_ALLOWLIST += xilinx_u250_gen3x16_xdma_3_1_202020_1 -PLATFORM_BLOCKLIST += - -include ./utils.mk - -TEMP_DIR := _x_temp.$(TARGET).$(XPLATFORM) -TEMP_REPORT_DIR := $(CUR_DIR)/reports/_x.$(TARGET).$(XPLATFORM) -BUILD_DIR := build_dir.$(TARGET).$(XPLATFORM) -BUILD_REPORT_DIR := $(CUR_DIR)/reports/_build.$(TARGET).$(XPLATFORM) -EMCONFIG := $(BUILD_DIR)/emconfig.json -XCLBIN_DIR := $(CUR_DIR)/$(BUILD_DIR) -export XCL_BINDIR = $(XCLBIN_DIR) - -EXE_FILE_DEPS := -BINARY_CONTAINERS_DEPS := -RUN_DEPS := - -# get global setting -ifeq ($(HOST_ARCH), x86) -CXXFLAGS += -fmessage-length=0 -I$(CUR_DIR)/src/ -I$(XILINX_XRT)/include -I$(XILINX_HLS)/include -std=c++14 -O3 -Wall -Wno-unknown-pragmas -Wno-unused-label -LDFLAGS += -pthread -L$(XILINX_XRT)/lib -L$(XILINX_HLS)/lnx64/tools/fpo_v7_0 -Wl,--as-needed -lOpenCL -lxrt_coreutil -lgmp -lmpfr -lIp_floating_point_v7_0_bitacc_cmodel -VPP_FLAGS += -t $(TARGET) --platform $(XPLATFORM) --save-temps -VPP_LDFLAGS += --optimize 2 -R 2 -else ifeq ($(HOST_ARCH), aarch64) -CXXFLAGS += -I$(CUR_DIR)/src/ -fmessage-length=0 --sysroot=$(SYSROOT) -I$(SYSROOT)/usr/include/xrt -I$(XILINX_HLS)/include -std=c++14 -O3 -Wall -Wno-unknown-pragmas -Wno-unused-label -LDFLAGS += -pthread -L$(SYSROOT)/usr/lib -L$(XILINX_VITIS_AIETOOLS)/lib/aarch64.o -Wl,--as-needed -lxilinxopencl -lxrt_coreutil -VPP_FLAGS += -t $(TARGET) --platform $(XPLATFORM) --save-temps -VPP_LDFLAGS += --optimize 2 -R 2 -endif -CXXFLAGS += $(EXTRA_CXXFLAGS) -VPP_FLAGS += $(EXTRA_VPP_FLAGS) - -########################## Setting up Host Variables ########################## -ifeq ($(TARGET),sw_emu) -CXXFLAGS += -D SW_EMU_TEST -endif -ifeq ($(TARGET),hw_emu) -CXXFLAGS += -D HW_EMU_TEST -endif - -#Inclue Required Host Source Files -HOST_SRCS += $(XFLIB_DIR)/L3/benchmarks/gemm/gemm_bench.cpp -CXXFLAGS += -I $(XFLIB_DIR)/L3/include/sw -I $(XFLIB_DIR)/L3/benchmarks/gemm -I $(XFLIB_DIR)/L3/benchmarks -I $(XFLIB_DIR)/L2/include/streamingKernel -I $(XFLIB_DIR)/L1/include/hw -LDFLAGS += -luuid -lxrt_coreutil - -EXE_NAME := gemm_bench.exe -EXE_FILE := $(BUILD_DIR)/$(EXE_NAME) -EXE_FILE_DEPS := $(HOST_SRCS) $(EXE_FILE_DEPS) - -HOST_ARGS := $(BUILD_DIR)/gemmKernel.xclbin $(BUILD_DIR)/config_info.dat -ifneq ($(HOST_ARCH), x86) -PKG_HOST_ARGS = $(foreach args,$(HOST_ARGS),$(subst $(dir $(patsubst %/,%,$(args))),,$(args))) -endif - -########################## Kernel compiler global settings ########################## -VPP_FLAGS += -I $(XFLIB_DIR)/L1/include/hw -I $(XFLIB_DIR)/L1/include/hw/xf_blas -I $(XFLIB_DIR)/L1/include/hw/xf_blas/gemm -I $(XFLIB_DIR)/L1/include/hw/xf_blas/helpers/utils -I $(XFLIB_DIR)/L2/include/streamingKernel -I $(XFLIB_DIR)/L2/include/streamingKernel/hw/xf_blas/gemmStreamKernel/ -I $(XFLIB_DIR)/L2/include/streamingKernel/hw/xf_blas -I $(XFLIB_DIR)/L1/include/hw - -ifneq (,$(shell echo $(XPLATFORM) | awk '/ u250/')) - -########################## binary container global settings ########################## -ifeq ($(HOST_ARCH), x86) -BINARY_CONTAINERS += $(BUILD_DIR)/gemmKernel.xclbin -else -BINARY_CONTAINERS += $(BUILD_DIR)/gemmKernel_pkg.xclbin -BINARY_CONTAINERS_PKG += $(BUILD_DIR)/gemmKernel.xclbin -endif - -# ################ Setting Rules for Binary Containers (Building Kernels) ################ -$(BINARY_CONTAINERS): $(BINARY_CONTAINERS_DEPS) - mkdir -p $(BUILD_DIR) - $(VPP) -l $(VPP_FLAGS) --temp_dir $(BUILD_DIR) --report_dir $(BUILD_REPORT_DIR)/gemmKernel $(VPP_LDFLAGS) $(VPP_LDFLAGS_gemmKernel) $(AIE_LDFLAGS) -o $@ $^ - -else -VPP_FLAGS_gemmCPlusXKernel += --hls.clock 300000000:gemmCPlusXKernel -VPP_FLAGS_gemmTagsKernel += --hls.clock 300000000:gemmTagsKernel -VPP_FLAGS_gemmTimerKernel += --hls.clock 300000000:gemmTimerKernel -VPP_FLAGS_gemmMergeKernel += --hls.clock 300000000:gemmMergeKernel -VPP_FLAGS_gemmAddsKernel += --hls.clock 300000000:gemmAddsKernel -VPP_FLAGS_gemmMulsKernel += --hls.clock 300000000:gemmMulsKernel -VPP_FLAGS_gemmSystolicArrayKernel += --hls.clock 300000000:gemmSystolicArrayKernel -VPP_FLAGS_gemmLoadStoreKernel += --hls.clock 300000000:gemmLoadStoreKernel - -VPP_LDFLAGS_gemmKernel_temp := --config opts.cfg -VPP_LDFLAGS_gemmKernel += $(VPP_LDFLAGS_gemmKernel_temp) - -########################## binary container global settings ########################## -BINARY_CONTAINER_gemmKernel_OBJS += $(TEMP_DIR)/gemmCPlusXKernel.xo -BINARY_CONTAINERS_DEPS += $(BINARY_CONTAINER_gemmKernel_OBJS) -BINARY_CONTAINER_gemmKernel_OBJS += $(TEMP_DIR)/gemmTagsKernel.xo -BINARY_CONTAINERS_DEPS += $(BINARY_CONTAINER_gemmKernel_OBJS) -BINARY_CONTAINER_gemmKernel_OBJS += $(TEMP_DIR)/gemmTimerKernel.xo -BINARY_CONTAINERS_DEPS += $(BINARY_CONTAINER_gemmKernel_OBJS) -BINARY_CONTAINER_gemmKernel_OBJS += $(TEMP_DIR)/gemmMergeKernel.xo -BINARY_CONTAINERS_DEPS += $(BINARY_CONTAINER_gemmKernel_OBJS) -BINARY_CONTAINER_gemmKernel_OBJS += $(TEMP_DIR)/gemmAddsKernel.xo -BINARY_CONTAINERS_DEPS += $(BINARY_CONTAINER_gemmKernel_OBJS) -BINARY_CONTAINER_gemmKernel_OBJS += $(TEMP_DIR)/gemmMulsKernel.xo -BINARY_CONTAINERS_DEPS += $(BINARY_CONTAINER_gemmKernel_OBJS) -BINARY_CONTAINER_gemmKernel_OBJS += $(TEMP_DIR)/gemmSystolicArrayKernel.xo -BINARY_CONTAINERS_DEPS += $(BINARY_CONTAINER_gemmKernel_OBJS) -BINARY_CONTAINER_gemmKernel_OBJS += $(TEMP_DIR)/gemmLoadStoreKernel.xo -BINARY_CONTAINERS_DEPS += $(BINARY_CONTAINER_gemmKernel_OBJS) -ifeq ($(HOST_ARCH), x86) -BINARY_CONTAINERS += $(BUILD_DIR)/gemmKernel.xclbin -else -BINARY_CONTAINERS += $(BUILD_DIR)/gemmKernel_pkg.xclbin -BINARY_CONTAINERS_PKG += $(BUILD_DIR)/gemmKernel.xclbin -endif - -# ################ Setting Rules for Binary Containers (Building Kernels) ################ -$(TEMP_DIR)/gemmCPlusXKernel.xo: $(XFLIB_DIR)/L2/src/streamingKernel/hw/gemmCPlusX.cpp - $(ECHO) "Compiling Kernel: gemmCPlusXKernel" - mkdir -p $(TEMP_DIR) - $(VPP) -c $(VPP_FLAGS_gemmCPlusXKernel) $(VPP_FLAGS) -k gemmCPlusXKernel -I'$(> $(RUN_SCRIPT) -ifneq ($(filter sw_emu hw_emu, $(TARGET)),) - @echo 'export XCL_EMULATION_MODE=$(TARGET)' >> $(RUN_SCRIPT) -endif - @echo 'export XILINX_VITIS=/mnt' >> $(RUN_SCRIPT) - @echo 'export XILINX_XRT=/usr' >> $(RUN_SCRIPT) - @echo 'if [ -f platform_desc.txt ]; then' >> $(RUN_SCRIPT) - @echo ' cp platform_desc.txt /etc/xocl.txt' >> $(RUN_SCRIPT) - @echo 'fi' >> $(RUN_SCRIPT) - @echo './$(EXE_NAME) $(PKG_HOST_ARGS)' >> $(RUN_SCRIPT) - @echo 'return_code=$$?' >> $(RUN_SCRIPT) - @echo 'if [ $$return_code -ne 0 ]; then' >> $(RUN_SCRIPT) - @echo ' echo "ERROR: Embedded host run failed, RC=$$return_code"' >> $(RUN_SCRIPT) - @echo 'else' >> $(RUN_SCRIPT) - @echo ' echo "INFO: TEST PASSED, RC=0"' >> $(RUN_SCRIPT) - @echo 'fi' >> $(RUN_SCRIPT) - @echo 'echo "INFO: Embedded host run completed."' >> $(RUN_SCRIPT) - @echo 'exit $$return_code' >> $(RUN_SCRIPT) -DATA_FILE := -DATA_DIR := -SD_FILES += $(RUN_SCRIPT) -SD_FILES += $(EXE_FILE) -SD_FILES += $(EMCONFIG) -SD_FILES += xrt.ini -SD_FILES += $(DATA_FILE)# where define DATAFILE in json -SD_FILES_WITH_PREFIX = $(foreach sd_file,$(SD_FILES), $(if $(filter $(sd_file),$(wildcard $(sd_file))), --package.sd_file $(sd_file))) -SD_DIRS_WITH_PREFIX = $(foreach sd_dir,$(DATA_DIR),--package.sd_dir $(sd_dir)) -PACKAGE_FILES := $(BINARY_CONTAINERS) -PACKAGE_FILES += $(AIE_CONTAINER) -SD_CARD := $(CUR_DIR)/package_$(TARGET) -$(SD_CARD): $(EXE_FILE) $(BINARY_CONTAINERS) $(RUN_SCRIPT) $(EMCONFIG) - @echo "Generating sd_card folder...." - mkdir -p $(SD_CARD) - chmod a+rx $(BUILD_DIR)/run_script.sh - $(VPP) -t $(TARGET) --platform $(PLATFORM) -o $(BINARY_CONTAINERS_PKG) -p $(PACKAGE_FILES) $(VPP_PACKAGE) --package.out_dir $(SD_CARD) --package.rootfs $(SYSROOT)/../../rootfs.ext4 --package.kernel_image $(K_IMAGE) $(SD_FILES_WITH_PREFIX) $(SD_DIRS_WITH_PREFIX) - @echo "### ***** sd_card generation done! ***** ###" - -.PHONY: sd_card -sd_card: $(SD_CARD) - -endif -############################## Setting Essential Checks and Building Rules ############################## -ifneq (,$(filter x86sim aiesim, $(TARGET))) -RUN_DEPS += $(AIE_CONTAINER) -else -RUN_DEPS += $(AIE_CONTAINER) $(EXE_FILE) $(BINARY_CONTAINERS) $(EMCONFIG) -RUN_DEPS += $(SD_CARD) -endif - -run: check_device pre_build $(RUN_DEPS) -#x86sim -ifeq ($(TARGET), x86sim) - $(X86SIMULATOR) --pkg-dir=./Work - -endif -#aiesim -ifeq ($(TARGET), aiesim) - $(AIESIMULATOR) --pkg-dir=./Work --profile - -endif -#hw_emu and sw_emu -ifneq (,$(filter sw_emu hw_emu, $(TARGET))) -ifeq ($(HOST_ARCH), x86) - LD_LIBRARY_PATH=$(LIBRARY_PATH):$$LD_LIBRARY_PATH \ - XCL_EMULATION_MODE=$(TARGET) $(EXE_FILE) $(HOST_ARGS) - -else - @echo $(RUN_DEPS) - $(SD_CARD)/launch_$(TARGET).sh -no-reboot -run-app $(notdir $(RUN_SCRIPT)) - grep "TEST PASSED, RC=0" $(SD_CARD)/qemu_output.log || exit 1 - -endif -endif -#hw -ifeq ($(TARGET), hw) -ifeq ($(HOST_ARCH), x86) - $(EXE_FILE) $(HOST_ARGS) - -else - $(ECHO) "Please copy the content of sd_card folder and data to an SD Card and run on the board" -endif -endif - -############################## Setting Targets ############################## - --include params.makefile - -.PHONY: pre_build -pre_build: - make dump_config - -.PHONY: all clean cleanall emconfig -emconfig: $(EMCONFIG) -ifeq ($(HOST_ARCH), x86) -all: pre_build check_vpp check_platform check_xrt $(EXE_FILE) $(BINARY_CONTAINERS) emconfig -else -all: pre_build check_vpp check_platform check_sysroot $(EXE_FILE) $(BINARY_CONTAINERS) emconfig sd_card -endif - -.PHONY: host -ifeq ($(HOST_ARCH), x86) -host: pre_build check_xrt $(EXE_FILE) -else -host: pre_build check_sysroot $(EXE_FILE) -endif - -.PHONY: xclbin -ifeq ($(HOST_ARCH), x86) -xclbin: pre_build check_vpp check_xrt $(BINARY_CONTAINERS) -else -xclbin: pre_build check_vpp check_sysroot $(BINARY_CONTAINERS) -endif - -.PHONY: x86sim -x86sim: $(AIE_CONTAINER) - $(X86SIMULATOR) --pkg-dir=./Work - -############################## Cleaning Rules ############################## -cleanh: - -$(RMDIR) $(EXE_FILE) vitis_* TempConfig system_estimate.xtxt *.rpt .run/ - -$(RMDIR) src/*.ll _xocc_* .Xil dltmp* xmltmp* *.log *.jou *.wcfg *.wdb sample_link.ini sample_compile.ini obj* bin* *.csv *.jpg *.jpeg *.png - -cleank: - -$(RMDIR) $(BUILD_DIR)/*.xclbin _vimage *xclbin.run_summary qemu-memory-_* emulation/ _vimage/ pl*start_simulation. sh *.xclbin - -$(RMDIR) _x_temp.*/_x.* _x_temp.*/.Xil _x_temp.*/profile_summary.* xo_* _x* - -$(RMDIR) _x_temp.*/dltmp* _x_temp.*/kernel_info.dat _x_temp.*/*.log - -$(RMDIR) _x_temp.* - -cleanall: cleanh cleank - -$(RMDIR) $(BUILD_DIR) build_dir.* emconfig.json *.html $(TEMP_DIR) $(CUR_DIR)/reports *.csv *.run_summary $(CUR_DIR)/*.raw package_* $(BUILD_DIR)/run_script.sh .ipcache *.str - -$(RMDIR) $(XFLIB_DIR)/common/data/*.xe2xd* $(XFLIB_DIR)/common/data/*.orig* - -$(RMDIR) $(CUR_DIR)/Work $(CUR_DIR)/*.xpe $(CUR_DIR)/hw.o $(CUR_DIR)/*.xsa $(CUR_DIR)/xnwOut - -clean: cleanh \ No newline at end of file diff --git a/blas/L3/benchmarks/gemm/streamingKernel/README.md b/blas/L3/benchmarks/gemm/streamingKernel/README.md deleted file mode 100644 index b8e9973b51..0000000000 --- a/blas/L3/benchmarks/gemm/streamingKernel/README.md +++ /dev/null @@ -1,91 +0,0 @@ -streamingKernel -================ - -This example resides in ``L3/benchmarks/gemm/streamingKernel`` directory. The tutorial provides a step-by-step guide that covers commands for building and running kernel. This benchmark performs the matrix-matrix multiplication (A * B = C), M is number of rows of matrix A/C, K is number of columns of matrix A/number of rows of matrix B, N is number of columns of matrix B/C - -Executable Usage ------------------ - -* **Work Directory(Step 1)** - -The steps for library download and environment setup can be found in [here](https://github.com/Xilinx/Vitis_Libraries/tree/master/blas/L2/benchmarks#building). For getting the design, - -``` - cd L3/benchmarks/gemm/streamingKernel -``` - -* **Build kernel(Step 2)** - -Run the following make command to build your XCLBIN and host binary targeting a specific device. Please be noticed that this process will take a long time, maybe couple of hours. - -``` - make run TARGET=hw PLATFORM_REPO_PATHS=/opt/xilinx/platforms DEVICE=xilinx_u250_gen3x16_xdma_3_1_202020_1 -``` - -* **Run kernel(Step 3)** - -To get the benchmark results, please run the following command. - -Input Arguments: - -``` - -``` - -For example: - -``` - build_dir.hw.xilinx_u250_gen3x16_xdma_3_1_202020_1/gemm_bench.exe build_dir.hw.xilinx_u250_gen3x16_xdma_3_1_202020_1/blas.xclbin build_dir.hw.xilinx_u250_gen3x16_xdma_3_1_202020_1/config_info.dat -``` - -* **Example output(Step 4)** - -``` -xfblasCreate 249.914832 msec -copyToFpga 0.243765 msec -copyFromFpga 0.437556 msec -Api time is 0.681321 msec -DATA_CSV:,Freq,M,K,N,TimeApiMs,EffApiPct,PerfApiTops -DATA_CSV:,250.000000,64,64,64,0.681321,0.601185,0.000788 ->> Kernel #0 << Test passed! -``` - -* **Use script to run benchmark** - -Use mkl to generate dataset, usage of this script is: ./run_gemm_mkl.sh number_of_thread datatype g(generate)/b(benchmark) -Then use run_gemm_bench.sh to run benchmark -``` - cd ../gemm_mkl - ./run_gemm_mkl.sh 16 float g - ./run_gemm_bench.sh build_dir.hw.xilinx_u250_gen3x16_xdma_3_1_202020_1/blas.xclbin build_dir.hw.xilinx_u250_gen3x16_xdma_3_1_202020_1/config_info.dat -``` - -Profiling ----------- - -The xclbin could be built in 250 MHz -The hardware resource utilization and benchmark results are shown in the two tables below. - -##### Table 1 Hardware resources - -| Name | LUT | BRAM | URAM | DSP | REG | -|-------------------------|--------------|-----------|----------|--------|------------| -| gemmAddsKernel | 101988 | 0 | 0 | 384 | 192516 | -| gemmCPlusXKernel | 8529 | 24 | 0 | 66 | 20358 | -| gemmLoadStoreKernel | 7126 | 23 | 0 | 16 | 19457 | -| gemmMergeKernel | 8342 | 0 | 0 | 0 | 25219 | -| gemmMulsKernel | 50640 | 0 | 0 | 768 | 98013 | -| gemmSystolicArrayKernel | 2541 | 0 | 0 | 0 | 240 | -| gemmTagsKernel | 20203 | 15 | 0 | 8 | 34678 | -| gemmTimerKernel | 32 | 0 | 0 | 0 | 115 | - - -##### Table 2 Benchmark results - -| M | N | K | api execution time [ms] | api Eff [%] | PerfApiTops | -|------|------|------|----------------------------|--------------|---------------| -| 256 | 256 | 256 | 1.370527 | 19.127241 | 0.024626 | -| 512 | 512 | 512 | 4.517989 | 46.417820 | 0.059589 | -| 1024 | 1024 | 1024 | 29.500145 | 56.871639 | 0.072902 | -| 2048 | 2048 | 2048 | 217.555482 | 61.693563 | 0.079026 | -| 4096 | 4096 | 4096 | 1685.337895 | 63.710774 | 0.081580 | diff --git a/blas/L3/benchmarks/gemm/streamingKernel/build_gemm_bench.sh b/blas/L3/benchmarks/gemm/streamingKernel/build_gemm_bench.sh deleted file mode 100755 index 211e65daf2..0000000000 --- a/blas/L3/benchmarks/gemm/streamingKernel/build_gemm_bench.sh +++ /dev/null @@ -1,34 +0,0 @@ -#!/usr/bin/env bash - -# Copyright 2019 Xilinx, Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - - -if [ "$1" == "-h" ]; then - echo "Usage: `basename $0` path_to_config_info" - exit 0 -elif [ "$1" == "" ]; then - echo "Usage: `basename $0` path_to_config_info" - exit 0 -else - dataType=$(grep BLAS_dataType $1 | sed 's/^BLAS_dataType=//') - numKernels=$(grep BLAS_numKernels $1 | sed 's/^BLAS_numKernels=//') - make cleanall - echo ================================================ - echo Now build benchmark with $dataType type - echo ================================================ - make host BLAS_dataType=${dataType} BLAS_numKernels=${numKernels} -fi - - diff --git a/blas/L3/benchmarks/gemm/streamingKernel/conn_u250.cfg b/blas/L3/benchmarks/gemm/streamingKernel/conn_u250.cfg deleted file mode 100644 index 94a334410b..0000000000 --- a/blas/L3/benchmarks/gemm/streamingKernel/conn_u250.cfg +++ /dev/null @@ -1,104 +0,0 @@ -[connectivity] -nk=gemmTimerKernel:1:gemmTimerKernel_0 -nk=gemmLoadStoreKernel:1:gemmLoadStoreKernel_0 -nk=gemmTagsKernel:1:gemmTagsKernel_0 -nk=gemmCPlusXKernel:1:gemmCPlusXKernel_0 -nk=gemmMergeKernel:1:gemmMergeKernel_0 -nk=gemmSystolicArrayKernel:1:gemmSystolicArrayKernel_0 -nk=gemmAddsKernel:1:gemmAddsKernel_0 -nk=gemmMulsKernel:1:gemmMulsKernel_0 - -sp=gemmLoadStoreKernel_0.m_axi_gmem:DDR[0] - -sc=gemmLoadStoreKernel_0.l_aStr:gemmTagsKernel_0.p_a:256 -sc=gemmLoadStoreKernel_0.l_bStr:gemmTagsKernel_0.p_b -sc=gemmLoadStoreKernel_0.l_xStr:gemmCPlusXKernel_0.l_xStr -sc=gemmLoadStoreKernel_0.l_opCodeStr:gemmTimerKernel_0.l_opCodeStr - -sc=gemmTimerKernel_0.l_resStr:gemmLoadStoreKernel_0.l_resStr -sc=gemmCPlusXKernel_0.l_cStr:gemmLoadStoreKernel_0.l_cStr:256 - -sc=gemmTagsKernel_0.p_aOut:gemmSystolicArrayKernel_0.p_a -sc=gemmTagsKernel_0.p_tagOut:gemmSystolicArrayKernel_0.p_tag -sc=gemmTagsKernel_0.p_bOut:gemmSystolicArrayKernel_0.p_b - -sc=gemmSystolicArrayKernel_0.p_bOut:gemmMulsKernel_0.p_bIn:32 - -sc=gemmSystolicArrayKernel_0.p_aOut_0:gemmMulsKernel_0.p_aIn0:32 -sc=gemmSystolicArrayKernel_0.p_aOut_1:gemmMulsKernel_0.p_aIn1:32 -sc=gemmSystolicArrayKernel_0.p_aOut_2:gemmMulsKernel_0.p_aIn2:32 -sc=gemmSystolicArrayKernel_0.p_aOut_3:gemmMulsKernel_0.p_aIn3:32 -sc=gemmSystolicArrayKernel_0.p_aOut_4:gemmMulsKernel_0.p_aIn4:32 -sc=gemmSystolicArrayKernel_0.p_aOut_5:gemmMulsKernel_0.p_aIn5:32 -sc=gemmSystolicArrayKernel_0.p_aOut_6:gemmMulsKernel_0.p_aIn6:32 -sc=gemmSystolicArrayKernel_0.p_aOut_7:gemmMulsKernel_0.p_aIn7:32 -sc=gemmSystolicArrayKernel_0.p_aOut_8:gemmMulsKernel_0.p_aIn8:32 -sc=gemmSystolicArrayKernel_0.p_aOut_9:gemmMulsKernel_0.p_aIn9:32 -sc=gemmSystolicArrayKernel_0.p_aOut_10:gemmMulsKernel_0.p_aIn10:32 -sc=gemmSystolicArrayKernel_0.p_aOut_11:gemmMulsKernel_0.p_aIn11:32 -sc=gemmSystolicArrayKernel_0.p_aOut_12:gemmMulsKernel_0.p_aIn12:32 -sc=gemmSystolicArrayKernel_0.p_aOut_13:gemmMulsKernel_0.p_aIn13:32 -sc=gemmSystolicArrayKernel_0.p_aOut_14:gemmMulsKernel_0.p_aIn14:32 -sc=gemmSystolicArrayKernel_0.p_aOut_15:gemmMulsKernel_0.p_aIn15:32 - -sc=gemmSystolicArrayKernel_0.p_tagOut_0:gemmMulsKernel_0.p_tagIn0:32 -sc=gemmSystolicArrayKernel_0.p_tagOut_1:gemmMulsKernel_0.p_tagIn1:32 -sc=gemmSystolicArrayKernel_0.p_tagOut_2:gemmMulsKernel_0.p_tagIn2:32 -sc=gemmSystolicArrayKernel_0.p_tagOut_3:gemmMulsKernel_0.p_tagIn3:32 -sc=gemmSystolicArrayKernel_0.p_tagOut_4:gemmMulsKernel_0.p_tagIn4:32 -sc=gemmSystolicArrayKernel_0.p_tagOut_5:gemmMulsKernel_0.p_tagIn5:32 -sc=gemmSystolicArrayKernel_0.p_tagOut_6:gemmMulsKernel_0.p_tagIn6:32 -sc=gemmSystolicArrayKernel_0.p_tagOut_7:gemmMulsKernel_0.p_tagIn7:32 -sc=gemmSystolicArrayKernel_0.p_tagOut_8:gemmMulsKernel_0.p_tagIn8:32 -sc=gemmSystolicArrayKernel_0.p_tagOut_9:gemmMulsKernel_0.p_tagIn9:32 -sc=gemmSystolicArrayKernel_0.p_tagOut_10:gemmMulsKernel_0.p_tagIn10:32 -sc=gemmSystolicArrayKernel_0.p_tagOut_11:gemmMulsKernel_0.p_tagIn11:32 -sc=gemmSystolicArrayKernel_0.p_tagOut_12:gemmMulsKernel_0.p_tagIn12:32 -sc=gemmSystolicArrayKernel_0.p_tagOut_13:gemmMulsKernel_0.p_tagIn13:32 -sc=gemmSystolicArrayKernel_0.p_tagOut_14:gemmMulsKernel_0.p_tagIn14:32 -sc=gemmSystolicArrayKernel_0.p_tagOut_15:gemmMulsKernel_0.p_tagIn15:32 - -sc=gemmMulsKernel_0.p_out0:gemmAddsKernel_0.p_in0 -sc=gemmMulsKernel_0.p_out1:gemmAddsKernel_0.p_in1 -sc=gemmMulsKernel_0.p_out2:gemmAddsKernel_0.p_in2 -sc=gemmMulsKernel_0.p_out3:gemmAddsKernel_0.p_in3 -sc=gemmMulsKernel_0.p_out4:gemmAddsKernel_0.p_in4 -sc=gemmMulsKernel_0.p_out5:gemmAddsKernel_0.p_in5 -sc=gemmMulsKernel_0.p_out6:gemmAddsKernel_0.p_in6 -sc=gemmMulsKernel_0.p_out7:gemmAddsKernel_0.p_in7 -sc=gemmMulsKernel_0.p_out8:gemmAddsKernel_0.p_in8 -sc=gemmMulsKernel_0.p_out9:gemmAddsKernel_0.p_in9 -sc=gemmMulsKernel_0.p_out10:gemmAddsKernel_0.p_in10 -sc=gemmMulsKernel_0.p_out11:gemmAddsKernel_0.p_in11 -sc=gemmMulsKernel_0.p_out12:gemmAddsKernel_0.p_in12 -sc=gemmMulsKernel_0.p_out13:gemmAddsKernel_0.p_in13 -sc=gemmMulsKernel_0.p_out14:gemmAddsKernel_0.p_in14 -sc=gemmMulsKernel_0.p_out15:gemmAddsKernel_0.p_in15 - -sc=gemmAddsKernel_0.p_out0:gemmMergeKernel_0.p_sum_0 -sc=gemmAddsKernel_0.p_out1:gemmMergeKernel_0.p_sum_1 -sc=gemmAddsKernel_0.p_out2:gemmMergeKernel_0.p_sum_2 -sc=gemmAddsKernel_0.p_out3:gemmMergeKernel_0.p_sum_3 -sc=gemmAddsKernel_0.p_out4:gemmMergeKernel_0.p_sum_4 -sc=gemmAddsKernel_0.p_out5:gemmMergeKernel_0.p_sum_5 -sc=gemmAddsKernel_0.p_out6:gemmMergeKernel_0.p_sum_6 -sc=gemmAddsKernel_0.p_out7:gemmMergeKernel_0.p_sum_7 -sc=gemmAddsKernel_0.p_out8:gemmMergeKernel_0.p_sum_8 -sc=gemmAddsKernel_0.p_out9:gemmMergeKernel_0.p_sum_9 -sc=gemmAddsKernel_0.p_out10:gemmMergeKernel_0.p_sum_10 -sc=gemmAddsKernel_0.p_out11:gemmMergeKernel_0.p_sum_11 -sc=gemmAddsKernel_0.p_out12:gemmMergeKernel_0.p_sum_12 -sc=gemmAddsKernel_0.p_out13:gemmMergeKernel_0.p_sum_13 -sc=gemmAddsKernel_0.p_out14:gemmMergeKernel_0.p_sum_14 -sc=gemmAddsKernel_0.p_out15:gemmMergeKernel_0.p_sum_15 - -sc=gemmMergeKernel_0.p_sum:gemmCPlusXKernel_0.l_sStr - -slr=gemmLoadStoreKernel_0:SLR0 - -slr=gemmTagsKernel_0:SLR0 -slr=gemmSystolicArrayKernel_0:SLR0 -slr=gemmMulsKernel_0:SLR0 -slr=gemmAddsKernel_0:SLR0 -slr=gemmMergeKernel_0:SLR0 -slr=gemmCPlusXKernel_0:SLR0 diff --git a/blas/L3/benchmarks/gemm/streamingKernel/data/float/matA_in_64_64.bin b/blas/L3/benchmarks/gemm/streamingKernel/data/float/matA_in_64_64.bin deleted file mode 100644 index 75e7925257..0000000000 Binary files a/blas/L3/benchmarks/gemm/streamingKernel/data/float/matA_in_64_64.bin and /dev/null differ diff --git a/blas/L3/benchmarks/gemm/streamingKernel/data/float/matB_in_64_64.bin b/blas/L3/benchmarks/gemm/streamingKernel/data/float/matB_in_64_64.bin deleted file mode 100644 index 75e7925257..0000000000 Binary files a/blas/L3/benchmarks/gemm/streamingKernel/data/float/matB_in_64_64.bin and /dev/null differ diff --git a/blas/L3/benchmarks/gemm/streamingKernel/data/float/matC_in_64_64.bin b/blas/L3/benchmarks/gemm/streamingKernel/data/float/matC_in_64_64.bin deleted file mode 100644 index 75e7925257..0000000000 Binary files a/blas/L3/benchmarks/gemm/streamingKernel/data/float/matC_in_64_64.bin and /dev/null differ diff --git a/blas/L3/benchmarks/gemm/streamingKernel/data/float/matC_out_64_64.bin b/blas/L3/benchmarks/gemm/streamingKernel/data/float/matC_out_64_64.bin deleted file mode 100644 index fac70cd60a..0000000000 Binary files a/blas/L3/benchmarks/gemm/streamingKernel/data/float/matC_out_64_64.bin and /dev/null differ diff --git a/blas/L3/benchmarks/gemm/streamingKernel/description.json b/blas/L3/benchmarks/gemm/streamingKernel/description.json deleted file mode 100644 index 56755acdcf..0000000000 --- a/blas/L3/benchmarks/gemm/streamingKernel/description.json +++ /dev/null @@ -1,134 +0,0 @@ -{ - "name": "Xilinx XF_BLAS.gemm_benchmark_streaming", - "description": "", - "flow": "vitis", - "platform_whitelist": [ - "xilinx_u250_gen3x16_xdma_3_1_202020_1" - ], - "platform_blacklist": [], - "platform_type": "pcie", - "gui": false, - "platform_properties": { - "u250": { - "containers": [ - { - "name" : "gemmKernel", - "ldclflags" : "--kernel_frequency 250 --config PROJECT/conn_u250.cfg" - } - ] - } - }, - "launch": [ - { - "cmd_args": "BUILD/gemmKernel.xclbin BUILD/config_info.dat", - "name": "generic launch for all flows" - } - ], - "pre_build": [ - { - "build_cmd": "make dump_config" - } - ], - "host": { - "host_exe": "gemm_bench.exe", - "compiler": { - "sources": [ - "LIB_DIR/L3/benchmarks/gemm/gemm_bench.cpp" - ], - "includepaths": [ - "LIB_DIR/L3/include/sw", - "LIB_DIR/L3/benchmarks/gemm", - "LIB_DIR/L3/benchmarks", - "LIB_DIR/L2/include/streamingKernel" - ], - "symbols": [ - ] - }, - "linker": { - "options": "-luuid -lxrt_coreutil" - } - }, - "v++": { - "compiler": { - "includepaths": [ - "LIB_DIR/L1/include/hw", - "LIB_DIR/L1/include/hw/xf_blas", - "LIB_DIR/L1/include/hw/xf_blas/gemm", - "LIB_DIR/L1/include/hw/xf_blas/helpers/utils", - "LIB_DIR/L2/include/streamingKernel", - "LIB_DIR/L2/include/streamingKernel/hw/xf_blas/gemmStreamKernel/", - "LIB_DIR/L2/include/streamingKernel/hw/xf_blas" - ] - } - }, - "containers": [ - { - "name" : "gemmKernel", - "ldclflags" : "--config opts.cfg", - "accelerators": [ - { - "name": "gemmCPlusXKernel", - "location": "LIB_DIR/L2/src/streamingKernel/hw/gemmCPlusX.cpp", - "frequency" : 300 - }, - { - "name": "gemmTagsKernel", - "location": "LIB_DIR/L2/src/streamingKernel/hw/gemmTags.cpp", - "frequency" : 300 - }, - { - "name": "gemmTimerKernel", - "location": "LIB_DIR/L2/src/streamingKernel/hw/gemmTimerKernel.cpp", - "frequency" : 300 - }, - { - "name": "gemmMergeKernel", - "location": "LIB_DIR/L2/src/streamingKernel/hw/gemmMerge.cpp", - "frequency" : 300 - }, - { - "name": "gemmAddsKernel", - "location": "LIB_DIR/L2/src/streamingKernel/hw/gemmAdds.cpp", - "frequency" : 300 - }, - { - "name": "gemmMulsKernel", - "location": "LIB_DIR/L2/src/streamingKernel/hw/gemmMuls.cpp", - "frequency" : 300 - }, - { - "name": "gemmSystolicArrayKernel", - "location": "LIB_DIR/L2/src/streamingKernel/hw/gemmSystolicArray.cpp", - "frequency" : 300 - }, - { - "name": "gemmLoadStoreKernel", - "location": "LIB_DIR/L2/src/streamingKernel/hw/gemmLoadStore.cpp", - "frequency" : 300 - } - ] - } - ], - "testinfo": { - "disable": true, - "jobs": [ - { - "index": 0, - "dependency": [], - "env": "", - "cmd": "", - "max_memory_MB": 32768, - "max_time_min": { - "vitis_hw_build": 470, - "vitis_hw_emu": 470, - "vitis_sw_emu": 60, - "vitis_hw_run": 10 - } - } - ], - "targets": [ - "vitis_hw_emu" - ], - "category": "canary" - } -} \ No newline at end of file diff --git a/blas/L3/benchmarks/gemm/streamingKernel/opts.cfg b/blas/L3/benchmarks/gemm/streamingKernel/opts.cfg deleted file mode 100644 index 2eecff33d6..0000000000 --- a/blas/L3/benchmarks/gemm/streamingKernel/opts.cfg +++ /dev/null @@ -1,8 +0,0 @@ -[vivado] -param=project.writeIntermediateCheckpoints=1 -prop=run.impl_1.STEPS.OPT_DESIGN.ARGS.DIRECTIVE=Explore -prop=run.impl_1.STEPS.PHYS_OPT_DESIGN.IS_ENABLED=true -prop=run.impl_1.STEPS.PHYS_OPT_DESIGN.ARGS.DIRECTIVE=AggressiveExplore -prop=run.impl_1.STEPS.ROUTE_DESIGN.ARGS.DIRECTIVE=Explore -prop=run.impl_1.{STEPS.ROUTE_DESIGN.ARGS.MORE OPTIONS}={-tns_cleanup} -prop=run.impl_1.STEPS.POST_ROUTE_PHYS_OPT_DESIGN.IS_ENABLED=true diff --git a/blas/L3/benchmarks/gemm/streamingKernel/params.makefile b/blas/L3/benchmarks/gemm/streamingKernel/params.makefile deleted file mode 100644 index e5ed481e0b..0000000000 --- a/blas/L3/benchmarks/gemm/streamingKernel/params.makefile +++ /dev/null @@ -1,55 +0,0 @@ -BLAS_pageSizeBytes=4096 -BLAS_instrOffsetBytes=0 -BLAS_resOffsetBytes=4096 -BLAS_dataOffsetBytes=8192 -BLAS_ddrMemBits=512 -BLAS_maxNumInstrs=64 -BLAS_memWordsPerInstr=1 -BLAS_parEntries=16 - -BLAS_dataType=float -BLAS_mParWords=4 -BLAS_kParWords=4 -BLAS_nParWords=4 -BLAS_numKernels = 1 -BLAS_runGemm = 1 -BLAS_streamingKernel=1 - -BLAS_FLOAT_WIDTH=8 - -MACROS += -D BLAS_pageSizeBytes=$(BLAS_pageSizeBytes) \ - -D BLAS_instrOffsetBytes=$(BLAS_instrOffsetBytes) \ - -D BLAS_resOffsetBytes=$(BLAS_resOffsetBytes) \ - -D BLAS_dataOffsetBytes=$(BLAS_dataOffsetBytes) \ - -D BLAS_ddrMemBits=$(BLAS_ddrMemBits) \ - -D BLAS_maxNumInstrs=$(BLAS_maxNumInstrs) \ - -D BLAS_memWordsPerInstr=$(BLAS_memWordsPerInstr) \ - -D BLAS_parEntries=$(BLAS_parEntries) \ - -D BLAS_dataType=$(BLAS_dataType) \ - -D BLAS_mParWords=$(BLAS_mParWords) \ - -D BLAS_kParWords=$(BLAS_kParWords) \ - -D BLAS_nParWords=$(BLAS_nParWords) \ - -D BLAS_numKernels=$(BLAS_numKernels) \ - -D BLAS_FLOAT_WIDTH=$(BLAS_FLOAT_WIDTH) \ - -D DEBUG=$(DEBUG) \ - -D BLAS_runGemm=$(BLAS_runGemm) \ - -D BLAS_streamingKernel=$(BLAS_streamingKernel) \ - -D AP_INT_MAX_W=1026 - -CXXFLAGS += -D BLAS_streamingKernel=$(BLAS_streamingKernel) \ - -D BLAS_dataType=$(BLAS_dataType) -VPP_FLAGS += ${MACROS} - -ifeq ($(TARGET),$(filter $(TARGET),hw_emu)) - CXXFLAGS += -lxrt_hwemu -else ifeq ($(TARGET),$(filter $(TARGET),sw_emu)) - CXXFLAGS += -lxrt_swemu -else - CXXFLAGS += -lxrt_core -endif - -CONFIG_INFO = $(shell echo ${MACROS} | sed 's/-D //g; s/ -Wno.*//') - -dump_config: - mkdir -p ${BUILD_DIR} - @echo ${CONFIG_INFO} | tr " " "\n" > ${BUILD_DIR}/config_info.dat diff --git a/blas/L3/benchmarks/gemm/streamingKernel/run_gemm_bench.sh b/blas/L3/benchmarks/gemm/streamingKernel/run_gemm_bench.sh deleted file mode 100755 index 33f01753d2..0000000000 --- a/blas/L3/benchmarks/gemm/streamingKernel/run_gemm_bench.sh +++ /dev/null @@ -1,40 +0,0 @@ -#!/usr/bin/env bash - -# Copyright 2019 Xilinx, Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -if [ "$1" == "-h" ]; then - echo "Usage: `basename $0` path_to_xclbin path_to_config_info" - exit 0 -elif [ "$1" == "" ]; then - echo "Usage: `basename $0` path_to_xclbin path_to_config_info" - exit 0 -else - dataType=$(grep BLAS_dataType $2 | sed 's/^BLAS_dataType=//') - numKernels=$(grep BLAS_numKernels $2 | sed 's/^BLAS_numKernels=//') - n=256 - logs=() - while [ $n -le 4096 ]; do - date - echo "############# $n ################" - nice ./build_dir.hw.xilinx_u250_gen3x16_xdma_3_1_202020_1/gemm_bench.exe $1 $2 $n $n $n ../data/$dataType/ $numKernels | tee log-$n.txt - logs="$logs log-$n.txt" - n=`expr $n \* 2` - done - - egrep -h ^DATA_CSV $logs | grep Freq | head -1 > perf_gemm_api_cpp.csv - egrep -h ^DATA_CSV $logs | grep -v Freq >> perf_gemm_api_cpp.csv -fi - - diff --git a/blas/L3/benchmarks/gemm/streamingKernel/utils.mk b/blas/L3/benchmarks/gemm/streamingKernel/utils.mk deleted file mode 100644 index e71c1c5409..0000000000 --- a/blas/L3/benchmarks/gemm/streamingKernel/utils.mk +++ /dev/null @@ -1,246 +0,0 @@ -# -# Copyright 2019-2021 Xilinx, Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# vitis makefile-generator v2.0.3 -# -#+------------------------------------------------------------------------------- -# The following parameters are assigned with default values. These parameters can -# be overridden through the make command line -#+------------------------------------------------------------------------------- - -REPORT := no -PROFILE := no -DEBUG := no - -#'estimate' for estimate report generation -#'system' for system report generation -ifneq ($(REPORT), no) -VPP_LDFLAGS += --report estimate -VPP_LDFLAGS += --report system -endif - -#Generates profile summary report -ifeq ($(PROFILE), yes) -VPP_LDFLAGS += --profile_kernel data:all:all:all -endif - -#Generates debug summary report -ifeq ($(DEBUG), yes) -VPP_LDFLAGS += --dk protocol:all:all:all -endif - -#Check environment setup -ifndef XILINX_VITIS - XILINX_VITIS = /opt/xilinx/Vitis/$(TOOL_VERSION) - export XILINX_VITIS -endif -ifndef XILINX_XRT - XILINX_XRT = /opt/xilinx/xrt - export XILINX_XRT -endif - -check_device: - @set -eu; \ - inallowlist=False; \ - inblocklist=False; \ - for dev in $(PLATFORM_ALLOWLIST); \ - do if [[ $$(echo $(XPLATFORM) | grep $$dev) != "" ]]; \ - then inallowlist=True; fi; \ - done ;\ - for dev in $(PLATFORM_BLOCKLIST); \ - do if [[ $$(echo $(XPLATFORM) | grep $$dev) != "" ]]; \ - then inblocklist=True; fi; \ - done ;\ - if [[ $$inallowlist == False ]]; \ - then echo "[Warning]: The device $(XPLATFORM) not in allowlist."; \ - fi; \ - if [[ $$inblocklist == True ]]; \ - then echo "[ERROR]: The device $(XPLATFORM) in blocklist."; exit 1;\ - fi; - -#get HOST_ARCH by PLATFORM -HOST_ARCH_temp = $(shell platforminfo -p $(PLATFORM) | grep 'CPU Type' | sed 's/.*://' | sed '/ai_engine/d' | sed 's/^[[:space:]]*//') -$(warning HOST_ARCH_temp:$(HOST_ARCH_temp)) -ifeq ($(HOST_ARCH_temp), x86) -HOST_ARCH := x86 -else ifeq ($(HOST_ARCH_temp), cortex-a9) -HOST_ARCH := aarch32 -else ifeq ($(HOST_ARCH_temp), cortex-a*) -HOST_ARCH := aarch64 -endif - -#Checks for Device Family -ifeq ($(HOST_ARCH), aarch32) - DEV_FAM = 7Series -else ifeq ($(HOST_ARCH), aarch64) - DEV_FAM = Ultrascale -endif - -#Checks for Correct architecture -ifneq ($(HOST_ARCH), $(filter $(HOST_ARCH),aarch64 aarch32 x86)) -$(error HOST_ARCH variable not set, please set correctly and rerun) -endif - -check_version: -ifneq (, $(shell which git)) -ifneq (,$(wildcard $(XFLIB_DIR)/.git)) - @cd $(XFLIB_DIR) && git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit -n 1 && cd - -endif -endif - -#Checks for SYSROOT -check_sysroot: -ifneq ($(HOST_ARCH), x86) -ifndef SYSROOT - $(error SYSROOT ENV variable is not set, please set ENV variable correctly and rerun) -endif -endif - -#Checks for g++ -CXX := g++ -ifeq ($(HOST_ARCH), x86) -ifneq ($(shell expr $(shell echo "__GNUG__" | g++ -E -x c++ - | tail -1) \>= 5), 1) -ifndef XILINX_VIVADO -$(error [ERROR]: g++ version too old. Please use 5.0 or above) -else -CXX := $(XILINX_VIVADO)/tps/lnx64/gcc-6.2.0/bin/g++ -ifeq ($(LD_LIBRARY_PATH),) -export LD_LIBRARY_PATH := $(XILINX_VIVADO)/tps/lnx64/gcc-6.2.0/lib64 -else -export LD_LIBRARY_PATH := $(XILINX_VIVADO)/tps/lnx64/gcc-6.2.0/lib64:$(LD_LIBRARY_PATH) -endif -$(warning [WARNING]: g++ version too old. Using g++ provided by the tool: $(CXX)) -endif -endif -else ifeq ($(HOST_ARCH), aarch64) -CXX := $(XILINX_VITIS)/gnu/aarch64/lin/aarch64-linux/bin/aarch64-linux-gnu-g++ -else ifeq ($(HOST_ARCH), aarch32) -CXX := $(XILINX_VITIS)/gnu/aarch32/lin/gcc-arm-linux-gnueabi/bin/arm-linux-gnueabihf-g++ -endif - -#Check OS and setting env -OSDIST = $(shell lsb_release -i |awk -F: '{print tolower($$2)}' | tr -d ' \t' ) -OSREL = $(shell lsb_release -r |awk -F: '{print tolower($$2)}' |tr -d ' \t') - -ifeq ($(OSDIST), centos) -ifeq (7,$(shell echo $(OSREL) | awk -F. '{print tolower($$1)}' )) -ifeq ($(HOST_ARCH), x86) -CXXFLAGS += -D_GLIBCXX_USE_CXX11_ABI=0 -endif -endif -endif - -#Setting VPP -VPP := v++ - -#Cheks for aiecompiler -AIECXX := aiecompiler -AIESIMULATOR := aiesimulator -X86SIMULATOR := x86simulator - -.PHONY: check_vivado -check_vivado: -ifeq (,$(wildcard $(XILINX_VIVADO)/bin/vivado)) - @echo "Cannot locate Vivado installation. Please set XILINX_VIVADO variable." && false -endif - -.PHONY: check_vpp -check_vpp: -ifeq (,$(wildcard $(XILINX_VITIS)/bin/v++)) - @echo "Cannot locate Vitis installation. Please set XILINX_VITIS variable." && false -endif - -.PHONY: check_xrt -check_xrt: -ifeq (,$(wildcard $(XILINX_XRT)/lib/libxilinxopencl.so)) - @echo "Cannot locate XRT installation. Please set XILINX_XRT variable." && false -endif - -export PATH := $(XILINX_VITIS)/bin:$(XILINX_XRT)/bin:$(PATH) -ifeq ($(HOST_ARCH), x86) -ifeq (,$(LD_LIBRARY_PATH)) -LD_LIBRARY_PATH := $(XILINX_XRT)/lib -else -LD_LIBRARY_PATH := $(XILINX_XRT)/lib:$(LD_LIBRARY_PATH) -endif -endif - -ifneq (,$(wildcard $(PLATFORM))) -XPLATFORM := $(PLATFORM) -else -ifneq (,$(wildcard $(PLATFORM))) -# Use PLATFORM as a file path -XPLATFORM := $(PLATFORM) -else -# Use PLATFORM as a file name pattern -# 1. search paths specified by variable -ifneq (,$(PLATFORM_REPO_PATHS)) -# 1.1 as exact name -XPLATFORM := $(strip $(foreach p, $(subst :, ,$(PLATFORM_REPO_PATHS)), $(wildcard $(p)/$(PLATFORM)/$(PLATFORM).xpfm))) -# 1.2 as a pattern -ifeq (,$(XPLATFORM)) -XPLATFORMS := $(foreach p, $(subst :, ,$(PLATFORM_REPO_PATHS)), $(wildcard $(p)/*/*.xpfm)) -XPLATFORM := $(strip $(foreach p, $(XPLATFORMS), $(shell echo $(p) | awk '$$1 ~ /$(PLATFORM)/'))) -endif # 1.2 -endif # 1 -# 2. search Vitis installation -ifeq (,$(XPLATFORM)) -# 2.1 as exact name -XPLATFORM := $(strip $(wildcard $(XILINX_VITIS)/platforms/$(PLATFORM)/$(PLATFORM).xpfm)) -# 2.2 as a pattern -ifeq (,$(XPLATFORM)) -XPLATFORMS := $(wildcard $(XILINX_VITIS)/platforms/*/*.xpfm) -XPLATFORM := $(strip $(foreach p, $(XPLATFORMS), $(shell echo $(p) | awk '$$1 ~ /$(PLATFORM)/'))) -endif # 2.2 -endif # 2 -# 3. search default locations -ifeq (,$(XPLATFORM)) -# 3.1 as exact name -XPLATFORM := $(strip $(wildcard /opt/xilinx/platforms/$(PLATFORM)/$(PLATFORM).xpfm)) -# 3.2 as a pattern -ifeq (,$(XPLATFORM)) -XPLATFORMS := $(wildcard /opt/xilinx/platforms/*/*.xpfm) -XPLATFORM := $(strip $(foreach p, $(XPLATFORMS), $(shell echo $(p) | awk '$$1 ~ /$(PLATFORM)/'))) -endif # 3.2 -endif # 3 -endif -endif - -define MSG_PLATFORM -No platform matched pattern '$(PLATFORM)'. -Available platforms are: $(XPLATFORMS) -To add more platform directories, set the PLATFORM_REPO_PATHS variable or point PLATFORM variable to the full path of platform .xpfm file. -endef -export MSG_PLATFORM - - -.PHONY: check_platform -check_platform: -ifeq (,$(XPLATFORM)) - @echo "$${MSG_PLATFORM}" && false -endif -#Check ends - -# device2xsa - create a filesystem friendly name from device name -# $(1) - full name of device -XPLATFORM = $(strip $(patsubst %.xpfm, % , $(shell basename $(PLATFORM)))) - - -# Cleaning stuff -RM = rm -f -RMDIR = rm -rf - -MV = mv -f -CP = cp -rf -ECHO:= @echo diff --git a/blas/L3/benchmarks/gemm/streamingKernel/xrt.cfg b/blas/L3/benchmarks/gemm/streamingKernel/xrt.cfg deleted file mode 100644 index 7215af63fa..0000000000 --- a/blas/L3/benchmarks/gemm/streamingKernel/xrt.cfg +++ /dev/null @@ -1,7 +0,0 @@ -[Debug] -profile=true -timeline_trace=true -device_profile=true -data_transfer_trace=fine -[Emulation] -enable_shared_memory=false diff --git a/blas/L3/examples/streamingKernel/gemm/Makefile b/blas/L3/examples/streamingKernel/gemm/Makefile deleted file mode 100644 index 5add8b4016..0000000000 --- a/blas/L3/examples/streamingKernel/gemm/Makefile +++ /dev/null @@ -1,372 +0,0 @@ -# Copyright 2019-2021 Xilinx, Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# vitis makefile-generator v2.0.3 - -############################## Help Section ############################## -.PHONY: help - -help:: - $(ECHO) "Makefile Usage:" - $(ECHO) " make all TARGET= PLATFORM= HOST_ARCH=< >" - $(ECHO) " Command to generate the design for specified Target and Shell." - $(ECHO) " By default, HOST_ARCH=. HOST_ARCH is required for SoC shells" - $(ECHO) "" - $(ECHO) " make run TARGET= PLATFORM= HOST_ARCH=< >" - $(ECHO) " Command to run application in emulation." - $(ECHO) " By default, HOST_ARCH=. HOST_ARCH required for SoC shells" - $(ECHO) "" - $(ECHO) " make xclbin TARGET= PLATFORM= HOST_ARCH=< >" - $(ECHO) " Command to build xclbin application." - $(ECHO) " By default, HOST_ARCH=. HOST_ARCH is required for SoC shells" - $(ECHO) "" - $(ECHO) " make host HOST_ARCH=" - $(ECHO) " Command to build host application." - $(ECHO) " By default, HOST_ARCH=. HOST_ARCH is required for SoC shells" - $(ECHO) "" - $(ECHO) " NOTE: For embedded devices, e.g. zcu102/zcu104/vck190, env variable SYSROOT and EDGE_COMMON_SW need to be set first, and HOST_ARCH is either aarch32 or aarch64. For example," - $(ECHO) " export SYSROOT=< path-to-platform-sysroot >" - $(ECHO) " export EDGE_COMMON_SW=< path-to-rootfs-and-Image-files >" - $(ECHO) "" - $(ECHO) " make clean " - $(ECHO) " Command to remove the generated non-hardware files." - $(ECHO) "" - $(ECHO) " make cleanall" - $(ECHO) " Command to remove all the generated files." - $(ECHO) "" - -############################## Setting up Project Variables ############################## - -MK_PATH := $(abspath $(lastword $(MAKEFILE_LIST))) -XF_PROJ_ROOT ?= $(shell bash -c 'export MK_PATH=$(MK_PATH); echo $${MK_PATH%/L3/*}') -CUR_DIR := $(patsubst %/,%,$(dir $(MK_PATH))) -XFLIB_DIR = $(XF_PROJ_ROOT) - -# setting devault value -TARGET ?= hw_emu -HOST_ARCH ?= - -#setting PLATFORM -ifeq ($(PLATFORM),) -PLATFORM := $(DEVICE) -endif -ifeq ($(PLATFORM),) -PLATFORM := xilinx_u250_gen3x16_xdma_3_1_202020_1 -endif - -# ###dddd################# Checking if PLATFORM in whitelist ############################ -PLATFORM_ALLOWLIST += xilinx_u250_gen3x16_xdma_3_1_202020_1 -PLATFORM_BLOCKLIST += - -include ./utils.mk - -TEMP_DIR := _x_temp.$(TARGET).$(XPLATFORM) -TEMP_REPORT_DIR := $(CUR_DIR)/reports/_x.$(TARGET).$(XPLATFORM) -BUILD_DIR := build_dir.$(TARGET).$(XPLATFORM) -BUILD_REPORT_DIR := $(CUR_DIR)/reports/_build.$(TARGET).$(XPLATFORM) -EMCONFIG := $(BUILD_DIR)/emconfig.json -XCLBIN_DIR := $(CUR_DIR)/$(BUILD_DIR) -export XCL_BINDIR = $(XCLBIN_DIR) - -EXE_FILE_DEPS := -BINARY_CONTAINERS_DEPS := -RUN_DEPS := - -# get global setting -ifeq ($(HOST_ARCH), x86) -CXXFLAGS += -fmessage-length=0 -I$(CUR_DIR)/src/ -I$(XILINX_XRT)/include -I$(XILINX_HLS)/include -std=c++14 -O3 -Wall -Wno-unknown-pragmas -Wno-unused-label -LDFLAGS += -pthread -L$(XILINX_XRT)/lib -L$(XILINX_HLS)/lnx64/tools/fpo_v7_0 -Wl,--as-needed -lOpenCL -lxrt_coreutil -lgmp -lmpfr -lIp_floating_point_v7_0_bitacc_cmodel -VPP_FLAGS += -t $(TARGET) --platform $(XPLATFORM) --save-temps -VPP_LDFLAGS += --optimize 2 -R 2 -else ifeq ($(HOST_ARCH), aarch64) -CXXFLAGS += -I$(CUR_DIR)/src/ -fmessage-length=0 --sysroot=$(SYSROOT) -I$(SYSROOT)/usr/include/xrt -I$(XILINX_HLS)/include -std=c++14 -O3 -Wall -Wno-unknown-pragmas -Wno-unused-label -LDFLAGS += -pthread -L$(SYSROOT)/usr/lib -L$(XILINX_VITIS_AIETOOLS)/lib/aarch64.o -Wl,--as-needed -lxilinxopencl -lxrt_coreutil -VPP_FLAGS += -t $(TARGET) --platform $(XPLATFORM) --save-temps -VPP_LDFLAGS += --optimize 2 -R 2 -endif -CXXFLAGS += $(EXTRA_CXXFLAGS) -VPP_FLAGS += $(EXTRA_VPP_FLAGS) - -########################## Setting up Host Variables ########################## -ifeq ($(TARGET),sw_emu) -CXXFLAGS += -D SW_EMU_TEST -endif -ifeq ($(TARGET),hw_emu) -CXXFLAGS += -D HW_EMU_TEST -endif - -#Inclue Required Host Source Files -HOST_SRCS += $(XFLIB_DIR)/L3/examples/streamingKernel/gemm/gemm_example.cpp -CXXFLAGS += -I $(XFLIB_DIR)/L3/include/sw -I $(XFLIB_DIR)/L3/examples/gemm -I $(XFLIB_DIR)/L2/include/streamingKernel -I $(XFLIB_DIR)/L1/include/hw -LDFLAGS += -luuid -lxrt_coreutil - -EXE_NAME := gemm_example.exe -EXE_FILE := $(BUILD_DIR)/$(EXE_NAME) -EXE_FILE_DEPS := $(HOST_SRCS) $(EXE_FILE_DEPS) - -HOST_ARGS := $(BUILD_DIR)/gemmKernel.xclbin $(BUILD_DIR)/config_info.dat -ifneq ($(HOST_ARCH), x86) -PKG_HOST_ARGS = $(foreach args,$(HOST_ARGS),$(subst $(dir $(patsubst %/,%,$(args))),,$(args))) -endif - -########################## Kernel compiler global settings ########################## -VPP_FLAGS += -I $(XFLIB_DIR)/L1/include/hw -I $(XFLIB_DIR)/L1/include/hw/xf_blas -I $(XFLIB_DIR)/L1/include/hw/xf_blas/gemm -I $(XFLIB_DIR)/L1/include/hw/xf_blas/helpers/utils -I $(XFLIB_DIR)/L2/include/streamingKernel -I $(XFLIB_DIR)/L2/include/streamingKernel/hw/xf_blas/gemmStreamKernel/ -I $(XFLIB_DIR)/L2/include/streamingKernel/hw/xf_blas -I $(XFLIB_DIR)/L1/include/hw - -ifneq (,$(shell echo $(XPLATFORM) | awk '/ u250/')) - -########################## binary container global settings ########################## -ifeq ($(HOST_ARCH), x86) -BINARY_CONTAINERS += $(BUILD_DIR)/gemmKernel.xclbin -else -BINARY_CONTAINERS += $(BUILD_DIR)/gemmKernel_pkg.xclbin -BINARY_CONTAINERS_PKG += $(BUILD_DIR)/gemmKernel.xclbin -endif - -# ################ Setting Rules for Binary Containers (Building Kernels) ################ -$(BINARY_CONTAINERS): $(BINARY_CONTAINERS_DEPS) - mkdir -p $(BUILD_DIR) - $(VPP) -l $(VPP_FLAGS) --temp_dir $(BUILD_DIR) --report_dir $(BUILD_REPORT_DIR)/gemmKernel $(VPP_LDFLAGS) $(VPP_LDFLAGS_gemmKernel) $(AIE_LDFLAGS) -o $@ $^ - -else -VPP_FLAGS_gemmCPlusXKernel += --hls.clock 300000000:gemmCPlusXKernel -VPP_FLAGS_gemmTagsKernel += --hls.clock 300000000:gemmTagsKernel -VPP_FLAGS_gemmTimerKernel += --hls.clock 300000000:gemmTimerKernel -VPP_FLAGS_gemmMergeKernel += --hls.clock 300000000:gemmMergeKernel -VPP_FLAGS_gemmAddsKernel += --hls.clock 300000000:gemmAddsKernel -VPP_FLAGS_gemmMulsKernel += --hls.clock 300000000:gemmMulsKernel -VPP_FLAGS_gemmSystolicArrayKernel += --hls.clock 300000000:gemmSystolicArrayKernel -VPP_FLAGS_gemmLoadStoreKernel += --hls.clock 300000000:gemmLoadStoreKernel - -VPP_LDFLAGS_gemmKernel_temp := --config opts.cfg -VPP_LDFLAGS_gemmKernel += $(VPP_LDFLAGS_gemmKernel_temp) - -########################## binary container global settings ########################## -BINARY_CONTAINER_gemmKernel_OBJS += $(TEMP_DIR)/gemmCPlusXKernel.xo -BINARY_CONTAINERS_DEPS += $(BINARY_CONTAINER_gemmKernel_OBJS) -BINARY_CONTAINER_gemmKernel_OBJS += $(TEMP_DIR)/gemmTagsKernel.xo -BINARY_CONTAINERS_DEPS += $(BINARY_CONTAINER_gemmKernel_OBJS) -BINARY_CONTAINER_gemmKernel_OBJS += $(TEMP_DIR)/gemmTimerKernel.xo -BINARY_CONTAINERS_DEPS += $(BINARY_CONTAINER_gemmKernel_OBJS) -BINARY_CONTAINER_gemmKernel_OBJS += $(TEMP_DIR)/gemmMergeKernel.xo -BINARY_CONTAINERS_DEPS += $(BINARY_CONTAINER_gemmKernel_OBJS) -BINARY_CONTAINER_gemmKernel_OBJS += $(TEMP_DIR)/gemmAddsKernel.xo -BINARY_CONTAINERS_DEPS += $(BINARY_CONTAINER_gemmKernel_OBJS) -BINARY_CONTAINER_gemmKernel_OBJS += $(TEMP_DIR)/gemmMulsKernel.xo -BINARY_CONTAINERS_DEPS += $(BINARY_CONTAINER_gemmKernel_OBJS) -BINARY_CONTAINER_gemmKernel_OBJS += $(TEMP_DIR)/gemmSystolicArrayKernel.xo -BINARY_CONTAINERS_DEPS += $(BINARY_CONTAINER_gemmKernel_OBJS) -BINARY_CONTAINER_gemmKernel_OBJS += $(TEMP_DIR)/gemmLoadStoreKernel.xo -BINARY_CONTAINERS_DEPS += $(BINARY_CONTAINER_gemmKernel_OBJS) -ifeq ($(HOST_ARCH), x86) -BINARY_CONTAINERS += $(BUILD_DIR)/gemmKernel.xclbin -else -BINARY_CONTAINERS += $(BUILD_DIR)/gemmKernel_pkg.xclbin -BINARY_CONTAINERS_PKG += $(BUILD_DIR)/gemmKernel.xclbin -endif - -# ################ Setting Rules for Binary Containers (Building Kernels) ################ -$(TEMP_DIR)/gemmCPlusXKernel.xo: $(XFLIB_DIR)/L2/src/streamingKernel/hw/gemmCPlusX.cpp - $(ECHO) "Compiling Kernel: gemmCPlusXKernel" - mkdir -p $(TEMP_DIR) - $(VPP) -c $(VPP_FLAGS_gemmCPlusXKernel) $(VPP_FLAGS) -k gemmCPlusXKernel -I'$(> $(RUN_SCRIPT) -ifneq ($(filter sw_emu hw_emu, $(TARGET)),) - @echo 'export XCL_EMULATION_MODE=$(TARGET)' >> $(RUN_SCRIPT) -endif - @echo 'export XILINX_VITIS=/mnt' >> $(RUN_SCRIPT) - @echo 'export XILINX_XRT=/usr' >> $(RUN_SCRIPT) - @echo 'if [ -f platform_desc.txt ]; then' >> $(RUN_SCRIPT) - @echo ' cp platform_desc.txt /etc/xocl.txt' >> $(RUN_SCRIPT) - @echo 'fi' >> $(RUN_SCRIPT) - @echo './$(EXE_NAME) $(PKG_HOST_ARGS)' >> $(RUN_SCRIPT) - @echo 'return_code=$$?' >> $(RUN_SCRIPT) - @echo 'if [ $$return_code -ne 0 ]; then' >> $(RUN_SCRIPT) - @echo ' echo "ERROR: Embedded host run failed, RC=$$return_code"' >> $(RUN_SCRIPT) - @echo 'else' >> $(RUN_SCRIPT) - @echo ' echo "INFO: TEST PASSED, RC=0"' >> $(RUN_SCRIPT) - @echo 'fi' >> $(RUN_SCRIPT) - @echo 'echo "INFO: Embedded host run completed."' >> $(RUN_SCRIPT) - @echo 'exit $$return_code' >> $(RUN_SCRIPT) -DATA_FILE := -DATA_DIR := -SD_FILES += $(RUN_SCRIPT) -SD_FILES += $(EXE_FILE) -SD_FILES += $(EMCONFIG) -SD_FILES += xrt.ini -SD_FILES += $(DATA_FILE)# where define DATAFILE in json -SD_FILES_WITH_PREFIX = $(foreach sd_file,$(SD_FILES), $(if $(filter $(sd_file),$(wildcard $(sd_file))), --package.sd_file $(sd_file))) -SD_DIRS_WITH_PREFIX = $(foreach sd_dir,$(DATA_DIR),--package.sd_dir $(sd_dir)) -PACKAGE_FILES := $(BINARY_CONTAINERS) -PACKAGE_FILES += $(AIE_CONTAINER) -SD_CARD := $(CUR_DIR)/package_$(TARGET) -$(SD_CARD): $(EXE_FILE) $(BINARY_CONTAINERS) $(RUN_SCRIPT) $(EMCONFIG) - @echo "Generating sd_card folder...." - mkdir -p $(SD_CARD) - chmod a+rx $(BUILD_DIR)/run_script.sh - $(VPP) -t $(TARGET) --platform $(PLATFORM) -o $(BINARY_CONTAINERS_PKG) -p $(PACKAGE_FILES) $(VPP_PACKAGE) --package.out_dir $(SD_CARD) --package.rootfs $(SYSROOT)/../../rootfs.ext4 --package.kernel_image $(K_IMAGE) $(SD_FILES_WITH_PREFIX) $(SD_DIRS_WITH_PREFIX) - @echo "### ***** sd_card generation done! ***** ###" - -.PHONY: sd_card -sd_card: $(SD_CARD) - -endif -############################## Setting Essential Checks and Building Rules ############################## -ifneq (,$(filter x86sim aiesim, $(TARGET))) -RUN_DEPS += $(AIE_CONTAINER) -else -RUN_DEPS += $(AIE_CONTAINER) $(EXE_FILE) $(BINARY_CONTAINERS) $(EMCONFIG) -RUN_DEPS += $(SD_CARD) -endif - -run: check_device pre_build $(RUN_DEPS) -#x86sim -ifeq ($(TARGET), x86sim) - $(X86SIMULATOR) --pkg-dir=./Work - -endif -#aiesim -ifeq ($(TARGET), aiesim) - $(AIESIMULATOR) --pkg-dir=./Work --profile - -endif -#hw_emu and sw_emu -ifneq (,$(filter sw_emu hw_emu, $(TARGET))) -ifeq ($(HOST_ARCH), x86) - LD_LIBRARY_PATH=$(LIBRARY_PATH):$$LD_LIBRARY_PATH \ - XCL_EMULATION_MODE=$(TARGET) $(EXE_FILE) $(HOST_ARGS) - -else - @echo $(RUN_DEPS) - $(SD_CARD)/launch_$(TARGET).sh -no-reboot -run-app $(notdir $(RUN_SCRIPT)) - grep "TEST PASSED, RC=0" $(SD_CARD)/qemu_output.log || exit 1 - -endif -endif -#hw -ifeq ($(TARGET), hw) -ifeq ($(HOST_ARCH), x86) - $(EXE_FILE) $(HOST_ARGS) - -else - $(ECHO) "Please copy the content of sd_card folder and data to an SD Card and run on the board" -endif -endif - -############################## Setting Targets ############################## - --include params.makefile - -.PHONY: pre_build -pre_build: - make dump_config - -.PHONY: all clean cleanall emconfig -emconfig: $(EMCONFIG) -ifeq ($(HOST_ARCH), x86) -all: pre_build check_vpp check_platform check_xrt $(EXE_FILE) $(BINARY_CONTAINERS) emconfig -else -all: pre_build check_vpp check_platform check_sysroot $(EXE_FILE) $(BINARY_CONTAINERS) emconfig sd_card -endif - -.PHONY: host -ifeq ($(HOST_ARCH), x86) -host: pre_build check_xrt $(EXE_FILE) -else -host: pre_build check_sysroot $(EXE_FILE) -endif - -.PHONY: xclbin -ifeq ($(HOST_ARCH), x86) -xclbin: pre_build check_vpp check_xrt $(BINARY_CONTAINERS) -else -xclbin: pre_build check_vpp check_sysroot $(BINARY_CONTAINERS) -endif - -.PHONY: x86sim -x86sim: $(AIE_CONTAINER) - $(X86SIMULATOR) --pkg-dir=./Work - -############################## Cleaning Rules ############################## -cleanh: - -$(RMDIR) $(EXE_FILE) vitis_* TempConfig system_estimate.xtxt *.rpt .run/ - -$(RMDIR) src/*.ll _xocc_* .Xil dltmp* xmltmp* *.log *.jou *.wcfg *.wdb sample_link.ini sample_compile.ini obj* bin* *.csv *.jpg *.jpeg *.png - -cleank: - -$(RMDIR) $(BUILD_DIR)/*.xclbin _vimage *xclbin.run_summary qemu-memory-_* emulation/ _vimage/ pl*start_simulation. sh *.xclbin - -$(RMDIR) _x_temp.*/_x.* _x_temp.*/.Xil _x_temp.*/profile_summary.* xo_* _x* - -$(RMDIR) _x_temp.*/dltmp* _x_temp.*/kernel_info.dat _x_temp.*/*.log - -$(RMDIR) _x_temp.* - -cleanall: cleanh cleank - -$(RMDIR) $(BUILD_DIR) build_dir.* emconfig.json *.html $(TEMP_DIR) $(CUR_DIR)/reports *.csv *.run_summary $(CUR_DIR)/*.raw package_* $(BUILD_DIR)/run_script.sh .ipcache *.str - -$(RMDIR) $(XFLIB_DIR)/common/data/*.xe2xd* $(XFLIB_DIR)/common/data/*.orig* - -$(RMDIR) $(CUR_DIR)/Work $(CUR_DIR)/*.xpe $(CUR_DIR)/hw.o $(CUR_DIR)/*.xsa $(CUR_DIR)/xnwOut - -clean: cleanh \ No newline at end of file diff --git a/blas/L3/examples/streamingKernel/gemm/conn_u250.cfg b/blas/L3/examples/streamingKernel/gemm/conn_u250.cfg deleted file mode 100644 index 94a334410b..0000000000 --- a/blas/L3/examples/streamingKernel/gemm/conn_u250.cfg +++ /dev/null @@ -1,104 +0,0 @@ -[connectivity] -nk=gemmTimerKernel:1:gemmTimerKernel_0 -nk=gemmLoadStoreKernel:1:gemmLoadStoreKernel_0 -nk=gemmTagsKernel:1:gemmTagsKernel_0 -nk=gemmCPlusXKernel:1:gemmCPlusXKernel_0 -nk=gemmMergeKernel:1:gemmMergeKernel_0 -nk=gemmSystolicArrayKernel:1:gemmSystolicArrayKernel_0 -nk=gemmAddsKernel:1:gemmAddsKernel_0 -nk=gemmMulsKernel:1:gemmMulsKernel_0 - -sp=gemmLoadStoreKernel_0.m_axi_gmem:DDR[0] - -sc=gemmLoadStoreKernel_0.l_aStr:gemmTagsKernel_0.p_a:256 -sc=gemmLoadStoreKernel_0.l_bStr:gemmTagsKernel_0.p_b -sc=gemmLoadStoreKernel_0.l_xStr:gemmCPlusXKernel_0.l_xStr -sc=gemmLoadStoreKernel_0.l_opCodeStr:gemmTimerKernel_0.l_opCodeStr - -sc=gemmTimerKernel_0.l_resStr:gemmLoadStoreKernel_0.l_resStr -sc=gemmCPlusXKernel_0.l_cStr:gemmLoadStoreKernel_0.l_cStr:256 - -sc=gemmTagsKernel_0.p_aOut:gemmSystolicArrayKernel_0.p_a -sc=gemmTagsKernel_0.p_tagOut:gemmSystolicArrayKernel_0.p_tag -sc=gemmTagsKernel_0.p_bOut:gemmSystolicArrayKernel_0.p_b - -sc=gemmSystolicArrayKernel_0.p_bOut:gemmMulsKernel_0.p_bIn:32 - -sc=gemmSystolicArrayKernel_0.p_aOut_0:gemmMulsKernel_0.p_aIn0:32 -sc=gemmSystolicArrayKernel_0.p_aOut_1:gemmMulsKernel_0.p_aIn1:32 -sc=gemmSystolicArrayKernel_0.p_aOut_2:gemmMulsKernel_0.p_aIn2:32 -sc=gemmSystolicArrayKernel_0.p_aOut_3:gemmMulsKernel_0.p_aIn3:32 -sc=gemmSystolicArrayKernel_0.p_aOut_4:gemmMulsKernel_0.p_aIn4:32 -sc=gemmSystolicArrayKernel_0.p_aOut_5:gemmMulsKernel_0.p_aIn5:32 -sc=gemmSystolicArrayKernel_0.p_aOut_6:gemmMulsKernel_0.p_aIn6:32 -sc=gemmSystolicArrayKernel_0.p_aOut_7:gemmMulsKernel_0.p_aIn7:32 -sc=gemmSystolicArrayKernel_0.p_aOut_8:gemmMulsKernel_0.p_aIn8:32 -sc=gemmSystolicArrayKernel_0.p_aOut_9:gemmMulsKernel_0.p_aIn9:32 -sc=gemmSystolicArrayKernel_0.p_aOut_10:gemmMulsKernel_0.p_aIn10:32 -sc=gemmSystolicArrayKernel_0.p_aOut_11:gemmMulsKernel_0.p_aIn11:32 -sc=gemmSystolicArrayKernel_0.p_aOut_12:gemmMulsKernel_0.p_aIn12:32 -sc=gemmSystolicArrayKernel_0.p_aOut_13:gemmMulsKernel_0.p_aIn13:32 -sc=gemmSystolicArrayKernel_0.p_aOut_14:gemmMulsKernel_0.p_aIn14:32 -sc=gemmSystolicArrayKernel_0.p_aOut_15:gemmMulsKernel_0.p_aIn15:32 - -sc=gemmSystolicArrayKernel_0.p_tagOut_0:gemmMulsKernel_0.p_tagIn0:32 -sc=gemmSystolicArrayKernel_0.p_tagOut_1:gemmMulsKernel_0.p_tagIn1:32 -sc=gemmSystolicArrayKernel_0.p_tagOut_2:gemmMulsKernel_0.p_tagIn2:32 -sc=gemmSystolicArrayKernel_0.p_tagOut_3:gemmMulsKernel_0.p_tagIn3:32 -sc=gemmSystolicArrayKernel_0.p_tagOut_4:gemmMulsKernel_0.p_tagIn4:32 -sc=gemmSystolicArrayKernel_0.p_tagOut_5:gemmMulsKernel_0.p_tagIn5:32 -sc=gemmSystolicArrayKernel_0.p_tagOut_6:gemmMulsKernel_0.p_tagIn6:32 -sc=gemmSystolicArrayKernel_0.p_tagOut_7:gemmMulsKernel_0.p_tagIn7:32 -sc=gemmSystolicArrayKernel_0.p_tagOut_8:gemmMulsKernel_0.p_tagIn8:32 -sc=gemmSystolicArrayKernel_0.p_tagOut_9:gemmMulsKernel_0.p_tagIn9:32 -sc=gemmSystolicArrayKernel_0.p_tagOut_10:gemmMulsKernel_0.p_tagIn10:32 -sc=gemmSystolicArrayKernel_0.p_tagOut_11:gemmMulsKernel_0.p_tagIn11:32 -sc=gemmSystolicArrayKernel_0.p_tagOut_12:gemmMulsKernel_0.p_tagIn12:32 -sc=gemmSystolicArrayKernel_0.p_tagOut_13:gemmMulsKernel_0.p_tagIn13:32 -sc=gemmSystolicArrayKernel_0.p_tagOut_14:gemmMulsKernel_0.p_tagIn14:32 -sc=gemmSystolicArrayKernel_0.p_tagOut_15:gemmMulsKernel_0.p_tagIn15:32 - -sc=gemmMulsKernel_0.p_out0:gemmAddsKernel_0.p_in0 -sc=gemmMulsKernel_0.p_out1:gemmAddsKernel_0.p_in1 -sc=gemmMulsKernel_0.p_out2:gemmAddsKernel_0.p_in2 -sc=gemmMulsKernel_0.p_out3:gemmAddsKernel_0.p_in3 -sc=gemmMulsKernel_0.p_out4:gemmAddsKernel_0.p_in4 -sc=gemmMulsKernel_0.p_out5:gemmAddsKernel_0.p_in5 -sc=gemmMulsKernel_0.p_out6:gemmAddsKernel_0.p_in6 -sc=gemmMulsKernel_0.p_out7:gemmAddsKernel_0.p_in7 -sc=gemmMulsKernel_0.p_out8:gemmAddsKernel_0.p_in8 -sc=gemmMulsKernel_0.p_out9:gemmAddsKernel_0.p_in9 -sc=gemmMulsKernel_0.p_out10:gemmAddsKernel_0.p_in10 -sc=gemmMulsKernel_0.p_out11:gemmAddsKernel_0.p_in11 -sc=gemmMulsKernel_0.p_out12:gemmAddsKernel_0.p_in12 -sc=gemmMulsKernel_0.p_out13:gemmAddsKernel_0.p_in13 -sc=gemmMulsKernel_0.p_out14:gemmAddsKernel_0.p_in14 -sc=gemmMulsKernel_0.p_out15:gemmAddsKernel_0.p_in15 - -sc=gemmAddsKernel_0.p_out0:gemmMergeKernel_0.p_sum_0 -sc=gemmAddsKernel_0.p_out1:gemmMergeKernel_0.p_sum_1 -sc=gemmAddsKernel_0.p_out2:gemmMergeKernel_0.p_sum_2 -sc=gemmAddsKernel_0.p_out3:gemmMergeKernel_0.p_sum_3 -sc=gemmAddsKernel_0.p_out4:gemmMergeKernel_0.p_sum_4 -sc=gemmAddsKernel_0.p_out5:gemmMergeKernel_0.p_sum_5 -sc=gemmAddsKernel_0.p_out6:gemmMergeKernel_0.p_sum_6 -sc=gemmAddsKernel_0.p_out7:gemmMergeKernel_0.p_sum_7 -sc=gemmAddsKernel_0.p_out8:gemmMergeKernel_0.p_sum_8 -sc=gemmAddsKernel_0.p_out9:gemmMergeKernel_0.p_sum_9 -sc=gemmAddsKernel_0.p_out10:gemmMergeKernel_0.p_sum_10 -sc=gemmAddsKernel_0.p_out11:gemmMergeKernel_0.p_sum_11 -sc=gemmAddsKernel_0.p_out12:gemmMergeKernel_0.p_sum_12 -sc=gemmAddsKernel_0.p_out13:gemmMergeKernel_0.p_sum_13 -sc=gemmAddsKernel_0.p_out14:gemmMergeKernel_0.p_sum_14 -sc=gemmAddsKernel_0.p_out15:gemmMergeKernel_0.p_sum_15 - -sc=gemmMergeKernel_0.p_sum:gemmCPlusXKernel_0.l_sStr - -slr=gemmLoadStoreKernel_0:SLR0 - -slr=gemmTagsKernel_0:SLR0 -slr=gemmSystolicArrayKernel_0:SLR0 -slr=gemmMulsKernel_0:SLR0 -slr=gemmAddsKernel_0:SLR0 -slr=gemmMergeKernel_0:SLR0 -slr=gemmCPlusXKernel_0:SLR0 diff --git a/blas/L3/examples/streamingKernel/gemm/description.json b/blas/L3/examples/streamingKernel/gemm/description.json deleted file mode 100644 index d8db8e38da..0000000000 --- a/blas/L3/examples/streamingKernel/gemm/description.json +++ /dev/null @@ -1,133 +0,0 @@ -{ - "name": "Xilinx XF_BLAS.gemm_example_streaming", - "description": "", - "flow": "vitis", - "platform_whitelist": [ - "xilinx_u250_gen3x16_xdma_3_1_202020_1" - ], - "platform_blacklist": [], - "platform_type": "pcie", - "gui": false, - "platform_properties": { - "u250": { - "containers": [ - { - "name" : "gemmKernel", - "ldclflags" : "--kernel_frequency 250 --config PROJECT/conn_u250.cfg" - } - ] - } - }, - "launch": [ - { - "cmd_args": "BUILD/gemmKernel.xclbin BUILD/config_info.dat", - "name": "generic launch for all flows" - } - ], - "pre_build": [ - { - "build_cmd": "make dump_config" - } - ], - "host": { - "host_exe": "gemm_example.exe", - "compiler": { - "sources": [ - "LIB_DIR/L3/examples/streamingKernel/gemm/gemm_example.cpp" - ], - "includepaths": [ - "LIB_DIR/L3/include/sw", - "LIB_DIR/L3/examples/gemm", - "LIB_DIR/L2/include/streamingKernel" - ], - "symbols": [ - ] - }, - "linker": { - "options": "-luuid -lxrt_coreutil" - } - }, - "v++": { - "compiler": { - "includepaths": [ - "LIB_DIR/L1/include/hw", - "LIB_DIR/L1/include/hw/xf_blas", - "LIB_DIR/L1/include/hw/xf_blas/gemm", - "LIB_DIR/L1/include/hw/xf_blas/helpers/utils", - "LIB_DIR/L2/include/streamingKernel", - "LIB_DIR/L2/include/streamingKernel/hw/xf_blas/gemmStreamKernel/", - "LIB_DIR/L2/include/streamingKernel/hw/xf_blas" - ] - } - }, - "containers": [ - { - "name" : "gemmKernel", - "ldclflags" : "--config opts.cfg", - "accelerators": [ - { - "name": "gemmCPlusXKernel", - "location": "LIB_DIR/L2/src/streamingKernel/hw/gemmCPlusX.cpp", - "frequency" : 300 - }, - { - "name": "gemmTagsKernel", - "location": "LIB_DIR/L2/src/streamingKernel/hw/gemmTags.cpp", - "frequency" : 300 - }, - { - "name": "gemmTimerKernel", - "location": "LIB_DIR/L2/src/streamingKernel/hw/gemmTimerKernel.cpp", - "frequency" : 300 - }, - { - "name": "gemmMergeKernel", - "location": "LIB_DIR/L2/src/streamingKernel/hw/gemmMerge.cpp", - "frequency" : 300 - }, - { - "name": "gemmAddsKernel", - "location": "LIB_DIR/L2/src/streamingKernel/hw/gemmAdds.cpp", - "frequency" : 300 - }, - { - "name": "gemmMulsKernel", - "location": "LIB_DIR/L2/src/streamingKernel/hw/gemmMuls.cpp", - "frequency" : 300 - }, - { - "name": "gemmSystolicArrayKernel", - "location": "LIB_DIR/L2/src/streamingKernel/hw/gemmSystolicArray.cpp", - "frequency" : 300 - }, - { - "name": "gemmLoadStoreKernel", - "location": "LIB_DIR/L2/src/streamingKernel/hw/gemmLoadStore.cpp", - "frequency" : 300 - } - ] - } - ], - "testinfo": { - "disable": true, - "jobs": [ - { - "index": 0, - "dependency": [], - "env": "", - "cmd": "", - "max_memory_MB": 32768, - "max_time_min": { - "vitis_hw_build": 470, - "vitis_hw_emu": 470, - "vitis_sw_emu": 60, - "vitis_hw_run": 10 - } - } - ], - "targets": [ - "vitis_hw_emu" - ], - "category": "canary" - } -} \ No newline at end of file diff --git a/blas/L3/examples/streamingKernel/gemm/gemm_example.cpp b/blas/L3/examples/streamingKernel/gemm/gemm_example.cpp deleted file mode 100644 index 49c560f7bf..0000000000 --- a/blas/L3/examples/streamingKernel/gemm/gemm_example.cpp +++ /dev/null @@ -1,227 +0,0 @@ -/* - * Copyright 2019 Xilinx, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - * usage: ./gemm_test.exe PATH_TO_XCLBIN/gemx.xclbin PATH_TO_XCLBIN/config_info.dat - * - */ - -#include -#include -#include "xf_blas.hpp" - -#define IDX2R(i, j, ld) (((i) * (ld)) + (j)) -#define m 64 // a - mxk matrix -#define n 64 // b - kxn matrix -#define k 64 // c - mxn matrix - -using namespace std; - -BLAS_dataType* getGoldenMat(BLAS_dataType* a, BLAS_dataType* b, BLAS_dataType* c) { - BLAS_dataType* goldenC; - goldenC = (BLAS_dataType*)malloc(m * n * sizeof(BLAS_dataType)); - for (int row = 0; row < m; row++) { - for (int col = 0; col < n; col++) { - BLAS_dataType l_val = 0; - for (int i = 0; i < k; i++) { - l_val += a[IDX2R(row, i, k)] * b[IDX2R(i, col, n)]; - } - goldenC[IDX2R(row, col, n)] = l_val + c[IDX2R(row, col, n)]; - } - } - return goldenC; -} - -bool compareGemm(BLAS_dataType* c, BLAS_dataType* goldenC, float p_TolRel = 1e-3, float p_TolAbs = 1e-5) { - bool l_check = true; - for (int row = 0; row < m; row++) { - for (int col = 0; col < n; col++) { - BLAS_dataType l_ref = goldenC[IDX2R(row, col, n)]; - BLAS_dataType l_result = c[IDX2R(row, col, n)]; - float l_diffAbs = abs(l_ref - l_result); - float l_diffRel = l_diffAbs; - if (goldenC[IDX2R(row, col, n)] != 0) { - l_diffRel /= abs(l_ref); - } - bool check = (l_diffRel <= p_TolRel) || (l_diffAbs <= p_TolAbs); - if (!check) { - cout << "golden result " << setprecision(10) << goldenC[IDX2R(row, col, n)] - << " is not equal to fpga result " << setprecision(10) << c[IDX2R(row, col, n)] << "\n"; - l_check = false; - } - } - } - return l_check; -} - -int main(int argc, char** argv) { - if (argc < 3) { - cerr << " usage: \n" - << " gemm_test.exe gemx.xclbin config_info.dat 1\n" - << " gemm_test.exe gemx.xclbin config_info.dat\n"; - return EXIT_FAILURE; - } - unsigned int l_argIdx = 1; - string l_xclbinFile(argv[l_argIdx++]); - string l_configFile(argv[l_argIdx++]); - int l_numKernel = 1; - - if (argc == 4) { - cout << "read custom number of kernels\n"; - l_numKernel = stoi(argv[l_argIdx++]); - } - - xfblasEngine_t engineName = XFBLAS_ENGINE_GEMM; - xfblasStatus_t status = xfblasCreate(l_xclbinFile.c_str(), l_configFile, engineName, l_numKernel); - if (status != XFBLAS_STATUS_SUCCESS) { - cout << "Create Handle failed with error code: " << status << "\n"; - return EXIT_FAILURE; - } - - int i, j; // i-row l_numKernel -1 ,j- column l_numKernel -1 - BLAS_dataType *a, *b, *c, *d, *e; - - posix_memalign((void**)&a, 4096, m * k * sizeof(BLAS_dataType)); - posix_memalign((void**)&b, 4096, k * n * sizeof(BLAS_dataType)); - posix_memalign((void**)&c, 4096, m * n * sizeof(BLAS_dataType)); - posix_memalign((void**)&d, 4096, n * n * sizeof(BLAS_dataType)); - posix_memalign((void**)&e, 4096, m * n * sizeof(BLAS_dataType)); - - int ind = 1; - for (i = 0; i < m; i++) { - for (j = 0; j < k; j++) { - a[IDX2R(i, j, k)] = (BLAS_dataType)ind++; - } - } - ind = 1; - for (i = 0; i < k; i++) { - for (j = 0; j < n; j++) { - b[IDX2R(i, j, n)] = (BLAS_dataType)ind++; - } - } - - for (i = 0; i < n; i++) { - for (j = 0; j < n; j++) { - d[IDX2R(i, j, n)] = 1; - } - } - - for (i = 0; i < m; i++) { - for (j = 0; j < n; j++) { - c[IDX2R(i, j, n)] = 0; - e[IDX2R(i, j, n)] = 0; - } - } - - BLAS_dataType* tmpC = getGoldenMat(a, b, c); - BLAS_dataType* golden = getGoldenMat(tmpC, d, e); - - status = xfblasMallocRestricted(m, k, sizeof(*a), a, k, l_numKernel - 1); - if (status != XFBLAS_STATUS_SUCCESS) { - cout << "Malloc memory for matrix A failed with error code: " << status << "\n"; - return EXIT_FAILURE; - } - - status = xfblasMallocRestricted(k, n, sizeof(*b), b, n, l_numKernel - 1); - - if (status != XFBLAS_STATUS_SUCCESS) { - cout << "Malloc memory for matrix B failed with error code: " << status << "\n"; - xfblasDestroy(); - return EXIT_FAILURE; - } - status = xfblasMallocRestricted(m, n, sizeof(*c), c, n, l_numKernel - 1); - - if (status != XFBLAS_STATUS_SUCCESS) { - cout << "Malloc memory for matrix C failed with error code: " << status << "\n"; - xfblasDestroy(); - return EXIT_FAILURE; - } - - status = xfblasMallocRestricted(n, n, sizeof(*d), d, n, l_numKernel - 1); - - if (status != XFBLAS_STATUS_SUCCESS) { - cout << "Malloc memory for matrix d failed with error code: " << status << "\n"; - xfblasDestroy(); - return EXIT_FAILURE; - } - - status = xfblasMallocRestricted(m, n, sizeof(*e), e, n, l_numKernel - 1); - - if (status != XFBLAS_STATUS_SUCCESS) { - cout << "Malloc memory for matrix e failed with error code: " << status << "\n"; - xfblasDestroy(); - return EXIT_FAILURE; - } - - status = xfblasSetMatrixRestricted(a, l_numKernel - 1); - status = xfblasSetMatrixRestricted(b, l_numKernel - 1); - status = xfblasSetMatrixRestricted(c, l_numKernel - 1); - status = xfblasSetMatrixRestricted(d, l_numKernel - 1); - status = xfblasSetMatrixRestricted(e, l_numKernel - 1); - - if (status != XFBLAS_STATUS_SUCCESS) { - cout << "Set Matrix failed with error code: " << status << "\n"; - xfblasDestroy(); - return EXIT_FAILURE; - } - - status = xfblasGemm(XFBLAS_OP_N, XFBLAS_OP_N, m, n, k, 1, a, k, b, n, 1, c, n, l_numKernel - 1); - status = xfblasGemm(XFBLAS_OP_N, XFBLAS_OP_N, m, n, n, 1, c, n, d, n, 1, e, n, l_numKernel - 1); - - if (status != XFBLAS_STATUS_SUCCESS) { - cout << "Matrix Multiplication failed with error code: " << status << "\n"; - xfblasDestroy(); - return EXIT_FAILURE; - } - - status = xfblasGetMatrixRestricted(e, l_numKernel - 1); - - if (status != XFBLAS_STATUS_SUCCESS) { - cout << "Get Matrix failed with error code: " << status << "\n"; - xfblasDestroy(); - return EXIT_FAILURE; - } - - for (i = 0; i < 10; i++) { - for (j = 0; j < 10; j++) { - cout << (e[IDX2R(i, j, k)]) << " "; - } - cout << "\n"; - } - - if (compareGemm(e, golden)) { - cout << "Test passed!\n"; - } else { - cout << "Test failed!\n"; - } - - xfblasFree(a, l_numKernel - 1); - xfblasFree(b, l_numKernel - 1); - xfblasFree(c, l_numKernel - 1); - xfblasFree(d, l_numKernel - 1); - xfblasFree(e, l_numKernel - 1); - free(a); - free(b); - free(c); - free(d); - free(e); - free(tmpC); - free(golden); - - xfblasDestroy(l_numKernel); - - return EXIT_SUCCESS; -} diff --git a/blas/L3/examples/streamingKernel/gemm/opts.cfg b/blas/L3/examples/streamingKernel/gemm/opts.cfg deleted file mode 100644 index 2eecff33d6..0000000000 --- a/blas/L3/examples/streamingKernel/gemm/opts.cfg +++ /dev/null @@ -1,8 +0,0 @@ -[vivado] -param=project.writeIntermediateCheckpoints=1 -prop=run.impl_1.STEPS.OPT_DESIGN.ARGS.DIRECTIVE=Explore -prop=run.impl_1.STEPS.PHYS_OPT_DESIGN.IS_ENABLED=true -prop=run.impl_1.STEPS.PHYS_OPT_DESIGN.ARGS.DIRECTIVE=AggressiveExplore -prop=run.impl_1.STEPS.ROUTE_DESIGN.ARGS.DIRECTIVE=Explore -prop=run.impl_1.{STEPS.ROUTE_DESIGN.ARGS.MORE OPTIONS}={-tns_cleanup} -prop=run.impl_1.STEPS.POST_ROUTE_PHYS_OPT_DESIGN.IS_ENABLED=true diff --git a/blas/L3/examples/streamingKernel/gemm/params.makefile b/blas/L3/examples/streamingKernel/gemm/params.makefile deleted file mode 100644 index 4387d53092..0000000000 --- a/blas/L3/examples/streamingKernel/gemm/params.makefile +++ /dev/null @@ -1,55 +0,0 @@ -BLAS_pageSizeBytes=4096 -BLAS_instrOffsetBytes=0 -BLAS_resOffsetBytes=4096 -BLAS_dataOffsetBytes=8192 -BLAS_ddrMemBits=512 -BLAS_maxNumInstrs=64 -BLAS_memWordsPerInstr=1 -BLAS_parEntries=16 - -BLAS_dataType=float -BLAS_mParWords=4 -BLAS_kParWords=4 -BLAS_nParWords=4 -BLAS_numKernels = 1 -BLAS_runGemm = 1 -BLAS_streamingKernel=1 - -BLAS_FLOAT_WIDTH=8 - -MACROS += -D BLAS_pageSizeBytes=$(BLAS_pageSizeBytes) \ - -D BLAS_instrOffsetBytes=$(BLAS_instrOffsetBytes) \ - -D BLAS_resOffsetBytes=$(BLAS_resOffsetBytes) \ - -D BLAS_dataOffsetBytes=$(BLAS_dataOffsetBytes) \ - -D BLAS_ddrMemBits=$(BLAS_ddrMemBits) \ - -D BLAS_maxNumInstrs=$(BLAS_maxNumInstrs) \ - -D BLAS_memWordsPerInstr=$(BLAS_memWordsPerInstr) \ - -D BLAS_parEntries=$(BLAS_parEntries) \ - -D BLAS_dataType=$(BLAS_dataType) \ - -D BLAS_mParWords=$(BLAS_mParWords) \ - -D BLAS_kParWords=$(BLAS_kParWords) \ - -D BLAS_nParWords=$(BLAS_nParWords) \ - -D BLAS_numKernels=$(BLAS_numKernels) \ - -D BLAS_FLOAT_WIDTH=$(BLAS_FLOAT_WIDTH) \ - -D DEBUG=$(DEBUG) \ - -D BLAS_runGemm=$(BLAS_runGemm) \ - -D BLAS_streamingKernel=$(BLAS_streamingKernel) \ - -D AP_INT_MAX_W=1026 - -CXXFLAGS += -D BLAS_streamingKernel=$(BLAS_streamingKernel) \ - -D BLAS_dataType=$(BLAS_dataType) -VPP_FLAGS += ${MACROS} - -ifeq ($(TARGET),$(filter $(TARGET),hw_emu)) - CXXFLAGS += -lxrt_hwemu -else ifeq ($(TARGET),$(filter $(TARGET),sw_emu)) - CXXFLAGS += -lxrt_swemu -else - CXXFLAGS += -lxrt_core -endif - -CONFIG_INFO = $(shell echo ${MACROS} | sed 's/-D //g; s/ -Wno.*//') - -dump_config: - mkdir -p ${BUILD_DIR} - @echo ${CONFIG_INFO} | tr " " "\n" > ${BUILD_DIR}/config_info.dat diff --git a/blas/L3/examples/streamingKernel/gemm/utils.mk b/blas/L3/examples/streamingKernel/gemm/utils.mk deleted file mode 100644 index e71c1c5409..0000000000 --- a/blas/L3/examples/streamingKernel/gemm/utils.mk +++ /dev/null @@ -1,246 +0,0 @@ -# -# Copyright 2019-2021 Xilinx, Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# vitis makefile-generator v2.0.3 -# -#+------------------------------------------------------------------------------- -# The following parameters are assigned with default values. These parameters can -# be overridden through the make command line -#+------------------------------------------------------------------------------- - -REPORT := no -PROFILE := no -DEBUG := no - -#'estimate' for estimate report generation -#'system' for system report generation -ifneq ($(REPORT), no) -VPP_LDFLAGS += --report estimate -VPP_LDFLAGS += --report system -endif - -#Generates profile summary report -ifeq ($(PROFILE), yes) -VPP_LDFLAGS += --profile_kernel data:all:all:all -endif - -#Generates debug summary report -ifeq ($(DEBUG), yes) -VPP_LDFLAGS += --dk protocol:all:all:all -endif - -#Check environment setup -ifndef XILINX_VITIS - XILINX_VITIS = /opt/xilinx/Vitis/$(TOOL_VERSION) - export XILINX_VITIS -endif -ifndef XILINX_XRT - XILINX_XRT = /opt/xilinx/xrt - export XILINX_XRT -endif - -check_device: - @set -eu; \ - inallowlist=False; \ - inblocklist=False; \ - for dev in $(PLATFORM_ALLOWLIST); \ - do if [[ $$(echo $(XPLATFORM) | grep $$dev) != "" ]]; \ - then inallowlist=True; fi; \ - done ;\ - for dev in $(PLATFORM_BLOCKLIST); \ - do if [[ $$(echo $(XPLATFORM) | grep $$dev) != "" ]]; \ - then inblocklist=True; fi; \ - done ;\ - if [[ $$inallowlist == False ]]; \ - then echo "[Warning]: The device $(XPLATFORM) not in allowlist."; \ - fi; \ - if [[ $$inblocklist == True ]]; \ - then echo "[ERROR]: The device $(XPLATFORM) in blocklist."; exit 1;\ - fi; - -#get HOST_ARCH by PLATFORM -HOST_ARCH_temp = $(shell platforminfo -p $(PLATFORM) | grep 'CPU Type' | sed 's/.*://' | sed '/ai_engine/d' | sed 's/^[[:space:]]*//') -$(warning HOST_ARCH_temp:$(HOST_ARCH_temp)) -ifeq ($(HOST_ARCH_temp), x86) -HOST_ARCH := x86 -else ifeq ($(HOST_ARCH_temp), cortex-a9) -HOST_ARCH := aarch32 -else ifeq ($(HOST_ARCH_temp), cortex-a*) -HOST_ARCH := aarch64 -endif - -#Checks for Device Family -ifeq ($(HOST_ARCH), aarch32) - DEV_FAM = 7Series -else ifeq ($(HOST_ARCH), aarch64) - DEV_FAM = Ultrascale -endif - -#Checks for Correct architecture -ifneq ($(HOST_ARCH), $(filter $(HOST_ARCH),aarch64 aarch32 x86)) -$(error HOST_ARCH variable not set, please set correctly and rerun) -endif - -check_version: -ifneq (, $(shell which git)) -ifneq (,$(wildcard $(XFLIB_DIR)/.git)) - @cd $(XFLIB_DIR) && git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit -n 1 && cd - -endif -endif - -#Checks for SYSROOT -check_sysroot: -ifneq ($(HOST_ARCH), x86) -ifndef SYSROOT - $(error SYSROOT ENV variable is not set, please set ENV variable correctly and rerun) -endif -endif - -#Checks for g++ -CXX := g++ -ifeq ($(HOST_ARCH), x86) -ifneq ($(shell expr $(shell echo "__GNUG__" | g++ -E -x c++ - | tail -1) \>= 5), 1) -ifndef XILINX_VIVADO -$(error [ERROR]: g++ version too old. Please use 5.0 or above) -else -CXX := $(XILINX_VIVADO)/tps/lnx64/gcc-6.2.0/bin/g++ -ifeq ($(LD_LIBRARY_PATH),) -export LD_LIBRARY_PATH := $(XILINX_VIVADO)/tps/lnx64/gcc-6.2.0/lib64 -else -export LD_LIBRARY_PATH := $(XILINX_VIVADO)/tps/lnx64/gcc-6.2.0/lib64:$(LD_LIBRARY_PATH) -endif -$(warning [WARNING]: g++ version too old. Using g++ provided by the tool: $(CXX)) -endif -endif -else ifeq ($(HOST_ARCH), aarch64) -CXX := $(XILINX_VITIS)/gnu/aarch64/lin/aarch64-linux/bin/aarch64-linux-gnu-g++ -else ifeq ($(HOST_ARCH), aarch32) -CXX := $(XILINX_VITIS)/gnu/aarch32/lin/gcc-arm-linux-gnueabi/bin/arm-linux-gnueabihf-g++ -endif - -#Check OS and setting env -OSDIST = $(shell lsb_release -i |awk -F: '{print tolower($$2)}' | tr -d ' \t' ) -OSREL = $(shell lsb_release -r |awk -F: '{print tolower($$2)}' |tr -d ' \t') - -ifeq ($(OSDIST), centos) -ifeq (7,$(shell echo $(OSREL) | awk -F. '{print tolower($$1)}' )) -ifeq ($(HOST_ARCH), x86) -CXXFLAGS += -D_GLIBCXX_USE_CXX11_ABI=0 -endif -endif -endif - -#Setting VPP -VPP := v++ - -#Cheks for aiecompiler -AIECXX := aiecompiler -AIESIMULATOR := aiesimulator -X86SIMULATOR := x86simulator - -.PHONY: check_vivado -check_vivado: -ifeq (,$(wildcard $(XILINX_VIVADO)/bin/vivado)) - @echo "Cannot locate Vivado installation. Please set XILINX_VIVADO variable." && false -endif - -.PHONY: check_vpp -check_vpp: -ifeq (,$(wildcard $(XILINX_VITIS)/bin/v++)) - @echo "Cannot locate Vitis installation. Please set XILINX_VITIS variable." && false -endif - -.PHONY: check_xrt -check_xrt: -ifeq (,$(wildcard $(XILINX_XRT)/lib/libxilinxopencl.so)) - @echo "Cannot locate XRT installation. Please set XILINX_XRT variable." && false -endif - -export PATH := $(XILINX_VITIS)/bin:$(XILINX_XRT)/bin:$(PATH) -ifeq ($(HOST_ARCH), x86) -ifeq (,$(LD_LIBRARY_PATH)) -LD_LIBRARY_PATH := $(XILINX_XRT)/lib -else -LD_LIBRARY_PATH := $(XILINX_XRT)/lib:$(LD_LIBRARY_PATH) -endif -endif - -ifneq (,$(wildcard $(PLATFORM))) -XPLATFORM := $(PLATFORM) -else -ifneq (,$(wildcard $(PLATFORM))) -# Use PLATFORM as a file path -XPLATFORM := $(PLATFORM) -else -# Use PLATFORM as a file name pattern -# 1. search paths specified by variable -ifneq (,$(PLATFORM_REPO_PATHS)) -# 1.1 as exact name -XPLATFORM := $(strip $(foreach p, $(subst :, ,$(PLATFORM_REPO_PATHS)), $(wildcard $(p)/$(PLATFORM)/$(PLATFORM).xpfm))) -# 1.2 as a pattern -ifeq (,$(XPLATFORM)) -XPLATFORMS := $(foreach p, $(subst :, ,$(PLATFORM_REPO_PATHS)), $(wildcard $(p)/*/*.xpfm)) -XPLATFORM := $(strip $(foreach p, $(XPLATFORMS), $(shell echo $(p) | awk '$$1 ~ /$(PLATFORM)/'))) -endif # 1.2 -endif # 1 -# 2. search Vitis installation -ifeq (,$(XPLATFORM)) -# 2.1 as exact name -XPLATFORM := $(strip $(wildcard $(XILINX_VITIS)/platforms/$(PLATFORM)/$(PLATFORM).xpfm)) -# 2.2 as a pattern -ifeq (,$(XPLATFORM)) -XPLATFORMS := $(wildcard $(XILINX_VITIS)/platforms/*/*.xpfm) -XPLATFORM := $(strip $(foreach p, $(XPLATFORMS), $(shell echo $(p) | awk '$$1 ~ /$(PLATFORM)/'))) -endif # 2.2 -endif # 2 -# 3. search default locations -ifeq (,$(XPLATFORM)) -# 3.1 as exact name -XPLATFORM := $(strip $(wildcard /opt/xilinx/platforms/$(PLATFORM)/$(PLATFORM).xpfm)) -# 3.2 as a pattern -ifeq (,$(XPLATFORM)) -XPLATFORMS := $(wildcard /opt/xilinx/platforms/*/*.xpfm) -XPLATFORM := $(strip $(foreach p, $(XPLATFORMS), $(shell echo $(p) | awk '$$1 ~ /$(PLATFORM)/'))) -endif # 3.2 -endif # 3 -endif -endif - -define MSG_PLATFORM -No platform matched pattern '$(PLATFORM)'. -Available platforms are: $(XPLATFORMS) -To add more platform directories, set the PLATFORM_REPO_PATHS variable or point PLATFORM variable to the full path of platform .xpfm file. -endef -export MSG_PLATFORM - - -.PHONY: check_platform -check_platform: -ifeq (,$(XPLATFORM)) - @echo "$${MSG_PLATFORM}" && false -endif -#Check ends - -# device2xsa - create a filesystem friendly name from device name -# $(1) - full name of device -XPLATFORM = $(strip $(patsubst %.xpfm, % , $(shell basename $(PLATFORM)))) - - -# Cleaning stuff -RM = rm -f -RMDIR = rm -rf - -MV = mv -f -CP = cp -rf -ECHO:= @echo diff --git a/blas/L3/examples/streamingKernel/gemm/xrt.cfg b/blas/L3/examples/streamingKernel/gemm/xrt.cfg deleted file mode 100644 index 7215af63fa..0000000000 --- a/blas/L3/examples/streamingKernel/gemm/xrt.cfg +++ /dev/null @@ -1,7 +0,0 @@ -[Debug] -profile=true -timeline_trace=true -device_profile=true -data_transfer_trace=fine -[Emulation] -enable_shared_memory=false diff --git a/blas/L3/tests/gemm/streamingKernel/gemm_float/Makefile b/blas/L3/tests/gemm/streamingKernel/gemm_float/Makefile deleted file mode 100644 index 72ecd849b8..0000000000 --- a/blas/L3/tests/gemm/streamingKernel/gemm_float/Makefile +++ /dev/null @@ -1,372 +0,0 @@ -# Copyright 2019-2021 Xilinx, Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# vitis makefile-generator v2.0.3 - -############################## Help Section ############################## -.PHONY: help - -help:: - $(ECHO) "Makefile Usage:" - $(ECHO) " make all TARGET= PLATFORM= HOST_ARCH=< >" - $(ECHO) " Command to generate the design for specified Target and Shell." - $(ECHO) " By default, HOST_ARCH=. HOST_ARCH is required for SoC shells" - $(ECHO) "" - $(ECHO) " make run TARGET= PLATFORM= HOST_ARCH=< >" - $(ECHO) " Command to run application in emulation." - $(ECHO) " By default, HOST_ARCH=. HOST_ARCH required for SoC shells" - $(ECHO) "" - $(ECHO) " make xclbin TARGET= PLATFORM= HOST_ARCH=< >" - $(ECHO) " Command to build xclbin application." - $(ECHO) " By default, HOST_ARCH=. HOST_ARCH is required for SoC shells" - $(ECHO) "" - $(ECHO) " make host HOST_ARCH=" - $(ECHO) " Command to build host application." - $(ECHO) " By default, HOST_ARCH=. HOST_ARCH is required for SoC shells" - $(ECHO) "" - $(ECHO) " NOTE: For embedded devices, e.g. zcu102/zcu104/vck190, env variable SYSROOT and EDGE_COMMON_SW need to be set first, and HOST_ARCH is either aarch32 or aarch64. For example," - $(ECHO) " export SYSROOT=< path-to-platform-sysroot >" - $(ECHO) " export EDGE_COMMON_SW=< path-to-rootfs-and-Image-files >" - $(ECHO) "" - $(ECHO) " make clean " - $(ECHO) " Command to remove the generated non-hardware files." - $(ECHO) "" - $(ECHO) " make cleanall" - $(ECHO) " Command to remove all the generated files." - $(ECHO) "" - -############################## Setting up Project Variables ############################## - -MK_PATH := $(abspath $(lastword $(MAKEFILE_LIST))) -XF_PROJ_ROOT ?= $(shell bash -c 'export MK_PATH=$(MK_PATH); echo $${MK_PATH%/L3/*}') -CUR_DIR := $(patsubst %/,%,$(dir $(MK_PATH))) -XFLIB_DIR = $(XF_PROJ_ROOT) - -# setting devault value -TARGET ?= hw_emu -HOST_ARCH ?= - -#setting PLATFORM -ifeq ($(PLATFORM),) -PLATFORM := $(DEVICE) -endif -ifeq ($(PLATFORM),) -PLATFORM := xilinx_u250_gen3x16_xdma_3_1_202020_1 -endif - -# ###dddd################# Checking if PLATFORM in whitelist ############################ -PLATFORM_ALLOWLIST += xilinx_u250_gen3x16_xdma_3_1_202020_1 -PLATFORM_BLOCKLIST += - -include ./utils.mk - -TEMP_DIR := _x_temp.$(TARGET).$(XPLATFORM) -TEMP_REPORT_DIR := $(CUR_DIR)/reports/_x.$(TARGET).$(XPLATFORM) -BUILD_DIR := build_dir.$(TARGET).$(XPLATFORM) -BUILD_REPORT_DIR := $(CUR_DIR)/reports/_build.$(TARGET).$(XPLATFORM) -EMCONFIG := $(BUILD_DIR)/emconfig.json -XCLBIN_DIR := $(CUR_DIR)/$(BUILD_DIR) -export XCL_BINDIR = $(XCLBIN_DIR) - -EXE_FILE_DEPS := -BINARY_CONTAINERS_DEPS := -RUN_DEPS := - -# get global setting -ifeq ($(HOST_ARCH), x86) -CXXFLAGS += -fmessage-length=0 -I$(CUR_DIR)/src/ -I$(XILINX_XRT)/include -I$(XILINX_HLS)/include -std=c++14 -O3 -Wall -Wno-unknown-pragmas -Wno-unused-label -LDFLAGS += -pthread -L$(XILINX_XRT)/lib -L$(XILINX_HLS)/lnx64/tools/fpo_v7_0 -Wl,--as-needed -lOpenCL -lxrt_coreutil -lgmp -lmpfr -lIp_floating_point_v7_0_bitacc_cmodel -VPP_FLAGS += -t $(TARGET) --platform $(XPLATFORM) --save-temps -VPP_LDFLAGS += --optimize 2 -R 2 -else ifeq ($(HOST_ARCH), aarch64) -CXXFLAGS += -I$(CUR_DIR)/src/ -fmessage-length=0 --sysroot=$(SYSROOT) -I$(SYSROOT)/usr/include/xrt -I$(XILINX_HLS)/include -std=c++14 -O3 -Wall -Wno-unknown-pragmas -Wno-unused-label -LDFLAGS += -pthread -L$(SYSROOT)/usr/lib -L$(XILINX_VITIS_AIETOOLS)/lib/aarch64.o -Wl,--as-needed -lxilinxopencl -lxrt_coreutil -VPP_FLAGS += -t $(TARGET) --platform $(XPLATFORM) --save-temps -VPP_LDFLAGS += --optimize 2 -R 2 -endif -CXXFLAGS += $(EXTRA_CXXFLAGS) -VPP_FLAGS += $(EXTRA_VPP_FLAGS) - -########################## Setting up Host Variables ########################## -ifeq ($(TARGET),sw_emu) -CXXFLAGS += -D SW_EMU_TEST -endif -ifeq ($(TARGET),hw_emu) -CXXFLAGS += -D HW_EMU_TEST -endif - -#Inclue Required Host Source Files -HOST_SRCS += $(XFLIB_DIR)/L3/tests/gemm/gemm_test.cpp -CXXFLAGS += -I $(XFLIB_DIR)/L3/include/sw -I $(XFLIB_DIR)/L3/tests/gemm -I $(XFLIB_DIR)/L2/include/streamingKernel -I $(XFLIB_DIR)/L1/include/hw -LDFLAGS += -luuid -lxrt_coreutil - -EXE_NAME := gemm_test.exe -EXE_FILE := $(BUILD_DIR)/$(EXE_NAME) -EXE_FILE_DEPS := $(HOST_SRCS) $(EXE_FILE_DEPS) - -HOST_ARGS := $(BUILD_DIR)/gemmKernel.xclbin $(BUILD_DIR)/config_info.dat -ifneq ($(HOST_ARCH), x86) -PKG_HOST_ARGS = $(foreach args,$(HOST_ARGS),$(subst $(dir $(patsubst %/,%,$(args))),,$(args))) -endif - -########################## Kernel compiler global settings ########################## -VPP_FLAGS += -I $(XFLIB_DIR)/L1/include/hw -I $(XFLIB_DIR)/L1/include/hw/xf_blas -I $(XFLIB_DIR)/L1/include/hw/xf_blas/gemm -I $(XFLIB_DIR)/L1/include/hw/xf_blas/helpers/utils -I $(XFLIB_DIR)/L2/include/streamingKernel -I $(XFLIB_DIR)/L2/include/streamingKernel/hw/xf_blas/gemmStreamKernel/ -I $(XFLIB_DIR)/L2/include/streamingKernel/hw/xf_blas -I $(XFLIB_DIR)/L1/include/hw - -ifneq (,$(shell echo $(XPLATFORM) | awk '/ u250/')) - -########################## binary container global settings ########################## -ifeq ($(HOST_ARCH), x86) -BINARY_CONTAINERS += $(BUILD_DIR)/gemmKernel.xclbin -else -BINARY_CONTAINERS += $(BUILD_DIR)/gemmKernel_pkg.xclbin -BINARY_CONTAINERS_PKG += $(BUILD_DIR)/gemmKernel.xclbin -endif - -# ################ Setting Rules for Binary Containers (Building Kernels) ################ -$(BINARY_CONTAINERS): $(BINARY_CONTAINERS_DEPS) - mkdir -p $(BUILD_DIR) - $(VPP) -l $(VPP_FLAGS) --temp_dir $(BUILD_DIR) --report_dir $(BUILD_REPORT_DIR)/gemmKernel $(VPP_LDFLAGS) $(VPP_LDFLAGS_gemmKernel) $(AIE_LDFLAGS) -o $@ $^ - -else -VPP_FLAGS_gemmCPlusXKernel += --hls.clock 300000000:gemmCPlusXKernel -VPP_FLAGS_gemmTagsKernel += --hls.clock 300000000:gemmTagsKernel -VPP_FLAGS_gemmTimerKernel += --hls.clock 300000000:gemmTimerKernel -VPP_FLAGS_gemmMergeKernel += --hls.clock 300000000:gemmMergeKernel -VPP_FLAGS_gemmAddsKernel += --hls.clock 300000000:gemmAddsKernel -VPP_FLAGS_gemmMulsKernel += --hls.clock 300000000:gemmMulsKernel -VPP_FLAGS_gemmSystolicArrayKernel += --hls.clock 300000000:gemmSystolicArrayKernel -VPP_FLAGS_gemmLoadStoreKernel += --hls.clock 300000000:gemmLoadStoreKernel - -VPP_LDFLAGS_gemmKernel_temp := --config opts.cfg -VPP_LDFLAGS_gemmKernel += $(VPP_LDFLAGS_gemmKernel_temp) - -########################## binary container global settings ########################## -BINARY_CONTAINER_gemmKernel_OBJS += $(TEMP_DIR)/gemmCPlusXKernel.xo -BINARY_CONTAINERS_DEPS += $(BINARY_CONTAINER_gemmKernel_OBJS) -BINARY_CONTAINER_gemmKernel_OBJS += $(TEMP_DIR)/gemmTagsKernel.xo -BINARY_CONTAINERS_DEPS += $(BINARY_CONTAINER_gemmKernel_OBJS) -BINARY_CONTAINER_gemmKernel_OBJS += $(TEMP_DIR)/gemmTimerKernel.xo -BINARY_CONTAINERS_DEPS += $(BINARY_CONTAINER_gemmKernel_OBJS) -BINARY_CONTAINER_gemmKernel_OBJS += $(TEMP_DIR)/gemmMergeKernel.xo -BINARY_CONTAINERS_DEPS += $(BINARY_CONTAINER_gemmKernel_OBJS) -BINARY_CONTAINER_gemmKernel_OBJS += $(TEMP_DIR)/gemmAddsKernel.xo -BINARY_CONTAINERS_DEPS += $(BINARY_CONTAINER_gemmKernel_OBJS) -BINARY_CONTAINER_gemmKernel_OBJS += $(TEMP_DIR)/gemmMulsKernel.xo -BINARY_CONTAINERS_DEPS += $(BINARY_CONTAINER_gemmKernel_OBJS) -BINARY_CONTAINER_gemmKernel_OBJS += $(TEMP_DIR)/gemmSystolicArrayKernel.xo -BINARY_CONTAINERS_DEPS += $(BINARY_CONTAINER_gemmKernel_OBJS) -BINARY_CONTAINER_gemmKernel_OBJS += $(TEMP_DIR)/gemmLoadStoreKernel.xo -BINARY_CONTAINERS_DEPS += $(BINARY_CONTAINER_gemmKernel_OBJS) -ifeq ($(HOST_ARCH), x86) -BINARY_CONTAINERS += $(BUILD_DIR)/gemmKernel.xclbin -else -BINARY_CONTAINERS += $(BUILD_DIR)/gemmKernel_pkg.xclbin -BINARY_CONTAINERS_PKG += $(BUILD_DIR)/gemmKernel.xclbin -endif - -# ################ Setting Rules for Binary Containers (Building Kernels) ################ -$(TEMP_DIR)/gemmCPlusXKernel.xo: $(XFLIB_DIR)/L2/src/streamingKernel/hw/gemmCPlusX.cpp - $(ECHO) "Compiling Kernel: gemmCPlusXKernel" - mkdir -p $(TEMP_DIR) - $(VPP) -c $(VPP_FLAGS_gemmCPlusXKernel) $(VPP_FLAGS) -k gemmCPlusXKernel -I'$(> $(RUN_SCRIPT) -ifneq ($(filter sw_emu hw_emu, $(TARGET)),) - @echo 'export XCL_EMULATION_MODE=$(TARGET)' >> $(RUN_SCRIPT) -endif - @echo 'export XILINX_VITIS=/mnt' >> $(RUN_SCRIPT) - @echo 'export XILINX_XRT=/usr' >> $(RUN_SCRIPT) - @echo 'if [ -f platform_desc.txt ]; then' >> $(RUN_SCRIPT) - @echo ' cp platform_desc.txt /etc/xocl.txt' >> $(RUN_SCRIPT) - @echo 'fi' >> $(RUN_SCRIPT) - @echo './$(EXE_NAME) $(PKG_HOST_ARGS)' >> $(RUN_SCRIPT) - @echo 'return_code=$$?' >> $(RUN_SCRIPT) - @echo 'if [ $$return_code -ne 0 ]; then' >> $(RUN_SCRIPT) - @echo ' echo "ERROR: Embedded host run failed, RC=$$return_code"' >> $(RUN_SCRIPT) - @echo 'else' >> $(RUN_SCRIPT) - @echo ' echo "INFO: TEST PASSED, RC=0"' >> $(RUN_SCRIPT) - @echo 'fi' >> $(RUN_SCRIPT) - @echo 'echo "INFO: Embedded host run completed."' >> $(RUN_SCRIPT) - @echo 'exit $$return_code' >> $(RUN_SCRIPT) -DATA_FILE := -DATA_DIR := -SD_FILES += $(RUN_SCRIPT) -SD_FILES += $(EXE_FILE) -SD_FILES += $(EMCONFIG) -SD_FILES += xrt.ini -SD_FILES += $(DATA_FILE)# where define DATAFILE in json -SD_FILES_WITH_PREFIX = $(foreach sd_file,$(SD_FILES), $(if $(filter $(sd_file),$(wildcard $(sd_file))), --package.sd_file $(sd_file))) -SD_DIRS_WITH_PREFIX = $(foreach sd_dir,$(DATA_DIR),--package.sd_dir $(sd_dir)) -PACKAGE_FILES := $(BINARY_CONTAINERS) -PACKAGE_FILES += $(AIE_CONTAINER) -SD_CARD := $(CUR_DIR)/package_$(TARGET) -$(SD_CARD): $(EXE_FILE) $(BINARY_CONTAINERS) $(RUN_SCRIPT) $(EMCONFIG) - @echo "Generating sd_card folder...." - mkdir -p $(SD_CARD) - chmod a+rx $(BUILD_DIR)/run_script.sh - $(VPP) -t $(TARGET) --platform $(PLATFORM) -o $(BINARY_CONTAINERS_PKG) -p $(PACKAGE_FILES) $(VPP_PACKAGE) --package.out_dir $(SD_CARD) --package.rootfs $(SYSROOT)/../../rootfs.ext4 --package.kernel_image $(K_IMAGE) $(SD_FILES_WITH_PREFIX) $(SD_DIRS_WITH_PREFIX) - @echo "### ***** sd_card generation done! ***** ###" - -.PHONY: sd_card -sd_card: $(SD_CARD) - -endif -############################## Setting Essential Checks and Building Rules ############################## -ifneq (,$(filter x86sim aiesim, $(TARGET))) -RUN_DEPS += $(AIE_CONTAINER) -else -RUN_DEPS += $(AIE_CONTAINER) $(EXE_FILE) $(BINARY_CONTAINERS) $(EMCONFIG) -RUN_DEPS += $(SD_CARD) -endif - -run: check_device pre_build $(RUN_DEPS) -#x86sim -ifeq ($(TARGET), x86sim) - $(X86SIMULATOR) --pkg-dir=./Work - -endif -#aiesim -ifeq ($(TARGET), aiesim) - $(AIESIMULATOR) --pkg-dir=./Work --profile - -endif -#hw_emu and sw_emu -ifneq (,$(filter sw_emu hw_emu, $(TARGET))) -ifeq ($(HOST_ARCH), x86) - LD_LIBRARY_PATH=$(LIBRARY_PATH):$$LD_LIBRARY_PATH \ - XCL_EMULATION_MODE=$(TARGET) $(EXE_FILE) $(HOST_ARGS) - -else - @echo $(RUN_DEPS) - $(SD_CARD)/launch_$(TARGET).sh -no-reboot -run-app $(notdir $(RUN_SCRIPT)) - grep "TEST PASSED, RC=0" $(SD_CARD)/qemu_output.log || exit 1 - -endif -endif -#hw -ifeq ($(TARGET), hw) -ifeq ($(HOST_ARCH), x86) - $(EXE_FILE) $(HOST_ARGS) - -else - $(ECHO) "Please copy the content of sd_card folder and data to an SD Card and run on the board" -endif -endif - -############################## Setting Targets ############################## - --include params.makefile - -.PHONY: pre_build -pre_build: - make dump_config - -.PHONY: all clean cleanall emconfig -emconfig: $(EMCONFIG) -ifeq ($(HOST_ARCH), x86) -all: pre_build check_vpp check_platform check_xrt $(EXE_FILE) $(BINARY_CONTAINERS) emconfig -else -all: pre_build check_vpp check_platform check_sysroot $(EXE_FILE) $(BINARY_CONTAINERS) emconfig sd_card -endif - -.PHONY: host -ifeq ($(HOST_ARCH), x86) -host: pre_build check_xrt $(EXE_FILE) -else -host: pre_build check_sysroot $(EXE_FILE) -endif - -.PHONY: xclbin -ifeq ($(HOST_ARCH), x86) -xclbin: pre_build check_vpp check_xrt $(BINARY_CONTAINERS) -else -xclbin: pre_build check_vpp check_sysroot $(BINARY_CONTAINERS) -endif - -.PHONY: x86sim -x86sim: $(AIE_CONTAINER) - $(X86SIMULATOR) --pkg-dir=./Work - -############################## Cleaning Rules ############################## -cleanh: - -$(RMDIR) $(EXE_FILE) vitis_* TempConfig system_estimate.xtxt *.rpt .run/ - -$(RMDIR) src/*.ll _xocc_* .Xil dltmp* xmltmp* *.log *.jou *.wcfg *.wdb sample_link.ini sample_compile.ini obj* bin* *.csv *.jpg *.jpeg *.png - -cleank: - -$(RMDIR) $(BUILD_DIR)/*.xclbin _vimage *xclbin.run_summary qemu-memory-_* emulation/ _vimage/ pl*start_simulation. sh *.xclbin - -$(RMDIR) _x_temp.*/_x.* _x_temp.*/.Xil _x_temp.*/profile_summary.* xo_* _x* - -$(RMDIR) _x_temp.*/dltmp* _x_temp.*/kernel_info.dat _x_temp.*/*.log - -$(RMDIR) _x_temp.* - -cleanall: cleanh cleank - -$(RMDIR) $(BUILD_DIR) build_dir.* emconfig.json *.html $(TEMP_DIR) $(CUR_DIR)/reports *.csv *.run_summary $(CUR_DIR)/*.raw package_* $(BUILD_DIR)/run_script.sh .ipcache *.str - -$(RMDIR) $(XFLIB_DIR)/common/data/*.xe2xd* $(XFLIB_DIR)/common/data/*.orig* - -$(RMDIR) $(CUR_DIR)/Work $(CUR_DIR)/*.xpe $(CUR_DIR)/hw.o $(CUR_DIR)/*.xsa $(CUR_DIR)/xnwOut - -clean: cleanh \ No newline at end of file diff --git a/blas/L3/tests/gemm/streamingKernel/gemm_float/conn_u250.cfg b/blas/L3/tests/gemm/streamingKernel/gemm_float/conn_u250.cfg deleted file mode 100644 index 94a334410b..0000000000 --- a/blas/L3/tests/gemm/streamingKernel/gemm_float/conn_u250.cfg +++ /dev/null @@ -1,104 +0,0 @@ -[connectivity] -nk=gemmTimerKernel:1:gemmTimerKernel_0 -nk=gemmLoadStoreKernel:1:gemmLoadStoreKernel_0 -nk=gemmTagsKernel:1:gemmTagsKernel_0 -nk=gemmCPlusXKernel:1:gemmCPlusXKernel_0 -nk=gemmMergeKernel:1:gemmMergeKernel_0 -nk=gemmSystolicArrayKernel:1:gemmSystolicArrayKernel_0 -nk=gemmAddsKernel:1:gemmAddsKernel_0 -nk=gemmMulsKernel:1:gemmMulsKernel_0 - -sp=gemmLoadStoreKernel_0.m_axi_gmem:DDR[0] - -sc=gemmLoadStoreKernel_0.l_aStr:gemmTagsKernel_0.p_a:256 -sc=gemmLoadStoreKernel_0.l_bStr:gemmTagsKernel_0.p_b -sc=gemmLoadStoreKernel_0.l_xStr:gemmCPlusXKernel_0.l_xStr -sc=gemmLoadStoreKernel_0.l_opCodeStr:gemmTimerKernel_0.l_opCodeStr - -sc=gemmTimerKernel_0.l_resStr:gemmLoadStoreKernel_0.l_resStr -sc=gemmCPlusXKernel_0.l_cStr:gemmLoadStoreKernel_0.l_cStr:256 - -sc=gemmTagsKernel_0.p_aOut:gemmSystolicArrayKernel_0.p_a -sc=gemmTagsKernel_0.p_tagOut:gemmSystolicArrayKernel_0.p_tag -sc=gemmTagsKernel_0.p_bOut:gemmSystolicArrayKernel_0.p_b - -sc=gemmSystolicArrayKernel_0.p_bOut:gemmMulsKernel_0.p_bIn:32 - -sc=gemmSystolicArrayKernel_0.p_aOut_0:gemmMulsKernel_0.p_aIn0:32 -sc=gemmSystolicArrayKernel_0.p_aOut_1:gemmMulsKernel_0.p_aIn1:32 -sc=gemmSystolicArrayKernel_0.p_aOut_2:gemmMulsKernel_0.p_aIn2:32 -sc=gemmSystolicArrayKernel_0.p_aOut_3:gemmMulsKernel_0.p_aIn3:32 -sc=gemmSystolicArrayKernel_0.p_aOut_4:gemmMulsKernel_0.p_aIn4:32 -sc=gemmSystolicArrayKernel_0.p_aOut_5:gemmMulsKernel_0.p_aIn5:32 -sc=gemmSystolicArrayKernel_0.p_aOut_6:gemmMulsKernel_0.p_aIn6:32 -sc=gemmSystolicArrayKernel_0.p_aOut_7:gemmMulsKernel_0.p_aIn7:32 -sc=gemmSystolicArrayKernel_0.p_aOut_8:gemmMulsKernel_0.p_aIn8:32 -sc=gemmSystolicArrayKernel_0.p_aOut_9:gemmMulsKernel_0.p_aIn9:32 -sc=gemmSystolicArrayKernel_0.p_aOut_10:gemmMulsKernel_0.p_aIn10:32 -sc=gemmSystolicArrayKernel_0.p_aOut_11:gemmMulsKernel_0.p_aIn11:32 -sc=gemmSystolicArrayKernel_0.p_aOut_12:gemmMulsKernel_0.p_aIn12:32 -sc=gemmSystolicArrayKernel_0.p_aOut_13:gemmMulsKernel_0.p_aIn13:32 -sc=gemmSystolicArrayKernel_0.p_aOut_14:gemmMulsKernel_0.p_aIn14:32 -sc=gemmSystolicArrayKernel_0.p_aOut_15:gemmMulsKernel_0.p_aIn15:32 - -sc=gemmSystolicArrayKernel_0.p_tagOut_0:gemmMulsKernel_0.p_tagIn0:32 -sc=gemmSystolicArrayKernel_0.p_tagOut_1:gemmMulsKernel_0.p_tagIn1:32 -sc=gemmSystolicArrayKernel_0.p_tagOut_2:gemmMulsKernel_0.p_tagIn2:32 -sc=gemmSystolicArrayKernel_0.p_tagOut_3:gemmMulsKernel_0.p_tagIn3:32 -sc=gemmSystolicArrayKernel_0.p_tagOut_4:gemmMulsKernel_0.p_tagIn4:32 -sc=gemmSystolicArrayKernel_0.p_tagOut_5:gemmMulsKernel_0.p_tagIn5:32 -sc=gemmSystolicArrayKernel_0.p_tagOut_6:gemmMulsKernel_0.p_tagIn6:32 -sc=gemmSystolicArrayKernel_0.p_tagOut_7:gemmMulsKernel_0.p_tagIn7:32 -sc=gemmSystolicArrayKernel_0.p_tagOut_8:gemmMulsKernel_0.p_tagIn8:32 -sc=gemmSystolicArrayKernel_0.p_tagOut_9:gemmMulsKernel_0.p_tagIn9:32 -sc=gemmSystolicArrayKernel_0.p_tagOut_10:gemmMulsKernel_0.p_tagIn10:32 -sc=gemmSystolicArrayKernel_0.p_tagOut_11:gemmMulsKernel_0.p_tagIn11:32 -sc=gemmSystolicArrayKernel_0.p_tagOut_12:gemmMulsKernel_0.p_tagIn12:32 -sc=gemmSystolicArrayKernel_0.p_tagOut_13:gemmMulsKernel_0.p_tagIn13:32 -sc=gemmSystolicArrayKernel_0.p_tagOut_14:gemmMulsKernel_0.p_tagIn14:32 -sc=gemmSystolicArrayKernel_0.p_tagOut_15:gemmMulsKernel_0.p_tagIn15:32 - -sc=gemmMulsKernel_0.p_out0:gemmAddsKernel_0.p_in0 -sc=gemmMulsKernel_0.p_out1:gemmAddsKernel_0.p_in1 -sc=gemmMulsKernel_0.p_out2:gemmAddsKernel_0.p_in2 -sc=gemmMulsKernel_0.p_out3:gemmAddsKernel_0.p_in3 -sc=gemmMulsKernel_0.p_out4:gemmAddsKernel_0.p_in4 -sc=gemmMulsKernel_0.p_out5:gemmAddsKernel_0.p_in5 -sc=gemmMulsKernel_0.p_out6:gemmAddsKernel_0.p_in6 -sc=gemmMulsKernel_0.p_out7:gemmAddsKernel_0.p_in7 -sc=gemmMulsKernel_0.p_out8:gemmAddsKernel_0.p_in8 -sc=gemmMulsKernel_0.p_out9:gemmAddsKernel_0.p_in9 -sc=gemmMulsKernel_0.p_out10:gemmAddsKernel_0.p_in10 -sc=gemmMulsKernel_0.p_out11:gemmAddsKernel_0.p_in11 -sc=gemmMulsKernel_0.p_out12:gemmAddsKernel_0.p_in12 -sc=gemmMulsKernel_0.p_out13:gemmAddsKernel_0.p_in13 -sc=gemmMulsKernel_0.p_out14:gemmAddsKernel_0.p_in14 -sc=gemmMulsKernel_0.p_out15:gemmAddsKernel_0.p_in15 - -sc=gemmAddsKernel_0.p_out0:gemmMergeKernel_0.p_sum_0 -sc=gemmAddsKernel_0.p_out1:gemmMergeKernel_0.p_sum_1 -sc=gemmAddsKernel_0.p_out2:gemmMergeKernel_0.p_sum_2 -sc=gemmAddsKernel_0.p_out3:gemmMergeKernel_0.p_sum_3 -sc=gemmAddsKernel_0.p_out4:gemmMergeKernel_0.p_sum_4 -sc=gemmAddsKernel_0.p_out5:gemmMergeKernel_0.p_sum_5 -sc=gemmAddsKernel_0.p_out6:gemmMergeKernel_0.p_sum_6 -sc=gemmAddsKernel_0.p_out7:gemmMergeKernel_0.p_sum_7 -sc=gemmAddsKernel_0.p_out8:gemmMergeKernel_0.p_sum_8 -sc=gemmAddsKernel_0.p_out9:gemmMergeKernel_0.p_sum_9 -sc=gemmAddsKernel_0.p_out10:gemmMergeKernel_0.p_sum_10 -sc=gemmAddsKernel_0.p_out11:gemmMergeKernel_0.p_sum_11 -sc=gemmAddsKernel_0.p_out12:gemmMergeKernel_0.p_sum_12 -sc=gemmAddsKernel_0.p_out13:gemmMergeKernel_0.p_sum_13 -sc=gemmAddsKernel_0.p_out14:gemmMergeKernel_0.p_sum_14 -sc=gemmAddsKernel_0.p_out15:gemmMergeKernel_0.p_sum_15 - -sc=gemmMergeKernel_0.p_sum:gemmCPlusXKernel_0.l_sStr - -slr=gemmLoadStoreKernel_0:SLR0 - -slr=gemmTagsKernel_0:SLR0 -slr=gemmSystolicArrayKernel_0:SLR0 -slr=gemmMulsKernel_0:SLR0 -slr=gemmAddsKernel_0:SLR0 -slr=gemmMergeKernel_0:SLR0 -slr=gemmCPlusXKernel_0:SLR0 diff --git a/blas/L3/tests/gemm/streamingKernel/gemm_float/description.json b/blas/L3/tests/gemm/streamingKernel/gemm_float/description.json deleted file mode 100644 index 2796c892c5..0000000000 --- a/blas/L3/tests/gemm/streamingKernel/gemm_float/description.json +++ /dev/null @@ -1,135 +0,0 @@ -{ - "name": "Xilinx XF_BLAS.gemm_float_streaming", - "description": "", - "flow": "vitis", - "platform_whitelist": [ - "xilinx_u250_gen3x16_xdma_3_1_202020_1" - ], - "platform_blacklist": [], - "platform_type": "pcie", - "gui": false, - "platform_properties": { - "u250": { - "containers": [ - { - "name" : "gemmKernel", - "ldclflags" : "--kernel_frequency 250 --config PROJECT/conn_u250.cfg" - } - ] - } - }, - "launch": [ - { - "cmd_args": "BUILD/gemmKernel.xclbin BUILD/config_info.dat", - "name": "generic launch for all flows" - } - ], - "pre_build": [ - { - "build_cmd": "make dump_config" - } - ], - "host": { - "host_exe": "gemm_test.exe", - "compiler": { - "sources": [ - "LIB_DIR/L3/tests/gemm/gemm_test.cpp" - ], - "includepaths": [ - "LIB_DIR/L3/include/sw", - "LIB_DIR/L3/tests/gemm", - "LIB_DIR/L2/include/streamingKernel" - ], - "symbols": [ - ] - }, - "linker": { - "options": "-luuid -lxrt_coreutil" - } - }, - "v++": { - "compiler": { - "includepaths": [ - "LIB_DIR/L1/include/hw", - "LIB_DIR/L1/include/hw/xf_blas", - "LIB_DIR/L1/include/hw/xf_blas/gemm", - "LIB_DIR/L1/include/hw/xf_blas/helpers/utils", - "LIB_DIR/L2/include/streamingKernel", - "LIB_DIR/L2/include/streamingKernel/hw/xf_blas/gemmStreamKernel/", - "LIB_DIR/L2/include/streamingKernel/hw/xf_blas" - ] - } - }, - "containers": [ - { - "name" : "gemmKernel", - "ldclflags" : "--config opts.cfg", - "accelerators": [ - { - "name": "gemmCPlusXKernel", - "location": "LIB_DIR/L2/src/streamingKernel/hw/gemmCPlusX.cpp", - "frequency" : 300 - }, - { - "name": "gemmTagsKernel", - "location": "LIB_DIR/L2/src/streamingKernel/hw/gemmTags.cpp", - "frequency" : 300 - }, - { - "name": "gemmTimerKernel", - "location": "LIB_DIR/L2/src/streamingKernel/hw/gemmTimerKernel.cpp", - "frequency" : 300 - }, - { - "name": "gemmMergeKernel", - "location": "LIB_DIR/L2/src/streamingKernel/hw/gemmMerge.cpp", - "frequency" : 300 - }, - { - "name": "gemmAddsKernel", - "location": "LIB_DIR/L2/src/streamingKernel/hw/gemmAdds.cpp", - "frequency" : 300 - }, - { - "name": "gemmMulsKernel", - "location": "LIB_DIR/L2/src/streamingKernel/hw/gemmMuls.cpp", - "frequency" : 300 - }, - { - "name": "gemmSystolicArrayKernel", - "location": "LIB_DIR/L2/src/streamingKernel/hw/gemmSystolicArray.cpp", - "frequency" : 300 - }, - { - "name": "gemmLoadStoreKernel", - "location": "LIB_DIR/L2/src/streamingKernel/hw/gemmLoadStore.cpp", - "frequency" : 300 - } - ] - } - ], - "testinfo": { - "disable": true, - "jobs": [ - { - "index": 0, - "dependency": [], - "env": "", - "cmd": "", - "max_memory_MB": 32768, - "max_time_min": { - "vitis_hw_build": 940, - "vitis_hw_emu": 470, - "vitis_sw_emu": 60, - "vitis_hw_run": 10 - } - } - ], - "targets": [ - "vitis_hw_emu", - "vitis_hw_build", - "vitis_hw_run" - ], - "category": "canary" - } -} \ No newline at end of file diff --git a/blas/L3/tests/gemm/streamingKernel/gemm_float/opts.cfg b/blas/L3/tests/gemm/streamingKernel/gemm_float/opts.cfg deleted file mode 100644 index 2eecff33d6..0000000000 --- a/blas/L3/tests/gemm/streamingKernel/gemm_float/opts.cfg +++ /dev/null @@ -1,8 +0,0 @@ -[vivado] -param=project.writeIntermediateCheckpoints=1 -prop=run.impl_1.STEPS.OPT_DESIGN.ARGS.DIRECTIVE=Explore -prop=run.impl_1.STEPS.PHYS_OPT_DESIGN.IS_ENABLED=true -prop=run.impl_1.STEPS.PHYS_OPT_DESIGN.ARGS.DIRECTIVE=AggressiveExplore -prop=run.impl_1.STEPS.ROUTE_DESIGN.ARGS.DIRECTIVE=Explore -prop=run.impl_1.{STEPS.ROUTE_DESIGN.ARGS.MORE OPTIONS}={-tns_cleanup} -prop=run.impl_1.STEPS.POST_ROUTE_PHYS_OPT_DESIGN.IS_ENABLED=true diff --git a/blas/L3/tests/gemm/streamingKernel/gemm_float/params.makefile b/blas/L3/tests/gemm/streamingKernel/gemm_float/params.makefile deleted file mode 100644 index 251b07c528..0000000000 --- a/blas/L3/tests/gemm/streamingKernel/gemm_float/params.makefile +++ /dev/null @@ -1,56 +0,0 @@ -BLAS_pageSizeBytes=4096 -BLAS_instrOffsetBytes=0 -BLAS_resOffsetBytes=4096 -BLAS_dataOffsetBytes=8192 -BLAS_ddrMemBits=512 -BLAS_maxNumInstrs=64 -BLAS_memWordsPerInstr=1 -BLAS_parEntries=16 - -BLAS_dataType=float -BLAS_mParWords=4 -BLAS_kParWords=4 -BLAS_nParWords=4 -BLAS_numKernels = 1 -BLAS_runGemm = 1 -BLAS_streamingKernel=1 - - -BLAS_FLOAT_WIDTH=8 - -MACROS += -D BLAS_pageSizeBytes=$(BLAS_pageSizeBytes) \ - -D BLAS_instrOffsetBytes=$(BLAS_instrOffsetBytes) \ - -D BLAS_resOffsetBytes=$(BLAS_resOffsetBytes) \ - -D BLAS_dataOffsetBytes=$(BLAS_dataOffsetBytes) \ - -D BLAS_ddrMemBits=$(BLAS_ddrMemBits) \ - -D BLAS_maxNumInstrs=$(BLAS_maxNumInstrs) \ - -D BLAS_memWordsPerInstr=$(BLAS_memWordsPerInstr) \ - -D BLAS_parEntries=$(BLAS_parEntries) \ - -D BLAS_dataType=$(BLAS_dataType) \ - -D BLAS_mParWords=$(BLAS_mParWords) \ - -D BLAS_kParWords=$(BLAS_kParWords) \ - -D BLAS_nParWords=$(BLAS_nParWords) \ - -D BLAS_numKernels=$(BLAS_numKernels) \ - -D BLAS_FLOAT_WIDTH=$(BLAS_FLOAT_WIDTH) \ - -D DEBUG=$(DEBUG) \ - -D BLAS_runGemm=$(BLAS_runGemm) \ - -D BLAS_streamingKernel=$(BLAS_streamingKernel) \ - -D AP_INT_MAX_W=1026 - -CXXFLAGS += -D BLAS_streamingKernel=$(BLAS_streamingKernel) \ - -D BLAS_dataType=$(BLAS_dataType) -VPP_FLAGS += ${MACROS} - -ifeq ($(TARGET),$(filter $(TARGET),hw_emu)) - CXXFLAGS += -lxrt_hwemu -else ifeq ($(TARGET),$(filter $(TARGET),sw_emu)) - CXXFLAGS += -lxrt_swemu -else - CXXFLAGS += -lxrt_core -endif - -CONFIG_INFO = $(shell echo ${MACROS} | sed 's/-D //g; s/ -Wno.*//') - -dump_config: - mkdir -p ${BUILD_DIR} - @echo ${CONFIG_INFO} | tr " " "\n" > ${BUILD_DIR}/config_info.dat diff --git a/blas/L3/tests/gemm/streamingKernel/gemm_float/utils.mk b/blas/L3/tests/gemm/streamingKernel/gemm_float/utils.mk deleted file mode 100644 index e71c1c5409..0000000000 --- a/blas/L3/tests/gemm/streamingKernel/gemm_float/utils.mk +++ /dev/null @@ -1,246 +0,0 @@ -# -# Copyright 2019-2021 Xilinx, Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# vitis makefile-generator v2.0.3 -# -#+------------------------------------------------------------------------------- -# The following parameters are assigned with default values. These parameters can -# be overridden through the make command line -#+------------------------------------------------------------------------------- - -REPORT := no -PROFILE := no -DEBUG := no - -#'estimate' for estimate report generation -#'system' for system report generation -ifneq ($(REPORT), no) -VPP_LDFLAGS += --report estimate -VPP_LDFLAGS += --report system -endif - -#Generates profile summary report -ifeq ($(PROFILE), yes) -VPP_LDFLAGS += --profile_kernel data:all:all:all -endif - -#Generates debug summary report -ifeq ($(DEBUG), yes) -VPP_LDFLAGS += --dk protocol:all:all:all -endif - -#Check environment setup -ifndef XILINX_VITIS - XILINX_VITIS = /opt/xilinx/Vitis/$(TOOL_VERSION) - export XILINX_VITIS -endif -ifndef XILINX_XRT - XILINX_XRT = /opt/xilinx/xrt - export XILINX_XRT -endif - -check_device: - @set -eu; \ - inallowlist=False; \ - inblocklist=False; \ - for dev in $(PLATFORM_ALLOWLIST); \ - do if [[ $$(echo $(XPLATFORM) | grep $$dev) != "" ]]; \ - then inallowlist=True; fi; \ - done ;\ - for dev in $(PLATFORM_BLOCKLIST); \ - do if [[ $$(echo $(XPLATFORM) | grep $$dev) != "" ]]; \ - then inblocklist=True; fi; \ - done ;\ - if [[ $$inallowlist == False ]]; \ - then echo "[Warning]: The device $(XPLATFORM) not in allowlist."; \ - fi; \ - if [[ $$inblocklist == True ]]; \ - then echo "[ERROR]: The device $(XPLATFORM) in blocklist."; exit 1;\ - fi; - -#get HOST_ARCH by PLATFORM -HOST_ARCH_temp = $(shell platforminfo -p $(PLATFORM) | grep 'CPU Type' | sed 's/.*://' | sed '/ai_engine/d' | sed 's/^[[:space:]]*//') -$(warning HOST_ARCH_temp:$(HOST_ARCH_temp)) -ifeq ($(HOST_ARCH_temp), x86) -HOST_ARCH := x86 -else ifeq ($(HOST_ARCH_temp), cortex-a9) -HOST_ARCH := aarch32 -else ifeq ($(HOST_ARCH_temp), cortex-a*) -HOST_ARCH := aarch64 -endif - -#Checks for Device Family -ifeq ($(HOST_ARCH), aarch32) - DEV_FAM = 7Series -else ifeq ($(HOST_ARCH), aarch64) - DEV_FAM = Ultrascale -endif - -#Checks for Correct architecture -ifneq ($(HOST_ARCH), $(filter $(HOST_ARCH),aarch64 aarch32 x86)) -$(error HOST_ARCH variable not set, please set correctly and rerun) -endif - -check_version: -ifneq (, $(shell which git)) -ifneq (,$(wildcard $(XFLIB_DIR)/.git)) - @cd $(XFLIB_DIR) && git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit -n 1 && cd - -endif -endif - -#Checks for SYSROOT -check_sysroot: -ifneq ($(HOST_ARCH), x86) -ifndef SYSROOT - $(error SYSROOT ENV variable is not set, please set ENV variable correctly and rerun) -endif -endif - -#Checks for g++ -CXX := g++ -ifeq ($(HOST_ARCH), x86) -ifneq ($(shell expr $(shell echo "__GNUG__" | g++ -E -x c++ - | tail -1) \>= 5), 1) -ifndef XILINX_VIVADO -$(error [ERROR]: g++ version too old. Please use 5.0 or above) -else -CXX := $(XILINX_VIVADO)/tps/lnx64/gcc-6.2.0/bin/g++ -ifeq ($(LD_LIBRARY_PATH),) -export LD_LIBRARY_PATH := $(XILINX_VIVADO)/tps/lnx64/gcc-6.2.0/lib64 -else -export LD_LIBRARY_PATH := $(XILINX_VIVADO)/tps/lnx64/gcc-6.2.0/lib64:$(LD_LIBRARY_PATH) -endif -$(warning [WARNING]: g++ version too old. Using g++ provided by the tool: $(CXX)) -endif -endif -else ifeq ($(HOST_ARCH), aarch64) -CXX := $(XILINX_VITIS)/gnu/aarch64/lin/aarch64-linux/bin/aarch64-linux-gnu-g++ -else ifeq ($(HOST_ARCH), aarch32) -CXX := $(XILINX_VITIS)/gnu/aarch32/lin/gcc-arm-linux-gnueabi/bin/arm-linux-gnueabihf-g++ -endif - -#Check OS and setting env -OSDIST = $(shell lsb_release -i |awk -F: '{print tolower($$2)}' | tr -d ' \t' ) -OSREL = $(shell lsb_release -r |awk -F: '{print tolower($$2)}' |tr -d ' \t') - -ifeq ($(OSDIST), centos) -ifeq (7,$(shell echo $(OSREL) | awk -F. '{print tolower($$1)}' )) -ifeq ($(HOST_ARCH), x86) -CXXFLAGS += -D_GLIBCXX_USE_CXX11_ABI=0 -endif -endif -endif - -#Setting VPP -VPP := v++ - -#Cheks for aiecompiler -AIECXX := aiecompiler -AIESIMULATOR := aiesimulator -X86SIMULATOR := x86simulator - -.PHONY: check_vivado -check_vivado: -ifeq (,$(wildcard $(XILINX_VIVADO)/bin/vivado)) - @echo "Cannot locate Vivado installation. Please set XILINX_VIVADO variable." && false -endif - -.PHONY: check_vpp -check_vpp: -ifeq (,$(wildcard $(XILINX_VITIS)/bin/v++)) - @echo "Cannot locate Vitis installation. Please set XILINX_VITIS variable." && false -endif - -.PHONY: check_xrt -check_xrt: -ifeq (,$(wildcard $(XILINX_XRT)/lib/libxilinxopencl.so)) - @echo "Cannot locate XRT installation. Please set XILINX_XRT variable." && false -endif - -export PATH := $(XILINX_VITIS)/bin:$(XILINX_XRT)/bin:$(PATH) -ifeq ($(HOST_ARCH), x86) -ifeq (,$(LD_LIBRARY_PATH)) -LD_LIBRARY_PATH := $(XILINX_XRT)/lib -else -LD_LIBRARY_PATH := $(XILINX_XRT)/lib:$(LD_LIBRARY_PATH) -endif -endif - -ifneq (,$(wildcard $(PLATFORM))) -XPLATFORM := $(PLATFORM) -else -ifneq (,$(wildcard $(PLATFORM))) -# Use PLATFORM as a file path -XPLATFORM := $(PLATFORM) -else -# Use PLATFORM as a file name pattern -# 1. search paths specified by variable -ifneq (,$(PLATFORM_REPO_PATHS)) -# 1.1 as exact name -XPLATFORM := $(strip $(foreach p, $(subst :, ,$(PLATFORM_REPO_PATHS)), $(wildcard $(p)/$(PLATFORM)/$(PLATFORM).xpfm))) -# 1.2 as a pattern -ifeq (,$(XPLATFORM)) -XPLATFORMS := $(foreach p, $(subst :, ,$(PLATFORM_REPO_PATHS)), $(wildcard $(p)/*/*.xpfm)) -XPLATFORM := $(strip $(foreach p, $(XPLATFORMS), $(shell echo $(p) | awk '$$1 ~ /$(PLATFORM)/'))) -endif # 1.2 -endif # 1 -# 2. search Vitis installation -ifeq (,$(XPLATFORM)) -# 2.1 as exact name -XPLATFORM := $(strip $(wildcard $(XILINX_VITIS)/platforms/$(PLATFORM)/$(PLATFORM).xpfm)) -# 2.2 as a pattern -ifeq (,$(XPLATFORM)) -XPLATFORMS := $(wildcard $(XILINX_VITIS)/platforms/*/*.xpfm) -XPLATFORM := $(strip $(foreach p, $(XPLATFORMS), $(shell echo $(p) | awk '$$1 ~ /$(PLATFORM)/'))) -endif # 2.2 -endif # 2 -# 3. search default locations -ifeq (,$(XPLATFORM)) -# 3.1 as exact name -XPLATFORM := $(strip $(wildcard /opt/xilinx/platforms/$(PLATFORM)/$(PLATFORM).xpfm)) -# 3.2 as a pattern -ifeq (,$(XPLATFORM)) -XPLATFORMS := $(wildcard /opt/xilinx/platforms/*/*.xpfm) -XPLATFORM := $(strip $(foreach p, $(XPLATFORMS), $(shell echo $(p) | awk '$$1 ~ /$(PLATFORM)/'))) -endif # 3.2 -endif # 3 -endif -endif - -define MSG_PLATFORM -No platform matched pattern '$(PLATFORM)'. -Available platforms are: $(XPLATFORMS) -To add more platform directories, set the PLATFORM_REPO_PATHS variable or point PLATFORM variable to the full path of platform .xpfm file. -endef -export MSG_PLATFORM - - -.PHONY: check_platform -check_platform: -ifeq (,$(XPLATFORM)) - @echo "$${MSG_PLATFORM}" && false -endif -#Check ends - -# device2xsa - create a filesystem friendly name from device name -# $(1) - full name of device -XPLATFORM = $(strip $(patsubst %.xpfm, % , $(shell basename $(PLATFORM)))) - - -# Cleaning stuff -RM = rm -f -RMDIR = rm -rf - -MV = mv -f -CP = cp -rf -ECHO:= @echo diff --git a/blas/L3/tests/gemm/streamingKernel/gemm_float/xrt.cfg b/blas/L3/tests/gemm/streamingKernel/gemm_float/xrt.cfg deleted file mode 100644 index 7215af63fa..0000000000 --- a/blas/L3/tests/gemm/streamingKernel/gemm_float/xrt.cfg +++ /dev/null @@ -1,7 +0,0 @@ -[Debug] -profile=true -timeline_trace=true -device_profile=true -data_transfer_trace=fine -[Emulation] -enable_shared_memory=false