1# /* ----------------------------------------------------------------------
2#  Generic Linux Makefile for CUDA
3#     - Change CUDA_ARCH for your GPU
4# ------------------------------------------------------------------------- */
5
6# which file will be copied to Makefile.lammps
7
8EXTRAMAKE = Makefile.lammps.standard
9
10ifeq ($(CUDA_HOME),)
11CUDA_HOME = /usr/local/cuda
12endif
13
14NVCC = nvcc
15
16# obsolete hardware. not supported by current drivers anymore.
17#CUDA_ARCH = -arch=sm_13
18#CUDA_ARCH = -arch=sm_10 -DCUDA_PRE_THREE
19
20# Fermi hardware
21#CUDA_ARCH = -arch=sm_20
22#CUDA_ARCH = -arch=sm_21
23
24# Kepler hardware
25#CUDA_ARCH = -arch=sm_30
26#CUDA_ARCH = -arch=sm_32
27#CUDA_ARCH = -arch=sm_35
28#CUDA_ARCH = -arch=sm_37
29
30# Maxwell hardware
31CUDA_ARCH = -arch=sm_50
32#CUDA_ARCH = -arch=sm_52
33
34# Pascal hardware
35#CUDA_ARCH = -arch=sm_60
36#CUDA_ARCH = -arch=sm_61
37
38# Volta hardware
39#CUDA_ARCH = -arch=sm_70
40
41# Turing hardware
42#CUDA_ARCH = -arch=sm_75
43
44# this setting should match LAMMPS Makefile
45# one of LAMMPS_SMALLBIG (default), LAMMPS_BIGBIG and LAMMPS_SMALLSMALL
46
47LMP_INC = -DLAMMPS_SMALLBIG
48
49# precision for GPU calculations
50# -D_SINGLE_SINGLE  # Single precision for all calculations
51# -D_DOUBLE_DOUBLE  # Double precision for all calculations
52# -D_SINGLE_DOUBLE  # Accumulation of forces, etc. in double
53
54CUDA_PRECISION = -D_SINGLE_DOUBLE
55
56CUDA_INCLUDE = -I$(CUDA_HOME)/include
57CUDA_LIB = -L$(CUDA_HOME)/lib64 -L$(CUDA_HOME)/lib64/stubs -L../../src/STUBS -lmpi_stubs
58CUDA_OPTS = -DUNIX -O3 --use_fast_math $(LMP_INC) -Xcompiler -fPIC
59
60CUDR_CPP = g++ -DMPI_GERYON -DUCL_NO_EXIT -fPIC -I../../src/STUBS -std=c++11
61CUDR_OPTS = -O2 $(LMP_INC) # -xHost -no-prec-div -ansi-alias
62
63BIN_DIR = ./
64OBJ_DIR = ./
65LIB_DIR = ./
66AR = ar
67BSH = /bin/sh
68
69# GPU binning not recommended for most modern GPUs
70CUDPP_OPT = #-DUSE_CUDPP -Icudpp_mini
71
72include Nvidia.makefile
73
74