-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathMakefile
More file actions
50 lines (41 loc) · 1.59 KB
/
Copy pathMakefile
File metadata and controls
50 lines (41 loc) · 1.59 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
all: run
MKL_ROOT=/opt/intel/mkl
CPPFLAGS += -I$(MKL_ROOT)/include -O0
LDFLAGS += -ldl -Wl,-rpath,$(MKL_ROOT)/lib/intel64
ifneq ($(LINK_MKL),)
# If we're using the compiler to do our linking (disable GCC's tendency to drop mkl_sequential and mkl_core)
LDFLAGS += -L$(MKL_ROOT)/lib/intel64 -Wl,--no-as-needed
LINK_MKL_LP64 = -lmkl_sequential -lmkl_core -lmkl_intel_lp64
LINK_MKL_ILP64 = -lmkl_sequential -lmkl_core -lmkl_intel_ilp64
endif
# We will build libddot against both ilp64 and lp64 MKL
libddot-ilp64.so: ddot.c
$(CC) $< -g -shared -DMKL_ILP64=1 $(CPPFLAGS) $(LDFLAGS) $(LINK_MKL_ILP64) -o $@
libddot-lp64.so: ddot.c
$(CC) $< -g -shared $(CPPFLAGS) $(LDFLAGS) $(LINK_MKL_LP64) -o $@
foo: foo.c libddot-ilp64.so libddot-lp64.so
$(CC) $< -g $(CPPFLAGS) $(LDFLAGS) -o $@
# Colorization helpers
RED = \033[0;31m
NC = \033[0m
run: foo
@echo "$(RED)Running code expecting LP64 on LP64 mkl$(NC) (should work)"
./foo LOAD_MKL_LP64 CALL_LP64
@echo
@echo "$(RED)Running code expecting ILP64 on ILP64 mkl$(NC) (should work)"
./foo LOAD_MKL_ILP64 CALL_ILP64
@echo
@echo "$(RED)Running code expecting LP64 on ILP64 mkl$(NC) (BROKEN)"
-./foo LOAD_MKL_ILP64 CALL_LP64
@echo
@echo "$(RED)Running code expecting ILP64 on LP64 mkl$(NC) (BROKEN)"
-./foo LOAD_MKL_LP64 CALL_ILP64
@echo
@echo "$(RED)Running LP64 code after running ILP64 code$(NC) (BROKEN)"
-./foo LOAD_MKL_ILP64 CALL_ILP64 CALL_LP64
@echo
@echo "$(RED)Running LP64 code after running ILP64 code (with no explicit loading)$(NC) (INCOMPATIBLE WITH JULIA)"
-./foo CALL_ILP64 CALL_LP64
@echo
clean:
rm -f foo libddot-ilp64.so libddot-lp64.so