diff --git a/CMakeLists.txt b/CMakeLists.txt index 1b12ee5..d91fe66 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.15...3.27) +cmake_minimum_required(VERSION 3.19...3.30) project(${SKBUILD_PROJECT_NAME} LANGUAGES C CXX) message(STATUS "Using CMake version: " ${CMAKE_VERSION}) @@ -19,6 +19,7 @@ if(JAX_FINUFFT_USE_OPENMP) set(FINUFFT_USE_OPENMP OFF) endif() else() + message(STATUS "jax_finufft: OpenMP support was not requested") set(FINUFFT_USE_OPENMP OFF) endif() @@ -44,6 +45,8 @@ else() set(FINUFFT_USE_CUDA OFF) endif() +set(FINUFFT_POSITION_INDEPENDENT_CODE ON) + # Add the FINUFFT project using the vendored version add_subdirectory("${CMAKE_CURRENT_LIST_DIR}/vendor/finufft") @@ -58,7 +61,8 @@ endif() # Build the CPU XLA bindings nanobind_add_module(jax_finufft_cpu ${CMAKE_CURRENT_LIST_DIR}/lib/jax_finufft_cpu.cc) -target_link_libraries(jax_finufft_cpu PRIVATE finufft_static) +target_link_libraries(jax_finufft_cpu PRIVATE finufft) +target_include_directories(jax_finufft_cpu PRIVATE ${FFTW_INCLUDE_DIRS}) install(TARGETS jax_finufft_cpu LIBRARY DESTINATION .) if(FINUFFT_USE_OPENMP) @@ -85,6 +89,6 @@ if(FINUFFT_USE_CUDA) ${CMAKE_CURRENT_LIST_DIR}/lib/kernels.cc.cu) target_include_directories(jax_finufft_gpu PUBLIC ${CUFINUFFT_INCLUDE_DIRS}) target_include_directories(jax_finufft_gpu PUBLIC ${CUFINUFFT_VENDORED_INCLUDE_DIRS}) - target_link_libraries(jax_finufft_gpu PRIVATE cufinufft_static) + target_link_libraries(jax_finufft_gpu PRIVATE cufinufft) install(TARGETS jax_finufft_gpu LIBRARY DESTINATION .) endif() diff --git a/pyproject.toml b/pyproject.toml index c9f81da..9052343 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -38,6 +38,7 @@ version_file = "src/jax_finufft/jax_finufft_version.py" [tool.cibuildwheel] skip = "pp* *-musllinux_* *-manylinux_i686" build-verbosity = 1 +config-settings = {"cmake.define.FINUFFT_ARCH_FLAGS" = ""} [tool.cibuildwheel.linux] before-all = "yum install -y fftw-devel" diff --git a/src/jax_finufft/options.py b/src/jax_finufft/options.py index ec08f77..55c4f60 100644 --- a/src/jax_finufft/options.py +++ b/src/jax_finufft/options.py @@ -40,6 +40,9 @@ class GpuMethod(IntEnum): @dataclass(frozen=True) class Opts: + + # These correspond to the default cufinufft options + # set in vendor/finufft/src/cuda/cufinufft.cu modeord: bool = False chkbnds: bool = True debug: DebugLevel = DebugLevel.Silent @@ -59,12 +62,12 @@ class Opts: gpu_upsampfac: float = 2.0 gpu_method: GpuMethod = 0 gpu_sort: bool = True - gpu_binsizex: int = -1 - gpu_binsizey: int = -1 - gpu_binsizez: int = -1 - gpu_obinsizex: int = -1 - gpu_obinsizey: int = -1 - gpu_obinsizez: int = -1 + gpu_binsizex: int = 0 + gpu_binsizey: int = 0 + gpu_binsizez: int = 0 + gpu_obinsizex: int = 0 + gpu_obinsizey: int = 0 + gpu_obinsizez: int = 0 gpu_maxsubprobsize: int = 1024 gpu_kerevalmeth: bool = True gpu_spreadinterponly: bool = False diff --git a/vendor/finufft b/vendor/finufft index 5189205..fffdaea 160000 --- a/vendor/finufft +++ b/vendor/finufft @@ -1 +1 @@ -Subproject commit 51892059a4b457a99a2569ac11e9e91cd2e289e7 +Subproject commit fffdaeacb10d5d055ce5b313868a7e981cea594b