Loading...
Searching...
No Matches
main_gpu_sycl.cpp
Go to the documentation of this file.
1/**
2 * main_gpu_sycl.cpp — SYCL/oneAPI GPU-accelerated entry point for Q3.
3 *
4 * Links the SYCL backend factories (device, oneMKL BLAS/LAPACK, oneMKL DFT)
5 * and delegates the shared entry-point flow to cli::run_gpu_entry_point().
6 *
7 * Usage: q3_gpu_sycl <input_file> [--log-level <level>] [--precision double|mixed]
8 */
9
11
12// SYCL backend factory functions (defined in sycl.cpp files, linked at build time)
14std::unique_ptr<GPUBLAS>
15create_sycl_gpu_blas(std::shared_ptr<device::GPUDeviceBackend> device_backend);
16} // namespace q3::execution::gpu::blas
17
19std::unique_ptr<GPUEigensolver>
20create_sycl_gpu_eigensolver(std::shared_ptr<device::GPUDeviceBackend> device_backend);
21} // namespace q3::execution::gpu::lapack
22
23namespace q3::gpu {
24std::unique_ptr<GPUFFTGrid>
25create_sycl_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 = "SYCL GPU";
31 descriptor.binary_name = "q3_gpu_sycl";
32 descriptor.blas_library_name = "oneMKL";
33 descriptor.eigensolver_library_name = "oneMKL LAPACK";
34 descriptor.mixed_precision_description = "mixed (FP32 FFT via oneMKL DFT)";
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_sycl_gpu_blas(std::shared_ptr< device::GPUDeviceBackend > device_backend)
Definition sycl.cpp:323
std::unique_ptr< GPUEigensolver > create_sycl_gpu_eigensolver(std::shared_ptr< device::GPUDeviceBackend > device_backend)
Definition sycl.cpp:161
std::unique_ptr< GPUFFTGrid > create_sycl_gpu_fft_grid(std::shared_ptr< execution::gpu::device::GPUDeviceBackend > device_backend)
Definition sycl.cpp:172
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)".