| 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 |