Quantum 3xplorer (Q3)
An AI-native quantum simulation engine
Loading...
Searching...
No Matches
main_gpu_hip.cpp
Go to the documentation of this file.
1/**
2 * main_gpu_hip.cpp — HIP/ROCm GPU-accelerated entry point for Q3.
3 *
4 * Links the HIP backend factories (device, hipBLAS, hipSOLVER, hipFFT) and
5 * delegates the shared entry-point flow to cli::run_gpu_entry_point().
6 *
7 * Usage: q3_gpu_hip <input_file> [--log-level <level>] [--precision double|mixed]
8 */
9
11
12// HIP backend factory functions (defined in hip.cpp files, linked at build time)
14std::unique_ptr<GPUBLAS>
15create_hip_gpu_blas(std::shared_ptr<device::GPUDeviceBackend> device_backend);
16} // namespace q3::execution::gpu::blas
17
19std::unique_ptr<GPUEigensolver>
20create_hip_gpu_eigensolver(std::shared_ptr<device::GPUDeviceBackend> device_backend);
21} // namespace q3::execution::gpu::lapack
22
23namespace q3::gpu {
24std::unique_ptr<GPUFFTGrid>
25create_hip_gpu_fft_grid(std::shared_ptr<execution::gpu::device::GPUDeviceBackend> device_backend);
26} // namespace q3::gpu
27
28int main(int argc, char* argv[]) {
30 descriptor.backend_label = "HIP GPU";
31 descriptor.binary_name = "q3_gpu_hip";
32 descriptor.blas_library_name = "hipBLAS";
33 descriptor.eigensolver_library_name = "hipSOLVER";
34 descriptor.mixed_precision_description = "mixed (FP32 FFT via hipFFT)";
38 return q3::cli::run_gpu_entry_point(argc, argv, descriptor);
39}
int main(int argc, char *argv[])
int run_gpu_entry_point(int argc, char *argv[], const GPUEntryPointDescriptor &descriptor)
std::unique_ptr< GPUBLAS > create_hip_gpu_blas(std::shared_ptr< device::GPUDeviceBackend > device_backend)
Definition hip.cpp:305
std::unique_ptr< GPUEigensolver > create_hip_gpu_eigensolver(std::shared_ptr< device::GPUDeviceBackend > device_backend)
Definition hip.cpp:202
std::unique_ptr< GPUFFTGrid > create_hip_gpu_fft_grid(std::shared_ptr< execution::gpu::device::GPUDeviceBackend > device_backend)
Definition hip.cpp:444
std::string backend_label
Banner label, e.g. "CUDA GPU" → "BEGIN (CUDA GPU): <timestamp>".
std::function< std::unique_ptr< execution::gpu::blas::GPUBLAS >(DeviceBackendPointer)> create_blas
std::function< std::unique_ptr< execution::gpu::lapack::GPUEigensolver >(DeviceBackendPointer)> create_eigensolver
std::string binary_name
Binary name for the usage line, e.g. "q3_gpu_cuda".
std::string eigensolver_library_name
Vendor eigensolver name for the validation log line, e.g. "cuSOLVER". Optional.
std::string blas_library_name
Vendor BLAS name for the validation log line, e.g. "cuBLAS". Optional.
std::function< std::unique_ptr< gpu::GPUFFTGrid >(DeviceBackendPointer)> create_fft_grid
std::string mixed_precision_description
Human-readable description of the mixed-precision mode, e.g. "mixed (FP32 FFT via cuFFT)".