Convert qLD to CSR format.

PiperOrigin-RevId: 723955038
Change-Id: I30c3dc7f59739e89ae5fff8841432bc74717ec1b
This commit is contained in:
Yuval Tassa
2025-02-06 08:58:45 -08:00
committed by Copybara-Service
parent cb1696eb34
commit c27d3758c2
22 changed files with 151 additions and 153 deletions
+9 -7
View File
@@ -43,21 +43,23 @@ static void BM_factorI(benchmark::State& state, bool legacy, bool coil) {
// allocate inputs and outputs
mj_markStack(d);
// CSR matrices
mjtNum* Ms = mj_stackAllocNum(d, m->nC);
mjtNum* LDs = mj_stackAllocNum(d, m->nC);
// M: mass matrix in CSR format
mjtNum* M = mj_stackAllocNum(d, m->nC);
for (int i=0; i < m->nC; i++) {
Ms[i] = d->qM[d->mapM2C[i]];
M[i] = d->qM[d->mapM2C[i]];
}
// LDlegacy: legacy LD matrix (size nM)
mjtNum* LDlegacy = mj_stackAllocNum(d, m->nM);
// benchmark
while (state.KeepRunningBatch(kNumBenchmarkSteps)) {
for (int i=0; i < kNumBenchmarkSteps; i++) {
if (legacy) {
mj_factorI(m, d, d->qM, d->qLD, d->qLDiagInv);
mj_factorI(m, d, d->qM, LDlegacy, d->qLDiagInv);
} else {
mju_copy(LDs, Ms, m->nC);
mj_factorIs(LDs, d->qLDiagInv, m->nv,
mju_copy(d->qLD, M, m->nC);
mj_factorIs(d->qLD, d->qLDiagInv, m->nv,
d->C_rownnz, d->C_rowadr, m->dof_simplenum, d->C_colind);
}
}