Actual source code: cyclic.h
slepc-3.23.0 2025-03-29
1: /*
2: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
3: SLEPc - Scalable Library for Eigenvalue Problem Computations
4: Copyright (c) 2002-, Universitat Politecnica de Valencia, Spain
6: This file is part of SLEPc.
7: SLEPc is distributed under a 2-clause BSD license (see LICENSE).
8: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
9: */
11: #pragma once
13: typedef struct {
14: PetscBool explicitmatrix;
15: EPS eps;
16: PetscBool usereps;
17: Mat C,D;
18: } SVD_CYCLIC;
20: typedef struct {
21: Mat A,AT;
22: Vec x1,x2,y1,y2;
23: Vec diag,w; /* used only in extended cross matrix */
24: PetscBool swapped;
25: PetscBool misaligned; /* bottom block is misaligned, checked in GPU only */
26: Vec wx2,wy2; /* workspace vectors used if misaligned=true */
27: } SVD_CYCLIC_SHELL;
29: #if defined(PETSC_HAVE_CUDA)
30: SLEPC_INTERN PetscErrorCode MatMult_Cyclic_CUDA(Mat,Vec,Vec);
31: SLEPC_INTERN PetscErrorCode MatMult_ECross_CUDA(Mat,Vec,Vec);
32: #endif
33: #if defined(PETSC_HAVE_HIP)
34: SLEPC_INTERN PetscErrorCode MatMult_Cyclic_HIP(Mat,Vec,Vec);
35: SLEPC_INTERN PetscErrorCode MatMult_ECross_HIP(Mat,Vec,Vec);
36: #endif