diff --git a/test/benchmark/engine_util_sparse_benchmark_test.cc b/test/benchmark/engine_util_sparse_benchmark_test.cc index 2c2ff6aa..6be10ded 100644 --- a/test/benchmark/engine_util_sparse_benchmark_test.cc +++ b/test/benchmark/engine_util_sparse_benchmark_test.cc @@ -544,11 +544,15 @@ BM_transposeSparse_old(benchmark::State& state) { BENCHMARK(BM_transposeSparse_old); static void BM_sqrMatTDSparse(benchmark::State& state, SqrMatTDFuncPtr func) { - static mjModel* m = LoadModelFromPath("humanoid/humanoid100.xml"); - mjData* d = mj_makeData(m); + static mjModel* m = + LoadModelFromPath("../test/benchmark/testdata/2humanoid100.xml"); - // force use of sparse matrices + // force use of sparse matrices, Newton solver, no islands m->opt.jacobian = mjJAC_SPARSE; + m->opt.solver = mjSOL_NEWTON; + m->opt.enableflags &= ~mjENBL_ISLAND; + + mjData* d = mj_makeData(m); // warm-up rollout to get a typical state while (d->time < 2) { @@ -575,10 +579,13 @@ static void BM_sqrMatTDSparse(benchmark::State& state, SqrMatTDFuncPtr func) { // time benchmark if (func) { - for (auto s : state) { - mju_sqrMatTDUncompressedInit(rowadr, m->nv); + mju_sqrMatTDSparseCount(rownnz, rowadr, m->nv, + d->efc_J_rownnz, d->efc_J_rowadr, d->efc_J_colind, + d->efc_JT_rownnz, d->efc_JT_rowadr, + d->efc_JT_colind, nullptr, d, 1); - // compute H = J'*D*J, uncompressed layout + for (auto s : state) { + // compute H = J'*D*J, compressed layout func(H, d->efc_J, d->efc_JT, D, d->nefc, m->nv, rownnz, rowadr, colind, d->efc_J_rownnz, d->efc_J_rowadr, d->efc_J_colind, NULL, d->efc_JT_rownnz, d->efc_JT_rowadr, d->efc_JT_colind, diff --git a/test/benchmark/testdata/2humanoid100.xml b/test/benchmark/testdata/2humanoid100.xml new file mode 100644 index 00000000..424ed2c4 --- /dev/null +++ b/test/benchmark/testdata/2humanoid100.xml @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/test/benchmark/testdata/humanoid.xml b/test/benchmark/testdata/humanoid.xml new file mode 100644 index 00000000..7545e193 --- /dev/null +++ b/test/benchmark/testdata/humanoid.xml @@ -0,0 +1,252 @@ + +