PyNorch/build/Makefile

51 lines
1.4 KiB
Makefile
Raw Permalink Normal View History

2024-04-26 00:33:28 -03:00
# Compiler
2024-04-29 12:35:57 -03:00
CC = g++
NVCC = nvcc
2024-05-24 18:19:39 -03:00
MPI_CC = mpicc
2024-04-26 00:33:28 -03:00
# Compiler flags
2024-04-29 19:21:10 -03:00
CFLAGS = -Wall -Wextra -std=c++11
2024-04-29 12:35:57 -03:00
NVCCFLAGS = -std=c++11
2024-05-24 15:12:53 -03:00
MPICC_FLAGS = -Wall -Wextra -std=c++11
# CUDA flags and libraries
CUDAFLAGS = -arch=sm_75
CUDALIBS = -I/usr/local/cuda/include -L/usr/local/cuda/lib64 -lcudart -lcuda
# MPI flags and libraries
DISTRIBUTEDLIBS = -lmpi_cxx -lnccl -lmpi
2024-04-29 02:20:31 -03:00
2024-04-29 12:35:57 -03:00
# Directories
2024-04-30 13:22:27 -03:00
SRCDIR = ../norch/csrc
2024-04-29 12:35:57 -03:00
BUILDDIR = ../build
2024-05-11 01:45:59 -03:00
TARGET = ../norch/libtensor.so
2024-04-26 00:33:28 -03:00
2024-04-29 12:35:57 -03:00
# Files
2024-05-24 15:12:53 -03:00
SRCS := $(filter-out $(SRCDIR)/distributed.cpp, $(wildcard $(SRCDIR)/*.cpp))
2024-04-29 12:35:57 -03:00
CU_SRCS = $(wildcard $(SRCDIR)/*.cu)
OBJS = $(patsubst $(SRCDIR)/%.cpp, $(BUILDDIR)/%.o, $(SRCS))
CU_OBJS = $(patsubst $(SRCDIR)/%.cu, $(BUILDDIR)/%.cu.o, $(CU_SRCS))
2024-05-24 15:12:53 -03:00
MPI_SRCS := $(SRCDIR)/distributed.cpp
MPI_OBJS := $(BUILDDIR)/distributed.o
2024-04-26 00:33:28 -03:00
2024-04-29 12:35:57 -03:00
# Rule to build the target
2024-05-24 15:12:53 -03:00
$(TARGET): $(OBJS) $(MPI_OBJS) $(CU_OBJS)
2024-05-24 18:19:39 -03:00
$(NVCC) --shared -o $(TARGET) $(OBJS) $(MPI_OBJS) $(CU_OBJS) $(CUDALIBS) $(DISTRIBUTEDLIBS)
2024-04-26 00:33:28 -03:00
2024-04-29 12:35:57 -03:00
# Rule to compile C++ source files
$(BUILDDIR)/%.o: $(SRCDIR)/%.cpp
2024-04-29 19:21:10 -03:00
$(CC) $(CFLAGS) -fPIC -c $< -o $@ $(CUDALIBS)
2024-04-29 02:20:31 -03:00
2024-04-29 12:35:57 -03:00
# Rule to compile CUDA source files
$(BUILDDIR)/%.cu.o: $(SRCDIR)/%.cu
$(NVCC) $(NVCCFLAGS) $(CUDAFLAGS) -Xcompiler -fPIC -c $< -o $@
2024-04-26 00:33:28 -03:00
2024-05-24 15:12:53 -03:00
# Rule to compile distributed.cpp with mpiCC
$(BUILDDIR)/distributed.o: $(SRCDIR)/distributed.cpp
$(MPI_CC) $(MPICC_FLAGS) -fPIC -c $< -o $@
2024-04-26 00:33:28 -03:00
# Clean rule
clean:
2024-04-29 12:35:57 -03:00
rm -f $(BUILDDIR)/*.o $(TARGET)