#nonw HOST_NAME=$(shell hostname) SRC=$(wildcard src/*.c) SRC+=$(wildcard src/*.cu) HEAD=$(wildcard head/*.h) OBJ=$(patsubst src/%c,obj/%o, $(SRC) ) OBJ:=$(patsubst src/%cu,obj/%o, $(OBJ) ) all: default ifneq ($(shell which hipcc),) # HIP compoler #ifndef MPICH #$(error env MPICH doesn't exist , MPI_PATH has wrong value) #endif #ifndef HIPCC #$(error env HIP doesn't exist , DEV_PATH has wrong value) #endif #MPI_PATH=/opt/hpc/software/mpi/hpcx/v2.4.1/ MPI_PATH=/opt/hpc/software/mpi/hpcx/v2.7.4/gcc-7.3.1/ DEV_PATH=/opt/rocm/hip/ DEV=hipcc HOST=mpicxx OPT_Commen=-O3 OPT_Host=-c -std=c99 -I $(DEV_PATH)/include -I $(DEV_PATH)/include/hip/hcc_detail/cuda -D __HIP_PLATFORM_HCC__ -D __HIPCC__ OPT_Host+= $(OPT_Commen) OPT_Dev=-c -I /usr/include/x86_64-linux-gnu/mpich OPT_Dev+=$(OPT_Commen) SRC:=$(patsubst src/%.c,src_hip/%.c, $(SRC)) SRC:=$(patsubst src/%.cu,src_hip/%.cpp, $(SRC)) HEAD:=$(patsubst head/%.h,head_hip/%.h, $(HEAD)) .PRECIOUS : %.o %_hip.c %_hip.cpp %_hip.h opencfd_hip.c : opencfd.c hipify-perl $< > $@ opencfd.o : opencfd_hip.c $(HEAD) $(HOST) $(OPT_Host) -I head_hip/ -o opencfd.o opencfd_hip.c hip_file : $(HEAD) $(SRC) head_hip/%.h : head/%.h @if [ ! -e "head_hip" ] ; then mkdir head_hip ; fi hipify-perl $< > $@ src_hip/%.c : src/%.c @if [ ! -e "src_hip" ] ; then mkdir src_hip ; fi hipify-perl $< > $@ src_hip/%.cpp : src/%.cu @if [ ! -e "src_hip" ] ; then mkdir src_hip ; fi hipify-perl $< > $@ src_hip/%.cpp : ana/%.c @if [ ! -e "src_hip" ] ; then mkdir src_hip ; fi hipify-perl $< > $@ src_hip/%.cpp : ana/%.cu @if [ ! -e "src_hip" ] ; then mkdir src_hip ; fi hipify-perl $< > $@ obj/%.o : src_hip/%.c head_hip/%.h @if [ ! -e "obj" ] ; then mkdir obj ; fi $(HOST) $(OPT_Host) -I head_hip/ $< -o $@ obj/%.o : src_hip/%.cpp head_hip/%.h @if [ ! -e "obj" ] ; then mkdir obj ; fi $(DEV) $(OPT_Dev) -I head_hip/ $< -o $@ clean: rm -f *.o *.out obj/*.o obj/*.a src_hip/* head_hip/* opencfd_hip.c else #nvcc compiler MPI_PATH=/usr/ #MPI_PATH=/home/dglin/intel/compilers_and_libraries_2019.4.243/linux/mpi/intel64/ DEV_PATH=/usr/local/cuda-11.6/ #ifndef MPICH #$(error env MPICH doesn't exist , MPI_PATH has wrong value) #endif #ifndef CUDA #$(error env CUDA doesn't exist , DEV_PATH has wrong value) #endif # # #MPI_PATH=$(MPICH) #DEV_PATH=$(CUDA) DEV=nvcc HOST=$(MPI_PATH)/bin/mpicc OPT_Commen=-g OPT_Host=-c -std=c99 -I $(DEV_PATH)/include OPT_Host+= $(OPT_Commen) OPT_Dev=-dc -I /usr/include/x86_64-linux-gnu/mpich OPT_Dev+=$(OPT_Commen) -G -code=sm_75 -arch=compute_75 opencfd.o : opencfd.c $(HOST) $(OPT_Host) -I head/ -o opencfd.o opencfd.c obj/%.o : src/%.c head/%.h @if [ ! -e "obj" ] ; then mkdir obj ; fi $(HOST) $(OPT_Host) -I head/ $< -o $@ obj/%.o : src/%.cu head/%.h @if [ ! -e "obj" ] ; then mkdir obj ; fi $(DEV) $(OPT_Dev) -I head/ $< -o $@ clean: rm -f *.o *.out obj/*.o obj/*.a endif default : opencfd.o obj/libocfd.a $(DEV) -O3 -o opencfd-scu.out opencfd.o -L obj -locfd -L $(MPI_PATH)/lib -lmpi -lm -lpthread obj/libocfd.a : $(OBJ) ar -crv obj/libocfd.a $(OBJ) ZIP_EXIST=0 zip : @if [ -e "src_cuda.zip" ] ; then rm src_cuda.zip ; echo "rm src_cuda.zip"; fi zip --quiet -r src_cuda.zip head/ src/ test/ opencfd.c makefile README echo: @echo $(HOST_NAME) @echo $(SRC) @echo $(OBJ) @echo $(HEAD) @echo $(A)