Quantum 3xplorer (Q3)
An AI-native quantum simulation engine
Loading...
Searching...
No Matches
main_gpu.cpp
Go to the documentation of this file.
1/**
2 * main_gpu.cpp — Metal/Accelerate GPU-accelerated entry point for Q3.
3 *
4 * Links the Metal device backend with Accelerate-based BLAS/LAPACK factories
5 * and delegates the shared entry-point flow to cli::run_gpu_entry_point().
6 * No native GPU FFT grid: the FP64 path uses the PlanewaveBasis FFTW grid.
7 *
8 * Usage: q3_gpu <input_file> [--log-level <level>] [--precision double|mixed]
9 */
10
12
13// Accelerate backend factory functions (defined in metal.cpp files, linked at build time)
15std::unique_ptr<GPUBLAS>
16create_accelerate_gpu_blas(std::shared_ptr<device::GPUDeviceBackend> device_backend);
17} // namespace q3::execution::gpu::blas
18
20std::unique_ptr<GPUEigensolver>
21create_accelerate_gpu_eigensolver(std::shared_ptr<device::GPUDeviceBackend> device_backend);
22} // namespace q3::execution::gpu::lapack
23
24int main(int argc, char* argv[]) {
26 descriptor.backend_label = "GPU";
27 descriptor.binary_name = "q3_gpu";
30 // create_fft_grid left empty: Metal has no native GPU FFT backend yet.
31 return q3::cli::run_gpu_entry_point(argc, argv, descriptor);
32}
int main(int argc, char *argv[])
Definition main_gpu.cpp:24
int run_gpu_entry_point(int argc, char *argv[], const GPUEntryPointDescriptor &descriptor)
std::unique_ptr< GPUBLAS > create_accelerate_gpu_blas(std::shared_ptr< device::GPUDeviceBackend > device_backend)
std::unique_ptr< GPUEigensolver > create_accelerate_gpu_eigensolver(std::shared_ptr< device::GPUDeviceBackend > device_backend)
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".