Actual source code: cyclic.h
slepc-3.21.1 2024-04-26
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 CUDA only */
26: Vec wx2,wy2; /* workspace vectors used if misaligned=true */
27: } SVD_CYCLIC_SHELL;
29: SLEPC_INTERN PetscErrorCode MatMult_Cyclic_CUDA(Mat,Vec,Vec);
30: SLEPC_INTERN PetscErrorCode MatMult_ECross_CUDA(Mat,Vec,Vec);