PyCuAmpcor: Fix Makefile for standalone installation
Now working with .cpp files and pybind11 module setup.py step no longer neededLT1AB
parent
ca462283f3
commit
9457a34b4b
|
@ -59,8 +59,6 @@ You may also install PyCuAmpcor as a standalone package.
|
||||||
# edit Makefile to provide the correct gdal include path and gpu architecture to NVCCFLAGS
|
# edit Makefile to provide the correct gdal include path and gpu architecture to NVCCFLAGS
|
||||||
# call make to compile
|
# call make to compile
|
||||||
make
|
make
|
||||||
# install
|
|
||||||
python3 setup.py install
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## 3. User Guide
|
## 3. User Guide
|
||||||
|
|
|
@ -1,19 +1,30 @@
|
||||||
PROJECT = CUAMPCOR
|
CXX ?= g++
|
||||||
|
NVCC ?= nvcc
|
||||||
|
|
||||||
LDFLAGS = -lcuda -lcudart -lcufft -lgdal
|
CUDA_ROOT ?= $(dir $(shell which $(NVCC)))..
|
||||||
CXXFLAGS = -std=c++11 -fpermissive -DNDEBUG -fPIC -shared
|
|
||||||
NVCCFLAGS = -std=c++11 -m64 -DNDEBUG \
|
LDFLAGS = -L$(CUDA_ROOT)/lib64 -L$(CUDA_ROOT)/lib64/stubs -lcuda -lcudart -lcufft -lgdal
|
||||||
|
CXXFLAGS = -std=c++11 -fPIC -shared -I$(CUDA_ROOT)/include
|
||||||
|
NVCCFLAGS = -std=c++11 -m64 \
|
||||||
-gencode arch=compute_35,code=sm_35 \
|
-gencode arch=compute_35,code=sm_35 \
|
||||||
-gencode arch=compute_60,code=sm_60 \
|
-gencode arch=compute_60,code=sm_60 \
|
||||||
-Xcompiler -fPIC -shared -Wno-deprecated-gpu-targets \
|
-Xcompiler -fPIC -shared -Wno-deprecated-gpu-targets \
|
||||||
-ftz=false -prec-div=true -prec-sqrt=true \
|
-ftz=false -prec-div=true -prec-sqrt=true \
|
||||||
-I/usr/include/gdal
|
-I/usr/include/gdal
|
||||||
|
|
||||||
CXX=g++
|
CXXFLAGS += -O2 -DNDEBUG
|
||||||
NVCC=nvcc
|
NVCCFLAGS += -O2 -DNDEBUG
|
||||||
|
|
||||||
|
# pybind11 configuration
|
||||||
|
PYTHON ?= python3
|
||||||
|
PYTHON_CONFIG ?= python3-config
|
||||||
|
PYTHON_EXT_SUFFIX := $(shell "$(PYTHON_CONFIG)" --extension-suffix)
|
||||||
|
PYTHON_INCLUDES := $(shell "$(PYTHON)" -m pybind11 --includes) \
|
||||||
|
$(shell "$(PYTHON_CONFIG)" --includes)
|
||||||
|
|
||||||
DEPS = cudaUtil.h cudaError.h cuArrays.h GDALImage.h cuAmpcorParameter.h
|
DEPS = cudaUtil.h cudaError.h cuArrays.h GDALImage.h cuAmpcorParameter.h
|
||||||
OBJS = GDALImage.o cuArrays.o cuArraysCopy.o cuArraysPadding.o cuOverSampler.o \
|
OBJS = GDALImage.o cuArrays.o cuArraysCopy.o cuArraysPadding.o cuOverSampler.o \
|
||||||
|
cudaError.o cudaUtil.o \
|
||||||
cuSincOverSampler.o cuDeramp.o cuOffset.o \
|
cuSincOverSampler.o cuDeramp.o cuOffset.o \
|
||||||
cuCorrNormalization.o cuCorrNormalizationSAT.o cuCorrNormalizer.o \
|
cuCorrNormalization.o cuCorrNormalizationSAT.o cuCorrNormalizer.o \
|
||||||
cuAmpcorParameter.o cuCorrTimeDomain.o cuCorrFrequency.o \
|
cuAmpcorParameter.o cuCorrTimeDomain.o cuCorrFrequency.o \
|
||||||
|
@ -21,60 +32,16 @@ OBJS = GDALImage.o cuArrays.o cuArraysCopy.o cuArraysPadding.o cuOverSampler.o
|
||||||
|
|
||||||
all: pyampcor
|
all: pyampcor
|
||||||
|
|
||||||
GDALImage.o: GDALImage.cu $(DEPS)
|
pyampcor: PyCuAmpcor$(PYTHON_EXT_SUFFIX)
|
||||||
$(NVCC) $(NVCCFLAGS) -c -o $@ GDALImage.cu
|
|
||||||
|
|
||||||
cuArrays.o: cuArrays.cu $(DEPS)
|
PyCuAmpcor$(PYTHON_EXT_SUFFIX): PyCuAmpcor.cpp $(OBJS)
|
||||||
$(NVCC) $(NVCCFLAGS) -c -o $@ cuArrays.cu
|
$(CXX) $(CXXFLAGS) $(LDFLAGS) $(PYTHON_INCLUDES) $^ -o $@
|
||||||
|
|
||||||
cuArraysCopy.o: cuArraysCopy.cu $(DEPS)
|
%.o: %.cu $(DEPS)
|
||||||
$(NVCC) $(NVCCFLAGS) -c -o $@ cuArraysCopy.cu
|
$(NVCC) $(NVCCFLAGS) -c -o $@ $<
|
||||||
|
|
||||||
cuArraysPadding.o: cuArraysPadding.cu $(DEPS)
|
%.o: %.cpp $(DEPS)
|
||||||
$(NVCC) $(NVCCFLAGS) -c -o $@ cuArraysPadding.cu
|
$(CXX) $(CXXFLAGS) -c -o $@ $<
|
||||||
|
|
||||||
cuSincOverSampler.o: cuSincOverSampler.cu $(DEPS)
|
|
||||||
$(NVCC) $(NVCCFLAGS) -c -o $@ cuSincOverSampler.cu
|
|
||||||
|
|
||||||
cuOverSampler.o: cuOverSampler.cu $(DEPS)
|
|
||||||
$(NVCC) $(NVCCFLAGS) -c -o $@ cuOverSampler.cu
|
|
||||||
|
|
||||||
cuDeramp.o: cuDeramp.cu $(DEPS)
|
|
||||||
$(NVCC) $(NVCCFLAGS) -c -o $@ cuDeramp.cu
|
|
||||||
|
|
||||||
cuOffset.o: cuOffset.cu $(DEPS)
|
|
||||||
$(NVCC) $(NVCCFLAGS) -c -o $@ cuOffset.cu
|
|
||||||
|
|
||||||
cuCorrNormalization.o: cuCorrNormalization.cu $(DEPS)
|
|
||||||
$(NVCC) $(NVCCFLAGS) -c -o $@ cuCorrNormalization.cu
|
|
||||||
|
|
||||||
cuCorrNormalizationSAT.o: cuCorrNormalizationSAT.cu $(DEPS)
|
|
||||||
$(NVCC) $(NVCCFLAGS) -c -o $@ cuCorrNormalizationSAT.cu
|
|
||||||
|
|
||||||
cuCorrNormalizer.o: cuCorrNormalizer.cu $(DEPS)
|
|
||||||
$(NVCC) $(NVCCFLAGS) -c -o $@ cuCorrNormalizer.cu
|
|
||||||
|
|
||||||
cuAmpcorParameter.o: cuAmpcorParameter.cu
|
|
||||||
$(NVCC) $(NVCCFLAGS) -c -o $@ cuAmpcorParameter.cu
|
|
||||||
|
|
||||||
cuCorrTimeDomain.o: cuCorrTimeDomain.cu $(DEPS)
|
|
||||||
$(NVCC) $(NVCCFLAGS) -c -o $@ cuCorrTimeDomain.cu
|
|
||||||
|
|
||||||
cuCorrFrequency.o: cuCorrFrequency.cu $(DEPS) cuCorrFrequency.h
|
|
||||||
$(NVCC) $(NVCCFLAGS) -c -o $@ cuCorrFrequency.cu
|
|
||||||
|
|
||||||
cuAmpcorChunk.o: cuAmpcorChunk.cu cuAmpcorUtil.h $(DEPS)
|
|
||||||
$(NVCC) $(NVCCFLAGS) -c -o $@ cuAmpcorChunk.cu
|
|
||||||
|
|
||||||
cuAmpcorController.o: cuAmpcorController.cu
|
|
||||||
$(NVCC) $(NVCCFLAGS) -c -o $@ cuAmpcorController.cu
|
|
||||||
|
|
||||||
cuEstimateStats.o: cuEstimateStats.cu
|
|
||||||
$(NVCC) $(NVCCFLAGS) -c -o $@ cuEstimateStats.cu
|
|
||||||
|
|
||||||
|
|
||||||
pyampcor: $(OBJS)
|
|
||||||
rm -f PyCuAmpcor.cpp && python3 setup.py build_ext --inplace
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -rf *.o *so build *~ PyCuAmpcor.cpp *.dat
|
rm -rf *.o *.so build *~
|
||||||
|
|
|
@ -1,28 +0,0 @@
|
||||||
#
|
|
||||||
# Implementation: python setup.py build_ext --inplace
|
|
||||||
# Generates PyCuAmpcor.xxx.so (where xxx is just some local sys-arch information).
|
|
||||||
# Note you need to run your makefile *FIRST* to generate the cuAmpcor.o object.
|
|
||||||
#
|
|
||||||
|
|
||||||
from distutils.core import setup
|
|
||||||
from distutils.extension import Extension
|
|
||||||
from Cython.Build import cythonize
|
|
||||||
|
|
||||||
import numpy
|
|
||||||
|
|
||||||
setup( name = 'PyCuAmpcor',
|
|
||||||
version = '2.0.0',
|
|
||||||
ext_modules = cythonize(Extension(
|
|
||||||
"PyCuAmpcor",
|
|
||||||
sources=['PyCuAmpcor.pyx'],
|
|
||||||
include_dirs=['/usr/local/cuda/include', numpy.get_include()], # REPLACE WITH YOUR PATH TO YOUR CUDA LIBRARY HEADERS
|
|
||||||
extra_compile_args=['-fPIC','-fpermissive'],
|
|
||||||
extra_objects=['GDALImage.o','cuAmpcorChunk.o','cuAmpcorParameter.o','cuCorrFrequency.o',
|
|
||||||
'cuCorrNormalization.o','cuCorrTimeDomain.o','cuArraysCopy.o',
|
|
||||||
'cuArrays.o','cuArraysPadding.o','cuOffset.o','cuOverSampler.o',
|
|
||||||
'cuSincOverSampler.o', 'cuDeramp.o','cuAmpcorController.o','cuEstimateStats.o'],
|
|
||||||
extra_link_args=['-L/usr/local/cuda/lib64',
|
|
||||||
'-L/usr/lib64/nvidia',
|
|
||||||
'-lcuda','-lcudart','-lcufft','-lgdal'], # REPLACE FIRST PATH WITH YOUR PATH TO YOUR CUDA LIBRARIES
|
|
||||||
language='c++'
|
|
||||||
)))
|
|
Loading…
Reference in New Issue