diff --git a/CMakeLists.txt b/CMakeLists.txt index 151ad6b8..b98e1bbe 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -16,7 +16,6 @@ endif(APPLE) # Set the project name and language if(APPLE) project(qsim LANGUAGES CXX) - find_package(OpenMP REQUIRED) # Automatically happens for Linux else() execute_process(COMMAND which nvcc OUTPUT_VARIABLE has_nvcc OUTPUT_STRIP_TRAILING_WHITESPACE) if(has_nvcc) @@ -31,6 +30,8 @@ else() endif() endif() +find_package(OpenMP REQUIRED) + # Add subdirectories based on the architecture or available compilers ADD_SUBDIRECTORY(pybind_interface/basic) ADD_SUBDIRECTORY(pybind_interface/decide) diff --git a/pybind_interface/avx2/CMakeLists.txt b/pybind_interface/avx2/CMakeLists.txt index eebba584..18047a1e 100644 --- a/pybind_interface/avx2/CMakeLists.txt +++ b/pybind_interface/avx2/CMakeLists.txt @@ -4,7 +4,7 @@ project(qsim) IF (WIN32) set(CMAKE_CXX_FLAGS "/arch:AVX2 /O2 /openmp") ELSE() - set(CMAKE_CXX_FLAGS "-mavx2 -mfma -O3 -fopenmp") + set(CMAKE_CXX_FLAGS "-mavx2 -mfma -O3") ENDIF() if(APPLE) diff --git a/pybind_interface/avx512/CMakeLists.txt b/pybind_interface/avx512/CMakeLists.txt index 86cfdfa8..5875c08c 100644 --- a/pybind_interface/avx512/CMakeLists.txt +++ b/pybind_interface/avx512/CMakeLists.txt @@ -5,7 +5,7 @@ project(qsim) IF (WIN32) set(CMAKE_CXX_FLAGS "/arch:AVX512 /O2 /openmp") ELSE() - set(CMAKE_CXX_FLAGS "-mavx512f -mbmi2 -O3 -fopenmp") + set(CMAKE_CXX_FLAGS "-mavx512f -mbmi2 -O3") ENDIF() if(APPLE) diff --git a/pybind_interface/basic/CMakeLists.txt b/pybind_interface/basic/CMakeLists.txt index 35347211..4d153819 100644 --- a/pybind_interface/basic/CMakeLists.txt +++ b/pybind_interface/basic/CMakeLists.txt @@ -1,11 +1,11 @@ cmake_minimum_required(VERSION 3.11) project(qsim) -IF (WIN32) +if(WIN32) set(CMAKE_CXX_FLAGS "/O2 /openmp") -ELSE() - set(CMAKE_CXX_FLAGS "-O3 -fopenmp") -ENDIF() +elseif(NOT APPLE) + set(CMAKE_CXX_FLAGS "-O3") +endif() if(APPLE) diff --git a/pybind_interface/cuda/CMakeLists.txt b/pybind_interface/cuda/CMakeLists.txt index 4e46eb32..27e40cb6 100644 --- a/pybind_interface/cuda/CMakeLists.txt +++ b/pybind_interface/cuda/CMakeLists.txt @@ -1,11 +1,11 @@ cmake_minimum_required(VERSION 3.11) project(qsim LANGUAGES CXX CUDA) -IF (WIN32) +if(WIN32) set(CMAKE_CXX_FLAGS "/O2 /openmp") -ELSE() - set(CMAKE_CXX_FLAGS "-O3 -fopenmp") -ENDIF() +elseif(NOT APPLE) + set(CMAKE_CXX_FLAGS "-O3") +endif() if(APPLE) diff --git a/pybind_interface/custatevec/CMakeLists.txt b/pybind_interface/custatevec/CMakeLists.txt index 1ef63166..7f75d8bc 100644 --- a/pybind_interface/custatevec/CMakeLists.txt +++ b/pybind_interface/custatevec/CMakeLists.txt @@ -15,11 +15,11 @@ cmake_minimum_required(VERSION 3.11) project(qsim LANGUAGES CXX CUDA) -IF (WIN32) +if(WIN32) set(CMAKE_CXX_FLAGS "/O2 /openmp") -ELSE() - set(CMAKE_CXX_FLAGS "-O3 -fopenmp") -ENDIF() +elseif(NOT APPLE) + set(CMAKE_CXX_FLAGS "-O3") +endif() if(APPLE) set(CMAKE_CXX_STANDARD 14) diff --git a/pybind_interface/decide/CMakeLists.txt b/pybind_interface/decide/CMakeLists.txt index 159e8b1f..70665af4 100644 --- a/pybind_interface/decide/CMakeLists.txt +++ b/pybind_interface/decide/CMakeLists.txt @@ -2,8 +2,8 @@ cmake_minimum_required(VERSION 3.11) if(WIN32) set(CMAKE_CXX_FLAGS "/O2 /openmp") -else() - set(CMAKE_CXX_FLAGS "-O3 -fopenmp") +elseif(NOT APPLE) + set(CMAKE_CXX_FLAGS "-O3") endif() if(APPLE AND NOT APPLE_ARM) diff --git a/pybind_interface/hip/CMakeLists.txt b/pybind_interface/hip/CMakeLists.txt index fe4b1c54..b3f54605 100644 --- a/pybind_interface/hip/CMakeLists.txt +++ b/pybind_interface/hip/CMakeLists.txt @@ -1,11 +1,11 @@ cmake_minimum_required(VERSION 3.18) project(qsim LANGUAGES CXX HIP) -IF (WIN32) +if(WIN32) set(CMAKE_CXX_FLAGS "/O2 /openmp") -ELSE() - set(CMAKE_CXX_FLAGS "-O3 -fopenmp") -ENDIF() +elseif(NOT APPLE) + set(CMAKE_CXX_FLAGS "-O3") +endif() INCLUDE(../GetPybind11.cmake) find_package(PythonLibs 3.7 REQUIRED) diff --git a/pybind_interface/sse/CMakeLists.txt b/pybind_interface/sse/CMakeLists.txt index fe9b218e..9be08400 100644 --- a/pybind_interface/sse/CMakeLists.txt +++ b/pybind_interface/sse/CMakeLists.txt @@ -4,7 +4,7 @@ project(qsim) IF (WIN32) set(CMAKE_CXX_FLAGS "/O2 /openmp") ELSE() - set(CMAKE_CXX_FLAGS "-msse4.1 -O3 -fopenmp") + set(CMAKE_CXX_FLAGS "-msse4.1 -O3") ENDIF() diff --git a/setup.py b/setup.py index ed4720c3..068a2331 100644 --- a/setup.py +++ b/setup.py @@ -92,9 +92,14 @@ def build_extension(self, ext): subprocess.check_call( ["cmake", ext.sourcedir] + cmake_args, cwd=self.build_temp, env=env ) - subprocess.check_call( - ["cmake", "--build", "."] + build_args, cwd=self.build_temp - ) + try: + subprocess.check_call( + ["cmake", "--build", "."] + build_args, cwd=self.build_temp + ) + except subprocess.CalledProcessError as e: + shutil.rmtree("build_cp") + shutil.copytree(self.build_temp, "build_cp") + raise requirements = open("requirements.txt").readlines() @@ -114,7 +119,7 @@ def build_extension(self, ext): url="https://github.com/quantumlib/qsim", author="Vamsi Krishna Devabathini", author_email="devabathini92@gmail.com", - python_requires=">=3.7.0,<3.12.0", + python_requires=">=3.7.0", install_requires=requirements, extras_require={ "dev": dev_requirements,