
CC = nvcc
CFLAGS = 
fPIC_flag = -Xcompiler=-fPIC

obj_files = conv2d_bias_few_channels_0.obj fused_elementwise_425.obj layernorm_3.obj gemm_rcr_bias_permute_5.obj split_7.obj reshape_8.obj mem_eff_attention_11.obj gemm_rcr_bias_add_13.obj layernorm_15.obj gemm_rcr_bias_gelu_16.obj gemm_rcr_bias_add_17.obj gemm_rcr_bias_409.obj permute_411.obj split_412.obj squeeze_413.obj mem_eff_attention_418.obj reshape_426.obj gemm_rcr_bias_421.obj layernorm_422.obj gemm_rcr_bias_gelu_423.obj gemm_rcr_bias_add_424.obj expand_415_constant_folding.obj gemm_rcr_bias_416_constant_folding.obj constants.obj model_container_base.obj debug_utility.obj model_container.obj model_interface.obj utility.obj

%.obj : %.cu
	nvcc -t=0 -DCUTLASS_ENABLE_TENSOR_CORE_MMA=1 -w -gencode=arch=compute_80,code=[sm_80,compute_80] -O3 -std=c++17 --expt-relaxed-constexpr -DCUTLASS_DEBUG_TRACE_LEVEL=0 -DNDEBUG --use_fast_math -DAIT_USE_FAST_MATH=1 -Xcompiler=-fPIC -Xcompiler=-Wconversion -Xcompiler=-fno-strict-aliasing -Xcompiler -fvisibility=hidden -I/srv/home/AITemplate/venv/lib/python3.12/site-packages/aitemplate/3rdparty/../static/include/kernels -I/srv/home/AITemplate/venv/lib/python3.12/site-packages/aitemplate/3rdparty/cutlass/include -I/srv/home/AITemplate/venv/lib/python3.12/site-packages/aitemplate/3rdparty/cutlass/tools/util/include -I/srv/home/AITemplate/venv/lib/python3.12/site-packages/aitemplate/3rdparty/cutlass/examples/35_gemm_softmax -I/srv/home/AITemplate/venv/lib/python3.12/site-packages/aitemplate/3rdparty/cutlass/examples/41_fused_multi_head_attention -I/srv/home/AITemplate/venv/lib/python3.12/site-packages/aitemplate/3rdparty/cutlass/examples/45_dual_gemm -I/srv/home/AITemplate/venv/lib/python3.12/site-packages/aitemplate/3rdparty/cutlass/../../backend/cuda/attention/src/./ -I/srv/home/AITemplate/venv/lib/python3.12/site-packages/aitemplate/3rdparty/cutlass/../../backend/cuda/attention/src/fmha -c -o $@ $<
%.obj : %.bin
	ld -r -b binary -o $@ $< && objcopy --rename-section .data=.lrodata,alloc,load,readonly,data,contents $@ $@

.PHONY: all clean clean_constants
all: test.so

test.so: $(obj_files)
	$(CC) -shared $(fPIC_flag) $(CFLAGS) -o $@ $(obj_files)



clean:
	rm -f *.obj test.so

clean_constants:
	rm -f constants.bin