@@ -20,13 +20,37 @@ if(CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "x86_64" OR CMAKE_HOST_SYSTEM_PROCESSOR
20
20
endif ()
21
21
endif ()
22
22
23
- set (AER_SIMULATOR_SOURCES "bindings.cc" "${SIMD_SOURCE_FILE} " )
24
- basic_pybind11_add_module(controller_wrappers "${AER_SIMULATOR_SOURCES} " )
23
+ macro (configure_target target_name)
24
+ target_include_directories (${target_name} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
25
+ PRIVATE ${AER_SIMULATOR_CPP_SRC_DIR}
26
+ PRIVATE ${AER_SIMULATOR_CPP_EXTERNAL_LIBS} )
27
+ target_link_libraries (${target_name} ${AER_LIBRARIES} )
28
+ target_compile_definitions (${target_name} PRIVATE ${AER_COMPILER_DEFINITIONS} )
29
+ install (TARGETS ${target_name} LIBRARY DESTINATION qiskit_aer/backends)
30
+ endmacro ()
25
31
32
+ # Build the CPU backend
33
+ set (BACKEND_MODULE_NAME "controller_wrappers_cpu" )
34
+ configure_file (bindings.cc.in bindings_cpu.cc)
35
+ basic_pybind11_add_module(controller_wrappers_cpu bindings_cpu.cc "${SIMD_SOURCE_FILE} " )
36
+
37
+ if (DEFINED SIMD_SOURCE_FILE)
38
+ string (REPLACE ";" " " SIMD_FLAGS "${SIMD_FLAGS_LIST} " )
39
+ set_source_files_properties (${SIMD_SOURCE_FILE} PROPERTIES COMPILE_FLAGS "${SIMD_FLAGS} " )
40
+ endif ()
41
+
42
+ set_target_properties (controller_wrappers_cpu PROPERTIES COMPILE_FLAGS "${AER_COMPILER_FLAGS} " )
43
+ configure_target(controller_wrappers_cpu)
44
+
45
+ # Build the CUDA backend
26
46
if (AER_THRUST_BACKEND STREQUAL "CUDA" )
47
+ set (BACKEND_MODULE_NAME "controller_wrappers_cuda" )
48
+ configure_file (bindings.cc.in bindings_cuda.cc)
49
+ basic_pybind11_add_module(controller_wrappers_cuda bindings_cuda.cc "${SIMD_SOURCE_FILE} " )
50
+
27
51
include (nvcc_add_compiler_options)
28
- set_source_files_properties (bindings .cc PROPERTIES LANGUAGE CUDA)
29
- set_source_files_properties (bindings .cc PROPERTIES COMPILE_FLAGS "${CUDA_NVCC_FLAGS} " )
52
+ set_source_files_properties (bindings_cuda .cc PROPERTIES LANGUAGE CUDA)
53
+ set_source_files_properties (bindings_cuda .cc PROPERTIES COMPILE_FLAGS "${CUDA_NVCC_FLAGS} " )
30
54
31
55
if (DEFINED SIMD_SOURCE_FILE)
32
56
set_source_files_properties (${SIMD_SOURCE_FILE} PROPERTIES LANGUAGE CUDA)
@@ -36,34 +60,29 @@ if(AER_THRUST_BACKEND STREQUAL "CUDA")
36
60
37
61
string (STRIP ${AER_COMPILER_FLAGS} AER_COMPILER_FLAGS_STRIPPED)
38
62
nvcc_add_compiler_options(${AER_COMPILER_FLAGS_STRIPPED} AER_COMPILER_FLAGS_OUT)
39
- set_target_properties (controller_wrappers PROPERTIES COMPILE_FLAGS "${AER_COMPILER_FLAGS_OUT} " )
63
+ set_target_properties (controller_wrappers_cuda PROPERTIES COMPILE_FLAGS "${AER_COMPILER_FLAGS_OUT} " )
40
64
enable_language (CUDA)
65
+ configure_target(controller_wrappers_cuda)
66
+ # Build the ROCm backend
41
67
elseif (AER_THRUST_BACKEND STREQUAL "ROCM" )
68
+ set (BACKEND_MODULE_NAME "controller_wrappers_rocm" )
69
+ configure_file (bindings.cc.in bindings_rocm.cc)
70
+ basic_pybind11_add_module(controller_wrappers_rocm bindings_rocm.cc "${SIMD_SOURCE_FILE} " )
42
71
43
72
if (NOT DEFINED SIMD_SOURCE_FILE)
44
73
message (FATAL_ERROR "ROCm supported target machines are expected to be SIMD-enabled." )
45
74
endif ()
46
75
47
76
set_source_files_properties (
48
- bindings .cc
77
+ bindings_rocm .cc
49
78
${SIMD_SOURCE_FILE}
50
79
PROPERTIES LANGUAGE CXX)
51
80
52
- target_compile_options (controller_wrappers PRIVATE ${ROCM_EXTRA_FLAGS} ${SIMD_FLAGS_LIST} )
53
- target_compile_definitions (controller_wrappers PRIVATE ${ROCM_EXTRA_DEFS} ${AER_COMPILER_DEFINITIONS} )
54
- set_target_properties (controller_wrappers PROPERTIES COMPILE_FLAGS "${AER_COMPILER_FLAGS} " )
55
- else ()
56
- if (DEFINED SIMD_SOURCE_FILE)
57
- string (REPLACE ";" " " SIMD_FLAGS "${SIMD_FLAGS_LIST} " )
58
- set_source_files_properties (${SIMD_SOURCE_FILE} PROPERTIES COMPILE_FLAGS "${SIMD_FLAGS} " )
59
- endif ()
60
- set_target_properties (controller_wrappers PROPERTIES COMPILE_FLAGS "${AER_COMPILER_FLAGS} " )
81
+ target_compile_options (controller_wrappers_rocm PRIVATE ${ROCM_EXTRA_FLAGS} ${SIMD_FLAGS_LIST} )
82
+ target_compile_definitions (controller_wrappers_rocm PRIVATE ${ROCM_EXTRA_DEFS} ${AER_COMPILER_DEFINITIONS} )
83
+ set_target_properties (controller_wrappers_rocm PROPERTIES COMPILE_FLAGS "${AER_COMPILER_FLAGS} " )
84
+ configure_target(controller_wrappers_rocm)
61
85
endif ()
62
- target_include_directories (controller_wrappers PRIVATE ${AER_SIMULATOR_CPP_SRC_DIR}
63
- PRIVATE ${AER_SIMULATOR_CPP_EXTERNAL_LIBS} )
64
- target_link_libraries (controller_wrappers ${AER_LIBRARIES} )
65
- target_compile_definitions (controller_wrappers PRIVATE ${AER_COMPILER_DEFINITIONS} )
66
- install (TARGETS controller_wrappers LIBRARY DESTINATION qiskit_aer/backends)
67
86
68
87
# Install redistributable dependencies
69
88
install (FILES ${BACKEND_REDIST_DEPS} DESTINATION qiskit_aer/backends)
0 commit comments