INC_D = -I/usr/local/cuda/9.1.85.3/include 
LIB_D = -L/usr/local/cuda/9.1.85.3/lib64
LIB_L = -lcusparse -lcublas -lcudart -ldl

CC = icc
MPICC = mpicc

F90 = ifort
MPIF90 = mpif90
F90FLAGS = -O3 -xCOMMON-AVX512


# Compilation
seq:
	$(CC) -c interface_amgx.c -I/usr/local/amgx/AMGX/include
	$(F90) $(F90FLAGS) interface_amgx_fortran.f90 -c
	$(F90) $(F90FLAGS) solve_poisson.f90 -c 
	$(F90) $(F90FLAGS) solve_poisson.o interface_amgx.o interface_amgx_fortran.o -o seq_poisson $(LIB_D) $(LIB_L) -L/usr/local/amgx/AMGX/lib -lamgxsh -Wl,-rpath=/usr/local/amgx/AMGX/lib

mpi:
	$(MPICC) -c interface_amgx.c -DMPI -I/usr/local/amgx/AMGX/include
	$(MPIF90) $(F90FLAGS) interface_amgx_fortran.f90 -c
	$(MPIF90) $(F90FLAGS) mpi_solve_poisson.f90 -c 
	$(MPIF90) $(F90FLAGS) mpi_solve_poisson.o interface_amgx.o interface_amgx_fortran.o -o mpi_poisson $(LIB_D) $(LIB_L) -L/usr/local/amgx/AMGX/lib -lamgxsh -Wl,-rpath=/usr/local/amgx/AMGX/lib

# All
all: seq_poisson mpi_poisson

# Clean
clean:
	rm -f seq_poisson mpi_poisson
	rm -f *.o *.mod
