本人从事地震勘探的科研工作,在Ubuntu系统中用CUDA、SU、MPI和Madagascar做C语言的混合编程。多语言混合编程,关键之处在于Makefile文件的配置。在此给出一个简单的示例,供大家参考。
Makefile文件:
# # Makefile for GPU program based on SU,Madagascar,MPI and CUDA
# Home path
SU_HOME = /home/xx/su
SU_HOME1 = /home/xx/su/src/Complex
MPI_HOME = /home/xx/openmpi
CUDA_HOME = /home/xx/cuda9
MADA_HOME = /home/xx/madagascar2.0.1/madagascar-2.0
# Which compiler
NVCC=nvcc
# Include path
IFLAGS = -I$(SU_HOME)/include -I$(SU_HOME1)/include \
-I$(CUDA_HOME)/include -I$(CUDA_HOME)/samples/common/inc \
-I$(MPI_HOME)/include -I$(MADA_HOME)/include
# Lib path
LFLAGS = -L$(SU_HOME)/lib -L$(SU_HOME1)/lib -L$(MPI_HOME)/lib \
-L$(CUDA_HOME)/lib64 -L$(MADA_HOME)/lib
LD = -lsu -lpar -lcwp -lm -lcublas -lcurand -lcufft -lcusparse -llapack \
-lgomp -Xcompiler -fopenmp -lmpi -lrsf
CU_APPS=fdm2d_tti_psa_gpu_mpi
all: ${CU_APPS}
%: %.cu
-$(NVCC) -O2 -arch=sm_60 $(@F).cu -o $@ $(LD) $(LFLAGS) $(IFLAGS)
clean:
rm -f ${CU_APPS}
希望对大家有用,欢迎留言。