Line | Branch | Exec | Source |
---|---|---|---|
1 | /* | ||
2 | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | ||
3 | SLEPc - Scalable Library for Eigenvalue Problem Computations | ||
4 | Copyright (c) 2002-, Universitat Politecnica de Valencia, Spain | ||
5 | |||
6 | This file is part of SLEPc. | ||
7 | SLEPc is distributed under a 2-clause BSD license (see LICENSE). | ||
8 | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | ||
9 | */ | ||
10 | /* | ||
11 | BV implemented with a dense Mat | ||
12 | */ | ||
13 | |||
14 | #include <slepc/private/bvimpl.h> | ||
15 | #include "bvmat.h" | ||
16 | |||
17 | 64816 | static PetscErrorCode BVMult_Mat(BV Y,PetscScalar alpha,PetscScalar beta,BV X,Mat Q) | |
18 | { | ||
19 | 64816 | BV_MAT *y = (BV_MAT*)Y->data,*x = (BV_MAT*)X->data; | |
20 | 64816 | PetscScalar *py; | |
21 | 64816 | const PetscScalar *px,*q; | |
22 | 64816 | PetscInt ldq; | |
23 | |||
24 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
64816 | PetscFunctionBegin; |
25 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
64816 | PetscCall(MatDenseGetArrayRead(x->A,&px)); |
26 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
64816 | PetscCall(MatDenseGetArray(y->A,&py)); |
27 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
64816 | if (Q) { |
28 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
52922 | PetscCall(MatDenseGetLDA(Q,&ldq)); |
29 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
52922 | PetscCall(MatDenseGetArrayRead(Q,&q)); |
30 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
52922 | PetscCall(BVMult_BLAS_Private(Y,Y->n,Y->k-Y->l,X->k-X->l,alpha,px+(X->nc+X->l)*X->ld,X->ld,q+Y->l*ldq+X->l,ldq,beta,py+(Y->nc+Y->l)*Y->ld,Y->ld)); |
31 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
52922 | PetscCall(MatDenseRestoreArrayRead(Q,&q)); |
32 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
11894 | } else PetscCall(BVAXPY_BLAS_Private(Y,Y->n,Y->k-Y->l,alpha,px+(X->nc+X->l)*X->ld,X->ld,beta,py+(Y->nc+Y->l)*Y->ld,Y->ld)); |
33 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
64816 | PetscCall(MatDenseRestoreArrayRead(x->A,&px)); |
34 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
64816 | PetscCall(MatDenseRestoreArray(y->A,&py)); |
35 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
13289 | PetscFunctionReturn(PETSC_SUCCESS); |
36 | } | ||
37 | |||
38 | 6578084 | static PetscErrorCode BVMultVec_Mat(BV X,PetscScalar alpha,PetscScalar beta,Vec y,PetscScalar *q) | |
39 | { | ||
40 | 6578084 | BV_MAT *x = (BV_MAT*)X->data; | |
41 | 6578084 | PetscScalar *py,*qq=q; | |
42 | 6578084 | const PetscScalar *px; | |
43 | |||
44 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
6578084 | PetscFunctionBegin; |
45 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
6578084 | PetscCall(MatDenseGetArrayRead(x->A,&px)); |
46 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
6578084 | PetscCall(VecGetArray(y,&py)); |
47 |
6/8✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
6578084 | if (!q) PetscCall(VecGetArray(X->buffer,&qq)); |
48 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
6578084 | PetscCall(BVMultVec_BLAS_Private(X,X->n,X->k-X->l,alpha,px+(X->nc+X->l)*X->ld,X->ld,qq,beta,py)); |
49 |
6/8✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
6578084 | if (!q) PetscCall(VecRestoreArray(X->buffer,&qq)); |
50 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
6578084 | PetscCall(MatDenseRestoreArrayRead(x->A,&px)); |
51 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
6578084 | PetscCall(VecRestoreArray(y,&py)); |
52 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
1316792 | PetscFunctionReturn(PETSC_SUCCESS); |
53 | } | ||
54 | |||
55 | 283486 | static PetscErrorCode BVMultInPlace_Mat(BV V,Mat Q,PetscInt s,PetscInt e) | |
56 | { | ||
57 | 283486 | BV_MAT *ctx = (BV_MAT*)V->data; | |
58 | 283486 | PetscScalar *pv; | |
59 | 283486 | const PetscScalar *q; | |
60 | 283486 | PetscInt ldq; | |
61 | |||
62 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
283486 | PetscFunctionBegin; |
63 |
10/16✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 8 times.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✓ Branch 12 taken 2 times.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
|
283486 | if (s>=e || !V->n) PetscFunctionReturn(PETSC_SUCCESS); |
64 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
264503 | PetscCall(MatDenseGetLDA(Q,&ldq)); |
65 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
264503 | PetscCall(MatDenseGetArray(ctx->A,&pv)); |
66 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
264503 | PetscCall(MatDenseGetArrayRead(Q,&q)); |
67 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
264503 | PetscCall(BVMultInPlace_BLAS_Private(V,V->n,V->k-V->l,s-V->l,e-V->l,pv+(V->nc+V->l)*V->ld,V->ld,q+V->l*ldq+V->l,ldq,PETSC_FALSE)); |
68 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
264503 | PetscCall(MatDenseRestoreArrayRead(Q,&q)); |
69 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
264503 | PetscCall(MatDenseRestoreArray(ctx->A,&pv)); |
70 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
51310 | PetscFunctionReturn(PETSC_SUCCESS); |
71 | } | ||
72 | |||
73 | 10 | static PetscErrorCode BVMultInPlaceHermitianTranspose_Mat(BV V,Mat Q,PetscInt s,PetscInt e) | |
74 | { | ||
75 | 10 | BV_MAT *ctx = (BV_MAT*)V->data; | |
76 | 10 | PetscScalar *pv; | |
77 | 10 | const PetscScalar *q; | |
78 | 10 | PetscInt ldq; | |
79 | |||
80 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
10 | PetscFunctionBegin; |
81 |
3/16✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 8 times.
✓ Branch 3 taken 2 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
10 | if (s>=e || !V->n) PetscFunctionReturn(PETSC_SUCCESS); |
82 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
10 | PetscCall(MatDenseGetLDA(Q,&ldq)); |
83 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
10 | PetscCall(MatDenseGetArray(ctx->A,&pv)); |
84 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
10 | PetscCall(MatDenseGetArrayRead(Q,&q)); |
85 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
10 | PetscCall(BVMultInPlace_BLAS_Private(V,V->n,V->k-V->l,s-V->l,e-V->l,pv+(V->nc+V->l)*V->ld,V->ld,q+V->l*ldq+V->l,ldq,PETSC_TRUE)); |
86 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
10 | PetscCall(MatDenseRestoreArrayRead(Q,&q)); |
87 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
10 | PetscCall(MatDenseRestoreArray(ctx->A,&pv)); |
88 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
2 | PetscFunctionReturn(PETSC_SUCCESS); |
89 | } | ||
90 | |||
91 | 276356 | static PetscErrorCode BVDot_Mat(BV X,BV Y,Mat M) | |
92 | { | ||
93 | 276356 | BV_MAT *x = (BV_MAT*)X->data,*y = (BV_MAT*)Y->data; | |
94 | 276356 | PetscScalar *m; | |
95 | 276356 | const PetscScalar *px,*py; | |
96 | 276356 | PetscInt ldm; | |
97 | |||
98 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
276356 | PetscFunctionBegin; |
99 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
276356 | PetscCall(MatDenseGetLDA(M,&ldm)); |
100 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
276356 | PetscCall(MatDenseGetArrayRead(x->A,&px)); |
101 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
276356 | PetscCall(MatDenseGetArrayRead(y->A,&py)); |
102 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
276356 | PetscCall(MatDenseGetArray(M,&m)); |
103 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
276356 | PetscCall(BVDot_BLAS_Private(X,Y->k-Y->l,X->k-X->l,X->n,py+(Y->nc+Y->l)*Y->ld,Y->ld,px+(X->nc+X->l)*X->ld,X->ld,m+X->l*ldm+Y->l,ldm,x->mpi)); |
104 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
276356 | PetscCall(MatDenseRestoreArray(M,&m)); |
105 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
276356 | PetscCall(MatDenseRestoreArrayRead(x->A,&px)); |
106 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
276356 | PetscCall(MatDenseRestoreArrayRead(y->A,&py)); |
107 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
56138 | PetscFunctionReturn(PETSC_SUCCESS); |
108 | } | ||
109 | |||
110 | 4330830 | static PetscErrorCode BVDotVec_Mat(BV X,Vec y,PetscScalar *q) | |
111 | { | ||
112 | 4330830 | BV_MAT *x = (BV_MAT*)X->data; | |
113 | 4330830 | PetscScalar *qq=q; | |
114 | 4330830 | const PetscScalar *px,*py; | |
115 | 4330830 | Vec z = y; | |
116 | |||
117 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
4330830 | PetscFunctionBegin; |
118 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
4330830 | if (PetscUnlikely(X->matrix)) { |
119 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
634835 | PetscCall(BV_IPMatMult(X,y)); |
120 | 634835 | z = X->Bx; | |
121 | } | ||
122 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
4330830 | PetscCall(MatDenseGetArrayRead(x->A,&px)); |
123 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
4330830 | PetscCall(VecGetArrayRead(z,&py)); |
124 |
6/8✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
4330830 | if (!q) PetscCall(VecGetArray(X->buffer,&qq)); |
125 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
4330830 | PetscCall(BVDotVec_BLAS_Private(X,X->n,X->k-X->l,px+(X->nc+X->l)*X->ld,X->ld,py,qq,x->mpi)); |
126 |
6/8✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
4330830 | if (!q) PetscCall(VecRestoreArray(X->buffer,&qq)); |
127 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
4330830 | PetscCall(VecRestoreArrayRead(z,&py)); |
128 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
4330830 | PetscCall(MatDenseRestoreArrayRead(x->A,&px)); |
129 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
850917 | PetscFunctionReturn(PETSC_SUCCESS); |
130 | } | ||
131 | |||
132 | 66994 | static PetscErrorCode BVDotVec_Local_Mat(BV X,Vec y,PetscScalar *m) | |
133 | { | ||
134 | 66994 | BV_MAT *x = (BV_MAT*)X->data; | |
135 | 66994 | const PetscScalar *px,*py; | |
136 | 66994 | Vec z = y; | |
137 | |||
138 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
66994 | PetscFunctionBegin; |
139 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
|
66994 | if (PetscUnlikely(X->matrix)) { |
140 | ✗ | PetscCall(BV_IPMatMult(X,y)); | |
141 | ✗ | z = X->Bx; | |
142 | } | ||
143 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
66994 | PetscCall(MatDenseGetArrayRead(x->A,&px)); |
144 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
66994 | PetscCall(VecGetArrayRead(z,&py)); |
145 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
66994 | PetscCall(BVDotVec_BLAS_Private(X,X->n,X->k-X->l,px+(X->nc+X->l)*X->ld,X->ld,py,m,PETSC_FALSE)); |
146 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
66994 | PetscCall(VecRestoreArrayRead(z,&py)); |
147 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
66994 | PetscCall(MatDenseRestoreArrayRead(x->A,&px)); |
148 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
13302 | PetscFunctionReturn(PETSC_SUCCESS); |
149 | } | ||
150 | |||
151 | 2030674 | static PetscErrorCode BVScale_Mat(BV bv,PetscInt j,PetscScalar alpha) | |
152 | { | ||
153 | 2030674 | BV_MAT *ctx = (BV_MAT*)bv->data; | |
154 | 2030674 | PetscScalar *array; | |
155 | |||
156 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
2030674 | PetscFunctionBegin; |
157 |
2/14✓ Branch 0 taken 8 times.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
|
2030674 | if (!bv->n) PetscFunctionReturn(PETSC_SUCCESS); |
158 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
2030674 | PetscCall(MatDenseGetArray(ctx->A,&array)); |
159 |
6/8✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
2030674 | if (PetscUnlikely(j<0)) PetscCall(BVScale_BLAS_Private(bv,(bv->k-bv->l)*bv->ld,array+(bv->nc+bv->l)*bv->ld,alpha)); |
160 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
2027704 | else PetscCall(BVScale_BLAS_Private(bv,bv->n,array+(bv->nc+j)*bv->ld,alpha)); |
161 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
2030674 | PetscCall(MatDenseRestoreArray(ctx->A,&array)); |
162 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
398187 | PetscFunctionReturn(PETSC_SUCCESS); |
163 | } | ||
164 | |||
165 | 72590 | static PetscErrorCode BVNorm_Mat(BV bv,PetscInt j,NormType type,PetscReal *val) | |
166 | { | ||
167 | 72590 | BV_MAT *ctx = (BV_MAT*)bv->data; | |
168 | 72590 | const PetscScalar *array; | |
169 | |||
170 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
72590 | PetscFunctionBegin; |
171 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
72590 | PetscCall(MatDenseGetArrayRead(ctx->A,&array)); |
172 |
6/8✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
72590 | if (PetscUnlikely(j<0)) PetscCall(BVNorm_LAPACK_Private(bv,bv->n,bv->k-bv->l,array+(bv->nc+bv->l)*bv->ld,bv->ld,type,val,ctx->mpi)); |
173 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
71872 | else PetscCall(BVNorm_LAPACK_Private(bv,bv->n,1,array+(bv->nc+j)*bv->ld,bv->ld,type,val,ctx->mpi)); |
174 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
72590 | PetscCall(MatDenseRestoreArrayRead(ctx->A,&array)); |
175 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
13546 | PetscFunctionReturn(PETSC_SUCCESS); |
176 | } | ||
177 | |||
178 | 27061 | static PetscErrorCode BVNorm_Local_Mat(BV bv,PetscInt j,NormType type,PetscReal *val) | |
179 | { | ||
180 | 27061 | BV_MAT *ctx = (BV_MAT*)bv->data; | |
181 | 27061 | const PetscScalar *array; | |
182 | |||
183 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
27061 | PetscFunctionBegin; |
184 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
27061 | PetscCall(MatDenseGetArrayRead(ctx->A,&array)); |
185 |
1/8✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
27061 | if (PetscUnlikely(j<0)) PetscCall(BVNorm_LAPACK_Private(bv,bv->n,bv->k-bv->l,array+(bv->nc+bv->l)*bv->ld,bv->ld,type,val,PETSC_FALSE)); |
186 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
27061 | else PetscCall(BVNorm_LAPACK_Private(bv,bv->n,1,array+(bv->nc+j)*bv->ld,bv->ld,type,val,PETSC_FALSE)); |
187 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
27061 | PetscCall(MatDenseRestoreArrayRead(ctx->A,&array)); |
188 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
5417 | PetscFunctionReturn(PETSC_SUCCESS); |
189 | } | ||
190 | |||
191 | 37303 | static PetscErrorCode BVNormalize_Mat(BV bv,PetscScalar *eigi) | |
192 | { | ||
193 | 37303 | BV_MAT *ctx = (BV_MAT*)bv->data; | |
194 | 37303 | PetscScalar *array,*wi=NULL; | |
195 | |||
196 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
37303 | PetscFunctionBegin; |
197 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
37303 | PetscCall(MatDenseGetArray(ctx->A,&array)); |
198 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
37303 | if (eigi) wi = eigi+bv->l; |
199 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
37303 | PetscCall(BVNormalize_LAPACK_Private(bv,bv->n,bv->k-bv->l,array+(bv->nc+bv->l)*bv->ld,bv->ld,wi,ctx->mpi)); |
200 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
37303 | PetscCall(MatDenseRestoreArray(ctx->A,&array)); |
201 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
7447 | PetscFunctionReturn(PETSC_SUCCESS); |
202 | } | ||
203 | |||
204 | 111076 | static PetscErrorCode BVMatMult_Mat(BV V,Mat A,BV W) | |
205 | { | ||
206 | 111076 | PetscInt j; | |
207 | 111076 | Mat Vmat,Wmat; | |
208 | 111076 | Vec vv,ww; | |
209 | |||
210 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
111076 | PetscFunctionBegin; |
211 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
111076 | if (V->vmm) { |
212 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
111026 | PetscCall(BVGetMat(V,&Vmat)); |
213 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
111026 | PetscCall(BVGetMat(W,&Wmat)); |
214 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
111026 | PetscCall(MatProductCreateWithMat(A,Vmat,NULL,Wmat)); |
215 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
111026 | PetscCall(MatProductSetType(Wmat,MATPRODUCT_AB)); |
216 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
111026 | PetscCall(MatProductSetFromOptions(Wmat)); |
217 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
111026 | PetscCall(MatProductSymbolic(Wmat)); |
218 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
111026 | PetscCall(MatProductNumeric(Wmat)); |
219 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
111026 | PetscCall(MatProductClear(Wmat)); |
220 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
111026 | PetscCall(BVRestoreMat(V,&Vmat)); |
221 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
111026 | PetscCall(BVRestoreMat(W,&Wmat)); |
222 | } else { | ||
223 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
380 | for (j=0;j<V->k-V->l;j++) { |
224 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
330 | PetscCall(BVGetColumn(V,V->l+j,&vv)); |
225 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
330 | PetscCall(BVGetColumn(W,W->l+j,&ww)); |
226 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
330 | PetscCall(MatMult(A,vv,ww)); |
227 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
330 | PetscCall(BVRestoreColumn(V,V->l+j,&vv)); |
228 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
330 | PetscCall(BVRestoreColumn(W,W->l+j,&ww)); |
229 | } | ||
230 | } | ||
231 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
22500 | PetscFunctionReturn(PETSC_SUCCESS); |
232 | } | ||
233 | |||
234 | 131847 | static PetscErrorCode BVCopy_Mat(BV V,BV W) | |
235 | { | ||
236 | 131847 | BV_MAT *v = (BV_MAT*)V->data,*w = (BV_MAT*)W->data; | |
237 | 131847 | const PetscScalar *pv; | |
238 | 131847 | PetscScalar *pw; | |
239 | 131847 | PetscInt j; | |
240 | |||
241 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
131847 | PetscFunctionBegin; |
242 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
131847 | PetscCall(MatDenseGetArrayRead(v->A,&pv)); |
243 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
131847 | PetscCall(MatDenseGetArray(w->A,&pw)); |
244 |
7/8✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 10 times.
✓ Branch 3 taken 8 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✓ Branch 6 taken 2 times.
✓ Branch 7 taken 2 times.
|
826587 | for (j=0;j<V->k-V->l;j++) PetscCall(PetscArraycpy(pw+(W->nc+W->l+j)*W->ld,pv+(V->nc+V->l+j)*V->ld,V->n)); |
245 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
131847 | PetscCall(MatDenseRestoreArrayRead(v->A,&pv)); |
246 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
131847 | PetscCall(MatDenseRestoreArray(w->A,&pw)); |
247 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
27121 | PetscFunctionReturn(PETSC_SUCCESS); |
248 | } | ||
249 | |||
250 | 85600 | static PetscErrorCode BVCopyColumn_Mat(BV V,PetscInt j,PetscInt i) | |
251 | { | ||
252 | 85600 | BV_MAT *v = (BV_MAT*)V->data; | |
253 | 85600 | PetscScalar *pv; | |
254 | |||
255 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
85600 | PetscFunctionBegin; |
256 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
85600 | PetscCall(MatDenseGetArray(v->A,&pv)); |
257 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
85600 | PetscCall(PetscArraycpy(pv+(V->nc+i)*V->ld,pv+(V->nc+j)*V->ld,V->n)); |
258 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
85600 | PetscCall(MatDenseRestoreArray(v->A,&pv)); |
259 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
16296 | PetscFunctionReturn(PETSC_SUCCESS); |
260 | } | ||
261 | |||
262 | 1570 | static PetscErrorCode BVResize_Mat(BV bv,PetscInt m,PetscBool copy) | |
263 | { | ||
264 | 1570 | BV_MAT *ctx = (BV_MAT*)bv->data; | |
265 | 1570 | Mat A,Msrc,Mdst; | |
266 | 1570 | char str[50]; | |
267 | |||
268 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
1570 | PetscFunctionBegin; |
269 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1570 | PetscCall(MatCreateDenseFromVecType(PetscObjectComm((PetscObject)bv),bv->vtype,bv->n,PETSC_DECIDE,bv->N,m,bv->ld,NULL,&A)); |
270 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
1570 | if (((PetscObject)bv)->name) { |
271 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
210 | PetscCall(PetscSNPrintf(str,sizeof(str),"%s_0",((PetscObject)bv)->name)); |
272 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
210 | PetscCall(PetscObjectSetName((PetscObject)A,str)); |
273 | } | ||
274 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
1570 | if (copy) { |
275 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
348 | PetscCall(MatDenseGetSubMatrix(ctx->A,PETSC_DECIDE,PETSC_DECIDE,PETSC_DECIDE,PetscMin(m,bv->m),&Msrc)); |
276 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
348 | PetscCall(MatDenseGetSubMatrix(A,PETSC_DECIDE,PETSC_DECIDE,PETSC_DECIDE,PetscMin(m,bv->m),&Mdst)); |
277 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
348 | PetscCall(MatCopy(Msrc,Mdst,SAME_NONZERO_PATTERN)); |
278 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
348 | PetscCall(MatDenseRestoreSubMatrix(ctx->A,&Msrc)); |
279 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
348 | PetscCall(MatDenseRestoreSubMatrix(A,&Mdst)); |
280 | } | ||
281 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1570 | PetscCall(MatDestroy(&ctx->A)); |
282 | 1570 | ctx->A = A; | |
283 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
1570 | PetscFunctionReturn(PETSC_SUCCESS); |
284 | } | ||
285 | |||
286 | 13502293 | static PetscErrorCode BVGetColumn_Mat(BV bv,PetscInt j,Vec *v) | |
287 | { | ||
288 | 13502293 | BV_MAT *ctx = (BV_MAT*)bv->data; | |
289 | 13502293 | PetscScalar *pA; | |
290 | 13502293 | PetscInt l; | |
291 | |||
292 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
13502293 | PetscFunctionBegin; |
293 |
3/4✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 10 times.
|
13502293 | l = BVAvailableVec; |
294 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
13502293 | PetscCall(MatDenseGetArray(ctx->A,&pA)); |
295 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
13502293 | PetscCall(VecPlaceArray(bv->cv[l],pA+(bv->nc+j)*bv->ld)); |
296 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
2658118 | PetscFunctionReturn(PETSC_SUCCESS); |
297 | } | ||
298 | |||
299 | 13502293 | static PetscErrorCode BVRestoreColumn_Mat(BV bv,PetscInt j,Vec *v) | |
300 | { | ||
301 | 13502293 | BV_MAT *ctx = (BV_MAT*)bv->data; | |
302 | 13502293 | PetscScalar *pA; | |
303 | 13502293 | PetscInt l; | |
304 | |||
305 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
13502293 | PetscFunctionBegin; |
306 | 13502293 | l = (j==bv->ci[0])? 0: 1; | |
307 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
13502293 | PetscCall(VecResetArray(bv->cv[l])); |
308 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
13502293 | PetscCall(MatDenseRestoreArray(ctx->A,&pA)); |
309 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
2658118 | PetscFunctionReturn(PETSC_SUCCESS); |
310 | } | ||
311 | |||
312 | 256568 | static PetscErrorCode BVGetArray_Mat(BV bv,PetscScalar **a) | |
313 | { | ||
314 | 256568 | BV_MAT *ctx = (BV_MAT*)bv->data; | |
315 | |||
316 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
256568 | PetscFunctionBegin; |
317 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
256568 | PetscCall(MatDenseGetArray(ctx->A,a)); |
318 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
52023 | PetscFunctionReturn(PETSC_SUCCESS); |
319 | } | ||
320 | |||
321 | 256568 | static PetscErrorCode BVRestoreArray_Mat(BV bv,PetscScalar **a) | |
322 | { | ||
323 | 256568 | BV_MAT *ctx = (BV_MAT*)bv->data; | |
324 | |||
325 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
256568 | PetscFunctionBegin; |
326 |
5/8✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
256568 | if (a) PetscCall(MatDenseRestoreArray(ctx->A,a)); |
327 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
52023 | PetscFunctionReturn(PETSC_SUCCESS); |
328 | } | ||
329 | |||
330 | 1730 | static PetscErrorCode BVGetArrayRead_Mat(BV bv,const PetscScalar **a) | |
331 | { | ||
332 | 1730 | BV_MAT *ctx = (BV_MAT*)bv->data; | |
333 | |||
334 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
1730 | PetscFunctionBegin; |
335 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1730 | PetscCall(MatDenseGetArrayRead(ctx->A,a)); |
336 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
332 | PetscFunctionReturn(PETSC_SUCCESS); |
337 | } | ||
338 | |||
339 | 1730 | static PetscErrorCode BVRestoreArrayRead_Mat(BV bv,const PetscScalar **a) | |
340 | { | ||
341 | 1730 | BV_MAT *ctx = (BV_MAT*)bv->data; | |
342 | |||
343 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
1730 | PetscFunctionBegin; |
344 |
5/8✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
1730 | if (a) PetscCall(MatDenseRestoreArrayRead(ctx->A,a)); |
345 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
332 | PetscFunctionReturn(PETSC_SUCCESS); |
346 | } | ||
347 | |||
348 | 384 | static PetscErrorCode BVView_Mat(BV bv,PetscViewer viewer) | |
349 | { | ||
350 | 384 | Mat A; | |
351 | 384 | PetscViewerFormat format; | |
352 | 384 | PetscBool isascii; | |
353 | 384 | const char *bvname,*name; | |
354 | |||
355 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
384 | PetscFunctionBegin; |
356 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
384 | PetscCall(PetscObjectTypeCompare((PetscObject)viewer,PETSCVIEWERASCII,&isascii)); |
357 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
384 | if (isascii) { |
358 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
384 | PetscCall(PetscViewerGetFormat(viewer,&format)); |
359 |
8/14✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
|
384 | if (format == PETSC_VIEWER_ASCII_INFO || format == PETSC_VIEWER_ASCII_INFO_DETAIL) PetscFunctionReturn(PETSC_SUCCESS); |
360 | } | ||
361 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
180 | PetscCall(BVGetMat(bv,&A)); |
362 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
180 | PetscCall(MatView(A,viewer)); |
363 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
|
180 | if (format == PETSC_VIEWER_ASCII_MATLAB) { |
364 | ✗ | PetscCall(PetscObjectGetName((PetscObject)A,&name)); | |
365 | ✗ | PetscCall(PetscObjectGetName((PetscObject)bv,&bvname)); | |
366 | ✗ | PetscCall(PetscViewerASCIIPrintf(viewer,"%s=%s;clear %s\n",bvname,name,name)); | |
367 | ✗ | if (bv->nc) PetscCall(PetscViewerASCIIPrintf(viewer,"%s=%s(:,%" PetscInt_FMT ":end);\n",bvname,bvname,bv->nc+1)); | |
368 | } | ||
369 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
180 | PetscCall(BVRestoreMat(bv,&A)); |
370 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
20 | PetscFunctionReturn(PETSC_SUCCESS); |
371 | } | ||
372 | |||
373 | 141266 | static PetscErrorCode BVDestroy_Mat(BV bv) | |
374 | { | ||
375 | 141266 | BV_MAT *ctx = (BV_MAT*)bv->data; | |
376 | |||
377 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
141266 | PetscFunctionBegin; |
378 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
141266 | PetscCall(MatDestroy(&ctx->A)); |
379 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
141266 | PetscCall(VecDestroy(&bv->cv[0])); |
380 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
141266 | PetscCall(VecDestroy(&bv->cv[1])); |
381 |
5/8✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
141266 | PetscCall(PetscFree(bv->data)); |
382 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
27538 | PetscFunctionReturn(PETSC_SUCCESS); |
383 | } | ||
384 | |||
385 | 141266 | SLEPC_EXTERN PetscErrorCode BVCreate_Mat(BV bv) | |
386 | { | ||
387 | 141266 | BV_MAT *ctx; | |
388 | 141266 | PetscInt nloc,lsplit; | |
389 | 141266 | PetscBool seq; | |
390 | 141266 | char str[50]; | |
391 | 141266 | PetscScalar *array,*ptr=NULL; | |
392 | 141266 | BV parent; | |
393 | 141266 | Mat Apar; | |
394 | |||
395 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
141266 | PetscFunctionBegin; |
396 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
141266 | PetscCall(PetscNew(&ctx)); |
397 | 141266 | bv->data = (void*)ctx; | |
398 | |||
399 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
141266 | PetscCall(PetscStrcmpAny(bv->vtype,&bv->cuda,VECSEQCUDA,VECMPICUDA,"")); |
400 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
141266 | PetscCall(PetscStrcmpAny(bv->vtype,&bv->hip,VECSEQHIP,VECMPIHIP,"")); |
401 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
141266 | PetscCall(PetscStrcmpAny(bv->vtype,&ctx->mpi,VECMPI,VECMPICUDA,VECMPIHIP,"")); |
402 | |||
403 |
3/6✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
141266 | PetscCall(PetscStrcmp(bv->vtype,VECSEQ,&seq)); |
404 |
7/10✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 4 times.
✓ Branch 3 taken 10 times.
✓ Branch 4 taken 2 times.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
|
141266 | PetscCheck(seq || ctx->mpi || bv->cuda || bv->hip,PetscObjectComm((PetscObject)bv),PETSC_ERR_SUP,"BVMAT does not support the requested vector type: %s",bv->vtype); |
405 | |||
406 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
141266 | PetscCall(PetscLayoutGetLocalSize(bv->map,&nloc)); |
407 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
141266 | PetscCall(BV_SetDefaultLD(bv,nloc)); |
408 | |||
409 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
141266 | if (PetscUnlikely(bv->issplit)) { |
410 | /* split BV: share the memory of the parent BV */ | ||
411 | 2200 | parent = bv->splitparent; | |
412 | 2200 | lsplit = parent->lsplit; | |
413 | 2200 | Apar = ((BV_MAT*)parent->data)->A; | |
414 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 2 times.
|
2200 | if (bv->cuda) { |
415 | #if defined(PETSC_HAVE_CUDA) | ||
416 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
|
168 | PetscCall(MatDenseCUDAGetArray(Apar,&array)); |
417 |
4/4✓ Branch 0 taken 2 times.
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 2 times.
|
168 | if (bv->issplit>0) ptr = (bv->issplit==1)? array: array+lsplit*bv->ld; |
418 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
36 | else ptr = (bv->issplit==1)? array: array-lsplit; |
419 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
|
168 | PetscCall(MatDenseCUDARestoreArray(Apar,&array)); |
420 | #endif | ||
421 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 2 times.
|
2032 | } else if (bv->hip) { |
422 | #if defined(PETSC_HAVE_HIP) | ||
423 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
|
168 | PetscCall(MatDenseHIPGetArray(Apar,&array)); |
424 |
4/4✓ Branch 0 taken 2 times.
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 2 times.
|
168 | if (bv->issplit>0) ptr = (bv->issplit==1)? array: array+lsplit*bv->ld; |
425 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
36 | else ptr = (bv->issplit==1)? array: array-lsplit; |
426 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
|
168 | PetscCall(MatDenseHIPRestoreArray(Apar,&array)); |
427 | #endif | ||
428 | } else { | ||
429 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1864 | PetscCall(MatDenseGetArray(Apar,&array)); |
430 |
4/4✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 10 times.
✓ Branch 3 taken 10 times.
|
1864 | if (bv->issplit>0) ptr = (bv->issplit==1)? array: array+lsplit*bv->ld; |
431 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
994 | else ptr = (bv->issplit==-1)? array: array-lsplit; |
432 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1864 | PetscCall(MatDenseRestoreArray(Apar,&array)); |
433 | } | ||
434 | } | ||
435 | |||
436 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
141266 | PetscCall(MatCreateDenseFromVecType(PetscObjectComm((PetscObject)bv),bv->vtype,nloc,PETSC_DECIDE,bv->N,bv->m,bv->ld,ptr,&ctx->A)); |
437 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
141266 | if (((PetscObject)bv)->name) { |
438 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1520 | PetscCall(PetscSNPrintf(str,sizeof(str),"%s_0",((PetscObject)bv)->name)); |
439 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1520 | PetscCall(PetscObjectSetName((PetscObject)ctx->A,str)); |
440 | } | ||
441 | |||
442 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
141266 | if (PetscUnlikely(bv->Acreate)) { |
443 |
6/10✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 10 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✓ Branch 5 taken 8 times.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
|
2168 | PetscCall(MatConvert(bv->Acreate,bv->cuda?MATDENSECUDA:bv->hip?MATDENSEHIP:MATDENSE,MAT_REUSE_MATRIX,&ctx->A)); |
444 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1084 | PetscCall(MatDestroy(&bv->Acreate)); |
445 | } | ||
446 | |||
447 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
141266 | PetscCall(BVCreateVecEmpty(bv,&bv->cv[0])); |
448 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
141266 | PetscCall(BVCreateVecEmpty(bv,&bv->cv[1])); |
449 | |||
450 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 2 times.
|
141266 | if (bv->cuda) { |
451 | #if defined(PETSC_HAVE_CUDA) | ||
452 | 2336 | bv->ops->mult = BVMult_Mat_CUDA; | |
453 | 2336 | bv->ops->multvec = BVMultVec_Mat_CUDA; | |
454 | 2336 | bv->ops->multinplace = BVMultInPlace_Mat_CUDA; | |
455 | 2336 | bv->ops->multinplacetrans = BVMultInPlaceHermitianTranspose_Mat_CUDA; | |
456 | 2336 | bv->ops->dot = BVDot_Mat_CUDA; | |
457 | 2336 | bv->ops->dotvec = BVDotVec_Mat_CUDA; | |
458 | 2336 | bv->ops->dotvec_local = BVDotVec_Local_Mat_CUDA; | |
459 | 2336 | bv->ops->scale = BVScale_Mat_CUDA; | |
460 | 2336 | bv->ops->norm = BVNorm_Mat_CUDA; | |
461 | 2336 | bv->ops->norm_local = BVNorm_Local_Mat_CUDA; | |
462 | 2336 | bv->ops->normalize = BVNormalize_Mat_CUDA; | |
463 | 2336 | bv->ops->matmult = BVMatMult_Mat_CUDA; | |
464 | 2336 | bv->ops->copy = BVCopy_Mat_CUDA; | |
465 | 2336 | bv->ops->copycolumn = BVCopyColumn_Mat_CUDA; | |
466 | 2336 | bv->ops->getcolumn = BVGetColumn_Mat_CUDA; | |
467 | 2336 | bv->ops->restorecolumn = BVRestoreColumn_Mat_CUDA; | |
468 | 2336 | bv->ops->restoresplit = BVRestoreSplit_Mat_CUDA; | |
469 | 2336 | bv->ops->restoresplitrows = BVRestoreSplitRows_Mat_CUDA; | |
470 | 2336 | bv->ops->getmat = BVGetMat_Mat_CUDA; | |
471 | 2336 | bv->ops->restoremat = BVRestoreMat_Mat_CUDA; | |
472 | #endif | ||
473 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 2 times.
|
138930 | } else if (bv->hip) { |
474 | #if defined(PETSC_HAVE_HIP) | ||
475 | 2342 | bv->ops->mult = BVMult_Mat_HIP; | |
476 | 2342 | bv->ops->multvec = BVMultVec_Mat_HIP; | |
477 | 2342 | bv->ops->multinplace = BVMultInPlace_Mat_HIP; | |
478 | 2342 | bv->ops->multinplacetrans = BVMultInPlaceHermitianTranspose_Mat_HIP; | |
479 | 2342 | bv->ops->dot = BVDot_Mat_HIP; | |
480 | 2342 | bv->ops->dotvec = BVDotVec_Mat_HIP; | |
481 | 2342 | bv->ops->dotvec_local = BVDotVec_Local_Mat_HIP; | |
482 | 2342 | bv->ops->scale = BVScale_Mat_HIP; | |
483 | 2342 | bv->ops->norm = BVNorm_Mat_HIP; | |
484 | 2342 | bv->ops->norm_local = BVNorm_Local_Mat_HIP; | |
485 | 2342 | bv->ops->normalize = BVNormalize_Mat_HIP; | |
486 | 2342 | bv->ops->matmult = BVMatMult_Mat_HIP; | |
487 | 2342 | bv->ops->copy = BVCopy_Mat_HIP; | |
488 | 2342 | bv->ops->copycolumn = BVCopyColumn_Mat_HIP; | |
489 | 2342 | bv->ops->getcolumn = BVGetColumn_Mat_HIP; | |
490 | 2342 | bv->ops->restorecolumn = BVRestoreColumn_Mat_HIP; | |
491 | 2342 | bv->ops->restoresplit = BVRestoreSplit_Mat_HIP; | |
492 | 2342 | bv->ops->restoresplitrows = BVRestoreSplitRows_Mat_HIP; | |
493 | 2342 | bv->ops->getmat = BVGetMat_Mat_HIP; | |
494 | 2342 | bv->ops->restoremat = BVRestoreMat_Mat_HIP; | |
495 | #endif | ||
496 | } else { | ||
497 | 136588 | bv->ops->mult = BVMult_Mat; | |
498 | 136588 | bv->ops->multvec = BVMultVec_Mat; | |
499 | 136588 | bv->ops->multinplace = BVMultInPlace_Mat; | |
500 | 136588 | bv->ops->multinplacetrans = BVMultInPlaceHermitianTranspose_Mat; | |
501 | 136588 | bv->ops->dot = BVDot_Mat; | |
502 | 136588 | bv->ops->dotvec = BVDotVec_Mat; | |
503 | 136588 | bv->ops->dotvec_local = BVDotVec_Local_Mat; | |
504 | 136588 | bv->ops->scale = BVScale_Mat; | |
505 | 136588 | bv->ops->norm = BVNorm_Mat; | |
506 | 136588 | bv->ops->norm_local = BVNorm_Local_Mat; | |
507 | 136588 | bv->ops->normalize = BVNormalize_Mat; | |
508 | 136588 | bv->ops->matmult = BVMatMult_Mat; | |
509 | 136588 | bv->ops->copy = BVCopy_Mat; | |
510 | 136588 | bv->ops->copycolumn = BVCopyColumn_Mat; | |
511 | 136588 | bv->ops->getcolumn = BVGetColumn_Mat; | |
512 | 136588 | bv->ops->restorecolumn = BVRestoreColumn_Mat; | |
513 | 136588 | bv->ops->getmat = BVGetMat_Default; | |
514 | 136588 | bv->ops->restoremat = BVRestoreMat_Default; | |
515 | } | ||
516 | 141266 | bv->ops->resize = BVResize_Mat; | |
517 | 141266 | bv->ops->getarray = BVGetArray_Mat; | |
518 | 141266 | bv->ops->restorearray = BVRestoreArray_Mat; | |
519 | 141266 | bv->ops->getarrayread = BVGetArrayRead_Mat; | |
520 | 141266 | bv->ops->restorearrayread = BVRestoreArrayRead_Mat; | |
521 | 141266 | bv->ops->destroy = BVDestroy_Mat; | |
522 | 141266 | bv->ops->view = BVView_Mat; | |
523 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
141266 | PetscFunctionReturn(PETSC_SUCCESS); |
524 | } | ||
525 |