Lines Matching refs:Fo
125 KokkosCsrMatrix Fd, Fo; // F in split form
128 KernelHandle kh2; // compute C2, add C2+C4 or C2+Fo
148 PetscIntKokkosView F_NzLeft; // plans to split F (in leafbuf) into Fd, Fo
154 MatColIdxKokkosView Fdjmap; // plans to reduce data in rootBuf to Fd, Fo
336 - mm - contains various info, such as garray2[], F (Fd, Fo) etc.
465 // With recvCol[], we do a series of analysis to get i, j of Fd, Fo, and build plans to reduce nonzeros in recv buffers to Fd and Fo
477 PetscInt FnzDups = 0, Fdnz = 0, FdnzDups = 0, Fonz = 0, FonzDups = 0; // nz (with or without dups) in F, Fd, Fo
508 // Scan column indices (in jbuf[0,nz), might have dups) of this row, and see how many go to Fd and how many go to Fo
539 // Allocate j, jmap, jperm for Fd and Fo
547 // Scan recvColSorted[] again, and fill j, jmap, jperm for Fd and Fo
566 // Scan columns (in jbuf[0,nz) of this row, copy them and their permutation to j[] and jperm[] of Fd and Fo
609 // Output Fd and Fo in KokkosCsrMatrix format
618 PetscCallCXX(mm->Fo = KokkosCsrMatrix("Fo", Fm, n2, Fonz, Foa_d, Foi_d, Foj_d)); // Fo's column size is n2, length of garray2[]
682 auto &Foa = mm->Fo.values;
685 auto Fonz = mm->Fo.nnz();
691 // Reduce data in rootBuf to Fd and Fo
719 Conceptually F has global column indices. In this routine, we spit F into diagonal Fd and off-diagonal Fo.
721 Fo had global column indices at first. We will reduce them into local ones. In doing that, we also take into account the global
723 column indices in Fo and update Fo with local indices.
733 - mm - contains various info, such as garray2[], Fd, Fo, etc.
860 // Build a plan (i.e., F_NzLeft) to split F into Fd and Fo
861 MatRowMapKokkosViewHost Fdi_h(NoInit("Fdi_h"), Fm + 1), Foi_h(NoInit("Foi_h"), Fm + 1); // row pointer of Fd, Fo
883 // Fill Fdj[] and Foj[], i.e., columns of Fd and Fo. Fdj[] are local, but Foj[] are not yet.
923 // Output Fd and Fo in KokkosCsrMatrix format
931 PetscCallCXX(mm->Fo = KokkosCsrMatrix("Fo", Fm, n2, Fonz, Foa_d, Foi_d, Foj_d));
1005 const auto &Fo = mm->Fo;
1007 const auto &Foi = Fo.graph.row_map;
1009 auto &Foa = Fo.values;
1118 // C = (C1+Fd, C2+Fo)
1120 PetscCallCXX(mm->kh2.create_spadd_handle(true)); // C2, Fo are sorted
1122 PetscCallCXX(KokkosSparse::spadd_symbolic(&mm->kh2, mm->C2, mm->Fo, mm->Co));
1124 PetscCallCXX(KokkosSparse::spadd_numeric(&mm->kh2, 1.0, mm->C2, 1.0, mm->Fo, mm->Co));
1155 // C = (C1+Fd, C2+Fo)
1157 PetscCallCXX(KokkosSparse::spadd_numeric(&mm->kh2, 1.0, mm->C2, 1.0, mm->Fo, mm->Co));
1217 PetscCallCXX(KokkosSparse::spgemm_symbolic(mm->kh4, Ao, false, mm->Fo, false, mm->C4));
1218 PetscCallCXX(KokkosSparse::spgemm_numeric(mm->kh4, Ao, false, mm->Fo, false, mm->C4));
1263 PetscCallCXX(KokkosSparse::spgemm_numeric(mm->kh4, Ao, false, mm->Fo, false, mm->C4));