-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathMakefile
More file actions
61 lines (50 loc) · 2.5 KB
/
Makefile
File metadata and controls
61 lines (50 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
CXX = dpcpp
CXXFLAGS = -Wall -std=c++20
SYCLFLAGS = -fsycl
SYCLCUDAFLAGS = -fsycl-targets=nvptx64-nvidia-cuda
OPTFLAGS = -O3
IFLAGS = -I ./include
LFLAGS = -L ./test/target/release -lblake3_test -lpthread
BLAKE3_SIMD_LANES_FLAGS = -DBLAKE3_SIMD_LANES=$(shell echo $(or $(BLAKE3_SIMD_LANES),4)) # allowed values from set {2, 4, 8, 16}; default set to 4
all: test_blake3
test/target/release/libblake3_test.a: test/src/lib.rs
cd test; cargo build --release --lib -q
test/a.out: test/src/main.cpp include/*.hpp
$(CXX) $(CXXFLAGS) $(SYCLFLAGS) $(BLAKE3_SIMD_LANES_FLAGS) $< $(IFLAGS) $(LFLAGS) -o $@
test_blake3: test/target/release/libblake3_test.a test/a.out
./test/a.out
clean:
cd test; cargo clean
find . -name 'a.out' -o -name '*.o' | xargs rm -f
format:
find . -name '*.cpp' -o -name '*.hpp' | xargs clang-format -i --style=Mozilla
bench/a.out: bench/main.cpp include/*.hpp
$(CXX) $(CXXFLAGS) $(SYCLFLAGS) $(OPTFLAGS) $(IFLAGS) $(BLAKE3_SIMD_LANES_FLAGS) $< -o $@
benchmark: bench/a.out
./bench/a.out
aot_cpu:
@if lscpu | grep -q 'avx512'; then \
echo "Using avx512"; \
$(CXX) $(CXXFLAGS) $(SYCLFLAGS) $(OPTFLAGS) $(IFLAGS) $(BLAKE3_SIMD_LANES_FLAGS) -fsycl-targets=spir64_x86_64 -Xs "-march=avx512" bench/main.cpp -o bench/a.out; \
elif lscpu | grep -q 'avx2'; then \
echo "Using avx2"; \
$(CXX) $(CXXFLAGS) $(SYCLFLAGS) $(OPTFLAGS) $(IFLAGS) $(BLAKE3_SIMD_LANES_FLAGS) -fsycl-targets=spir64_x86_64 -Xs "-march=avx2" bench/main.cpp -o bench/a.out; \
elif lscpu | grep -q 'avx'; then \
echo "Using avx"; \
$(CXX) $(CXXFLAGS) $(SYCLFLAGS) $(OPTFLAGS) $(IFLAGS) $(BLAKE3_SIMD_LANES_FLAGS) -fsycl-targets=spir64_x86_64 -Xs "-march=avx" bench/main.cpp -o bench/a.out; \
elif lscpu | grep -q 'sse4.2'; then \
echo "Using sse4.2"; \
$(CXX) $(CXXFLAGS) $(SYCLFLAGS) $(OPTFLAGS) $(IFLAGS) $(BLAKE3_SIMD_LANES_FLAGS) -fsycl-targets=spir64_x86_64 -Xs "-march=sse4.2" bench/main.cpp -o bench/a.out; \
else \
echo "Can't AOT compile using avx, avx2, avx512 or sse4.2"; \
fi
./bench/a.out
aot_gpu:
# you may want to replace `device` identifier with `0x3e96` if you're targeting *Intel(R) UHD Graphics P630*
#
# otherwise, let it be what it's if you're targeting *Intel(R) Iris(R) Xe MAX Graphics*
$(CXX) $(CXXFLAGS) $(SYCLFLAGS) $(OPTFLAGS) $(IFLAGS) $(BLAKE3_SIMD_LANES_FLAGS) -fsycl-targets=spir64_gen -Xs "-device 0x4905" bench/main.cpp -o bench/a.out
./bench/a.out
cuda:
clang++ $(CXXFLAGS) $(SYCLFLAGS) $(OPTFLAGS) $(SYCLCUDAFLAGS) $(IFLAGS) $(BLAKE3_SIMD_LANES_FLAGS) bench/main.cpp -o bench/a.out
./bench/a.out