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 | static char help[] = "Test multiplication of a Mat times a BV.\n\n"; | ||
12 | |||
13 | #include <slepcbv.h> | ||
14 | |||
15 | 344 | int main(int argc,char **argv) | |
16 | { | ||
17 | 344 | Vec t,r,v; | |
18 | 344 | Mat B,Ymat; | |
19 | 344 | BV X,Y,Z=NULL,Zcopy=NULL; | |
20 | 344 | PetscInt i,j,m=10,n,k=5,rep=1,Istart,Iend,ld; | |
21 | 344 | PetscScalar *pZ; | |
22 | 344 | PetscReal norm; | |
23 | 344 | PetscViewer view; | |
24 | 344 | PetscBool flg,verbose,fromfile; | |
25 | 344 | char filename[PETSC_MAX_PATH_LEN]; | |
26 | 344 | PetscViewer viewer; | |
27 | 344 | BVMatMultType vmm; | |
28 | |||
29 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
344 | PetscFunctionBeginUser; |
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.
|
344 | PetscCall(SlepcInitialize(&argc,&argv,NULL,help)); |
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.
|
344 | PetscCall(PetscOptionsGetInt(NULL,NULL,"-k",&k,NULL)); |
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.
|
344 | PetscCall(PetscOptionsGetInt(NULL,NULL,"-rep",&rep,NULL)); |
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.
|
344 | PetscCall(PetscOptionsHasName(NULL,NULL,"-verbose",&verbose)); |
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.
|
344 | PetscCall(PetscOptionsGetString(NULL,NULL,"-file",filename,sizeof(filename),&fromfile)); |
35 |
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.
|
344 | PetscCall(MatCreate(PETSC_COMM_WORLD,&B)); |
36 |
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.
|
344 | PetscCall(PetscObjectSetName((PetscObject)B,"B")); |
37 |
2/2✓ Branch 0 taken 5 times.
✓ Branch 1 taken 10 times.
|
344 | if (fromfile) { |
38 | #if defined(PETSC_USE_COMPLEX) | ||
39 | ✗ | PetscCall(PetscPrintf(PETSC_COMM_WORLD," Reading COMPLEX matrix from a binary file...\n")); | |
40 | #else | ||
41 |
4/6✓ Branch 0 taken 1 times.
✓ Branch 1 taken 4 times.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
|
80 | PetscCall(PetscPrintf(PETSC_COMM_WORLD," Reading REAL matrix from a binary file...\n")); |
42 | #endif | ||
43 |
4/6✓ Branch 0 taken 1 times.
✓ Branch 1 taken 4 times.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
|
80 | PetscCall(PetscViewerBinaryOpen(PETSC_COMM_WORLD,filename,FILE_MODE_READ,&viewer)); |
44 |
4/6✓ Branch 0 taken 1 times.
✓ Branch 1 taken 4 times.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
|
80 | PetscCall(MatSetFromOptions(B)); |
45 |
4/6✓ Branch 0 taken 1 times.
✓ Branch 1 taken 4 times.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
|
80 | PetscCall(MatLoad(B,viewer)); |
46 |
4/6✓ Branch 0 taken 1 times.
✓ Branch 1 taken 4 times.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
|
80 | PetscCall(PetscViewerDestroy(&viewer)); |
47 |
4/6✓ Branch 0 taken 1 times.
✓ Branch 1 taken 4 times.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
|
80 | PetscCall(MatGetSize(B,&m,&n)); |
48 |
4/6✓ Branch 0 taken 1 times.
✓ Branch 1 taken 4 times.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
|
80 | PetscCall(MatGetOwnershipRange(B,&Istart,&Iend)); |
49 | } else { | ||
50 | /* Create 1-D Laplacian matrix */ | ||
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.
|
264 | PetscCall(PetscOptionsGetInt(NULL,NULL,"-m",&m,NULL)); |
52 |
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.
|
264 | PetscCall(PetscOptionsGetInt(NULL,NULL,"-n",&n,&flg)); |
53 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
264 | if (!flg) n = m; |
54 |
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.
|
264 | PetscCall(MatSetSizes(B,PETSC_DECIDE,PETSC_DECIDE,m,n)); |
55 |
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.
|
264 | PetscCall(MatSetFromOptions(B)); |
56 |
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.
|
264 | PetscCall(MatGetOwnershipRange(B,&Istart,&Iend)); |
57 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
4136 | for (i=Istart;i<Iend;i++) { |
58 |
7/10✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ 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.
|
3872 | if (i>0 && i-1<n) PetscCall(MatSetValue(B,i,i-1,-1.0,INSERT_VALUES)); |
59 |
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.
|
3872 | if (i+1<n) PetscCall(MatSetValue(B,i,i+1,-1.0,INSERT_VALUES)); |
60 |
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.
|
3872 | if (i<n) PetscCall(MatSetValue(B,i,i,2.0,INSERT_VALUES)); |
61 | } | ||
62 |
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.
|
264 | PetscCall(MatAssemblyBegin(B,MAT_FINAL_ASSEMBLY)); |
63 |
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.
|
264 | PetscCall(MatAssemblyEnd(B,MAT_FINAL_ASSEMBLY)); |
64 | } | ||
65 | |||
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.
|
344 | PetscCall(PetscPrintf(PETSC_COMM_WORLD,"Test BVMatMult (m=%" PetscInt_FMT ", n=%" PetscInt_FMT ", k=%" PetscInt_FMT ").\n",m,n,k)); |
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.
|
344 | PetscCall(MatCreateVecs(B,&t,&r)); |
68 | |||
69 | /* Create BV object X */ | ||
70 |
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.
|
344 | PetscCall(BVCreate(PETSC_COMM_WORLD,&X)); |
71 |
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.
|
344 | PetscCall(PetscObjectSetName((PetscObject)X,"X")); |
72 |
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.
|
344 | PetscCall(BVSetSizesFromVec(X,t,k)); |
73 |
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.
|
344 | PetscCall(BVSetMatMultMethod(X,BV_MATMULT_VECS)); |
74 |
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.
|
344 | PetscCall(BVSetFromOptions(X)); |
75 |
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.
|
344 | PetscCall(BVGetMatMultMethod(X,&vmm)); |
76 |
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.
|
344 | PetscCall(PetscPrintf(PETSC_COMM_WORLD,"Using method: %s\n",BVMatMultTypes[vmm])); |
77 | |||
78 | /* Set up viewer */ | ||
79 |
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.
|
344 | PetscCall(PetscViewerASCIIGetStdout(PETSC_COMM_WORLD,&view)); |
80 |
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.
|
344 | if (verbose) PetscCall(PetscViewerPushFormat(view,PETSC_VIEWER_ASCII_MATLAB)); |
81 | |||
82 | /* Fill X entries */ | ||
83 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
2768 | for (j=0;j<k;j++) { |
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.
|
2424 | PetscCall(BVGetColumn(X,j,&v)); |
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.
|
2424 | PetscCall(VecSet(v,0.0)); |
86 |
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.
|
8304 | for (i=Istart;i<PetscMin(j+1,Iend);i++) PetscCall(VecSetValue(v,i,1.0,INSERT_VALUES)); |
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.
|
2424 | PetscCall(VecAssemblyBegin(v)); |
88 |
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.
|
2424 | PetscCall(VecAssemblyEnd(v)); |
89 |
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.
|
2424 | PetscCall(BVRestoreColumn(X,j,&v)); |
90 | } | ||
91 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
|
344 | if (verbose) { |
92 | ✗ | PetscCall(MatView(B,view)); | |
93 | ✗ | PetscCall(BVView(X,view)); | |
94 | } | ||
95 | |||
96 | /* Create BV object Y */ | ||
97 |
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.
|
344 | PetscCall(BVCreate(PETSC_COMM_WORLD,&Y)); |
98 |
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.
|
344 | PetscCall(PetscObjectSetName((PetscObject)Y,"Y")); |
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.
|
344 | PetscCall(BVSetSizesFromVec(Y,r,k+4)); |
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.
|
344 | PetscCall(BVSetMatMultMethod(Y,BV_MATMULT_VECS)); |
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.
|
344 | PetscCall(BVSetFromOptions(Y)); |
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.
|
344 | PetscCall(BVSetActiveColumns(Y,2,k+2)); |
103 | |||
104 | /* Test BVMatMult */ | ||
105 |
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.
|
688 | for (i=0;i<rep;i++) PetscCall(BVMatMult(X,B,Y)); |
106 |
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.
|
344 | if (verbose) PetscCall(BVView(Y,view)); |
107 | |||
108 |
2/2✓ Branch 0 taken 5 times.
✓ Branch 1 taken 10 times.
|
344 | if (fromfile) { |
109 | /* Test BVMatMultTranspose */ | ||
110 |
4/6✓ Branch 0 taken 1 times.
✓ Branch 1 taken 4 times.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
|
80 | PetscCall(BVDuplicate(X,&Z)); |
111 |
4/6✓ Branch 0 taken 1 times.
✓ Branch 1 taken 4 times.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
|
80 | PetscCall(BVSetRandom(Z)); |
112 |
7/8✓ Branch 0 taken 1 times.
✓ Branch 1 taken 4 times.
✓ Branch 2 taken 5 times.
✓ Branch 3 taken 4 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
✓ Branch 6 taken 1 times.
✓ Branch 7 taken 1 times.
|
160 | for (i=0;i<rep;i++) PetscCall(BVMatMultTranspose(Z,B,Y)); |
113 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 5 times.
|
80 | if (verbose) { |
114 | ✗ | PetscCall(BVView(Z,view)); | |
115 | ✗ | PetscCall(BVView(Y,view)); | |
116 | } | ||
117 |
4/6✓ Branch 0 taken 1 times.
✓ Branch 1 taken 4 times.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
|
80 | PetscCall(BVDestroy(&Z)); |
118 |
4/6✓ Branch 0 taken 1 times.
✓ Branch 1 taken 4 times.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
|
80 | PetscCall(BVMatMultTransposeColumn(Y,B,2)); |
119 |
1/8✗ Branch 0 not taken.
✓ Branch 1 taken 5 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.
|
80 | if (verbose) PetscCall(BVView(Y,view)); |
120 | } | ||
121 | |||
122 | /* Test BVGetMat/RestoreMat */ | ||
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.
|
344 | PetscCall(BVGetMat(Y,&Ymat)); |
124 |
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.
|
344 | PetscCall(PetscObjectSetName((PetscObject)Ymat,"Ymat")); |
125 |
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.
|
344 | if (verbose) PetscCall(MatView(Ymat,view)); |
126 |
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.
|
344 | PetscCall(BVRestoreMat(Y,&Ymat)); |
127 | |||
128 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 5 times.
|
344 | if (!fromfile) { |
129 | /* Create BV object Z */ | ||
130 |
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.
|
264 | PetscCall(BVDuplicateResize(Y,k,&Z)); |
131 |
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.
|
264 | PetscCall(PetscObjectSetName((PetscObject)Z,"Z")); |
132 | |||
133 | /* Fill Z entries */ | ||
134 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
2288 | for (j=0;j<k;j++) { |
135 |
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.
|
2024 | PetscCall(BVGetColumn(Z,j,&v)); |
136 |
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.
|
2024 | PetscCall(VecSet(v,0.0)); |
137 |
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.
|
2024 | if (!Istart) PetscCall(VecSetValue(v,0,1.0,ADD_VALUES)); |
138 |
8/12✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 10 times.
✓ Branch 3 taken 10 times.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✓ Branch 7 taken 8 times.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
2024 | if (j<n && j>=Istart && j<Iend) PetscCall(VecSetValue(v,j,1.0,ADD_VALUES)); |
139 |
8/12✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 10 times.
✓ Branch 3 taken 10 times.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✓ Branch 7 taken 8 times.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
2024 | if (j+1<n && j>=Istart && j<Iend) PetscCall(VecSetValue(v,j+1,-1.0,ADD_VALUES)); |
140 |
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.
|
2024 | PetscCall(VecAssemblyBegin(v)); |
141 |
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.
|
2024 | PetscCall(VecAssemblyEnd(v)); |
142 |
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.
|
2024 | PetscCall(BVRestoreColumn(Z,j,&v)); |
143 | } | ||
144 |
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.
|
264 | if (verbose) PetscCall(BVView(Z,view)); |
145 | |||
146 | /* Save a copy of Z */ | ||
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.
|
264 | PetscCall(BVDuplicate(Z,&Zcopy)); |
148 |
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.
|
264 | PetscCall(BVCopy(Z,Zcopy)); |
149 | |||
150 | /* Test BVMult, check result of previous operations */ | ||
151 |
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.
|
264 | PetscCall(BVMult(Z,-1.0,1.0,Y,NULL)); |
152 |
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.
|
264 | PetscCall(BVNorm(Z,NORM_FROBENIUS,&norm)); |
153 |
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.
|
264 | PetscCall(PetscPrintf(PETSC_COMM_WORLD,"Norm of error: %g\n",(double)norm)); |
154 | } | ||
155 | |||
156 | /* Test BVMatMultColumn, multiply Y(:,2), result in Y(:,3) */ | ||
157 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
344 | if (m==n) { |
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.
|
168 | PetscCall(BVMatMultColumn(Y,B,2)); |
159 |
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.
|
168 | if (verbose) PetscCall(BVView(Y,view)); |
160 | |||
161 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 5 times.
|
168 | if (!fromfile) { |
162 | /* Test BVGetArray, modify Z to match Y */ | ||
163 |
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.
|
88 | PetscCall(BVCopy(Zcopy,Z)); |
164 |
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.
|
88 | PetscCall(BVGetArray(Z,&pZ)); |
165 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
88 | if (Istart==0) { |
166 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
88 | PetscCheck(Iend>2,PETSC_COMM_WORLD,PETSC_ERR_USER_INPUT,"First process must have at least 3 rows"); |
167 |
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.
|
88 | PetscCall(BVGetLeadingDimension(Z,&ld)); |
168 | 88 | pZ[ld] = 5.0; /* modify 3 first entries of second column */ | |
169 | 88 | pZ[ld+1] = -4.0; | |
170 | 88 | pZ[ld+2] = 1.0; | |
171 | } | ||
172 |
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.
|
88 | PetscCall(BVRestoreArray(Z,&pZ)); |
173 |
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.
|
88 | if (verbose) PetscCall(BVView(Z,view)); |
174 | |||
175 | /* Check result again with BVMult */ | ||
176 |
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.
|
88 | PetscCall(BVMult(Z,-1.0,1.0,Y,NULL)); |
177 |
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.
|
88 | PetscCall(BVNorm(Z,NORM_FROBENIUS,&norm)); |
178 |
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.
|
88 | PetscCall(PetscPrintf(PETSC_COMM_WORLD,"Norm of error: %g\n",(double)norm)); |
179 | } | ||
180 | } | ||
181 | |||
182 |
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.
|
344 | PetscCall(BVDestroy(&Z)); |
183 |
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.
|
344 | PetscCall(BVDestroy(&Zcopy)); |
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.
|
344 | PetscCall(BVDestroy(&X)); |
185 |
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.
|
344 | PetscCall(BVDestroy(&Y)); |
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.
|
344 | PetscCall(MatDestroy(&B)); |
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.
|
344 | PetscCall(VecDestroy(&t)); |
188 |
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.
|
344 | PetscCall(VecDestroy(&r)); |
189 |
3/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
|
344 | PetscCall(SlepcFinalize()); |
190 | return 0; | ||
191 | } | ||
192 | |||
193 | /*TEST | ||
194 | |||
195 | testset: | ||
196 | output_file: output/test7_1.out | ||
197 | filter: grep -v "Using method" | ||
198 | test: | ||
199 | suffix: 1 | ||
200 | args: -bv_type {{vecs contiguous svec mat}shared output} -bv_matmult vecs | ||
201 | test: | ||
202 | suffix: 1_cuda | ||
203 | args: -bv_type {{svec mat}} -mat_type aijcusparse -bv_matmult vecs | ||
204 | requires: cuda | ||
205 | test: | ||
206 | suffix: 1_hip | ||
207 | args: -bv_type {{svec mat}} -mat_type aijhipsparse -bv_matmult vecs | ||
208 | requires: hip | ||
209 | test: | ||
210 | suffix: 1_mat | ||
211 | args: -bv_type {{vecs contiguous svec mat}shared output} -bv_matmult mat | ||
212 | |||
213 | testset: | ||
214 | output_file: output/test7_2.out | ||
215 | filter: grep -v "Using method" | sed -e "s/error: -0\./error: 0./" | ||
216 | args: -m 34 -n 38 -k 9 | ||
217 | nsize: 2 | ||
218 | test: | ||
219 | suffix: 2 | ||
220 | args: -bv_type {{vecs contiguous svec mat}shared output} -bv_matmult vecs | ||
221 | test: | ||
222 | suffix: 2_cuda | ||
223 | args: -bv_type {{svec mat}} -mat_type aijcusparse -bv_matmult vecs | ||
224 | requires: cuda | ||
225 | test: | ||
226 | suffix: 2_hip | ||
227 | args: -bv_type {{svec mat}} -mat_type aijhipsparse -bv_matmult vecs | ||
228 | requires: hip | ||
229 | test: | ||
230 | suffix: 2_mat | ||
231 | args: -bv_type {{vecs contiguous svec mat}shared output} -bv_matmult mat | ||
232 | |||
233 | testset: | ||
234 | output_file: output/test7_3.out | ||
235 | filter: grep -v "Using method" | ||
236 | args: -file ${SLEPC_DIR}/share/slepc/datafiles/matrices/bfw62a.petsc -bv_reproducible_random | ||
237 | requires: double !complex !defined(PETSC_USE_64BIT_INDICES) | ||
238 | nsize: 2 | ||
239 | test: | ||
240 | suffix: 3 | ||
241 | args: -bv_type {{vecs contiguous svec mat}shared output} -bv_matmult {{vecs mat}} | ||
242 | |||
243 | TEST*/ | ||
244 |