Convert qLD to CSR format.

PiperOrigin-RevId: 728196818
Change-Id: I31bdf32e251293284426ed345019f27fd051a0e1
This commit is contained in:
Yuval Tassa
2025-02-18 07:13:49 -08:00
committed by Copybara-Service
parent 9fb4ec95f8
commit fb07e0d1f7
23 changed files with 160 additions and 159 deletions
+7 -6
View File
@@ -50,20 +50,21 @@ static void BM_solveLD(benchmark::State& state, bool featherstone, bool coil) {
vec[i] = 0.2 + 0.3*i;
}
// make CSR matrix
mjtNum* LDs = mj_stackAllocNum(d, m->nC);
// make legacy matrix
mjtNum* LDlegacy = mj_stackAllocNum(d, m->nM);
mju_zero(LDlegacy, m->nM);
for (int i=0; i < m->nC; i++) {
LDs[i] = d->qLD[d->mapM2C[i]];
LDlegacy[d->mapM2C[i]] = d->qLD[i];
}
// benchmark
while (state.KeepRunningBatch(kNumBenchmarkSteps)) {
for (int i=0; i < kNumBenchmarkSteps; i++) {
mju_copy(res, vec, m->nv);
if (featherstone) {
mj_solveM(m, d, res, vec, 1);
mj_solveLD(m, res, 1, LDlegacy, d->qLDiagInv);
} else {
mju_copy(res, vec, m->nv);
mj_solveLDs(res, LDs, d->qLDiagInv, m->nv, 1,
mj_solveLDs(res, d->qLD, d->qLDiagInv, m->nv, 1,
d->C_rownnz, d->C_rowadr, m->dof_simplenum, d->C_colind);
}
}