-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathMakefile
More file actions
85 lines (69 loc) · 2.5 KB
/
Makefile
File metadata and controls
85 lines (69 loc) · 2.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
# Library and include path
SYSTEMC_HOME ?= $(HOME)/.local/systemc/current
LIB_DIR=-L$(SYSTEMC_HOME)/lib-linux64
INC_DIR=-I$(SYSTEMC_HOME)/include
LIB=-lsystemc -Wl,-rpath,$(SYSTEMC_HOME)/lib-linux64
# Build path and target
BUILD_DIR = ./build
OUTPUT_DIR = ./output
OBJ_DIR = $(BUILD_DIR)/objs
BINARY = $(OUTPUT_DIR)/ventus-sim.out
# Default build goal
default: $(BINARY)
# Build tools and flags
# check gcc version not less than 11
GCC_VERSION := $(shell g++ -dumpversion)
GE_GCC_11 := $(shell expr $(GCC_VERSION) \>= 11)
ifeq ($(GE_GCC_11), 1)
CXX := g++
else
GCC_PATH := $(GCC11_PATH)
CXX := $(GCC_PATH)/bin/g++ -L$(GCC_PATH)/lib64 -I$(GCC_PATH)/include -Wl,-rpath,$(GCC_PATH)/lib64
endif
CC = gcc
LD = $(CXX)
# Sources and objects
SRCS_CPP := $(shell find ./src -name '*.cpp')
SRCS_C := $(shell find ./src -name '*.c')
DEPS = $(SRCS_CPP:%.cpp=$(OBJ_DIR)/%.d)
DEPS += $(SRCS_C:%.c=$(OBJ_DIR)/%.d)
OBJS = $(SRCS_CPP:%.cpp=$(OBJ_DIR)/%.o)
OBJS += $(SRCS_C:%.c=$(OBJ_DIR)/%.o)
# Build options
CFLAGS += $(INC_DIR) -O0 -ggdb3 -MMD
#CFLAGS += -Wall -Wno-sign-compare
#CFLAGS += -fsanitize=address -fsanitize=undefined
CXXFLAGS += $(CFLAGS) -std=c++20
LDFLAGS += $(LIB_DIR) $(LIB) $(CFLAGS) -std=c++20
# Rule to compile cpp files
$(OBJ_DIR)/%.o: %.cpp
@echo + CXX $<
@mkdir -p $(dir $@)
@$(CXX) $(CXXFLAGS) -c -o $@ $<
# Rule to compile c files
$(OBJ_DIR)/%.o: %.c
@echo + CC $<
@mkdir -p $(dir $@)
@$(CC) $(CFLAGS) -c -o $@ $<
# Dependences
-include $(DEPS)
# Linking
$(BINARY): $(OBJS)
@echo + LD $@
@mkdir -p $(dir $@)
@$(LD) -o $@ $(OBJS) $(LDFLAGS)
RUNFLAGS = --numkernel 2 vecadd adv_vecadd/vecadd4x4.metadata adv_vecadd/vecadd4x4.data matadd multiblock/matadd/matadd.metadata multiblock/matadd/matadd.data --numcycle 1000000
RUNFLAGS_tensor484 = --numkernel 1 tensor tensor/wmma484fp32/wmma484fp32.metadata tensor/wmma484fp32/wmma484fp32.data --numcycle 2000
RUNFLAGS_tensor242 = --numkernel 1 tensor tensor/wmma424fp32/wmma424fp32.metadata tensor/wmma424fp32/wmma424fp32.data --numcycle 2000
RUNFLAGS_vectormma = --numkernel 1 tensor tensor/wmma484fp32/vectormma.metadata tensor/wmma484fp32/vectormma.data --numcycle 6000
RUNFLAGS_rodinia_bfs = --numkernel 1 bfs gpu-rodinia/bfs/4x8/BFS_1_0.metadata gpu-rodinia/bfs/4x8/BFS_1_0.data --numcycle 30000
run: $(BINARY)
./$(BINARY) $(RUNFLAGS)
gdb: $(BINARY)
gdb --tui -s $(BINARY) --args $(BINARY) $(RUNFLAGS)
clean:
-rm -rf $(BUILD_DIR)
-rm -rf output/*.vcd
.PHONY: init default clean run gdb
init:
git submodule init && git submodule update --recursive