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