From b53ed63b5fa0ac8bffffc0c033fca85011c26e73 Mon Sep 17 00:00:00 2001 From: Yuval Tassa Date: Mon, 12 May 2025 08:58:12 -0700 Subject: [PATCH] Use `2humanoid100.xml` model in a benchmark test. PiperOrigin-RevId: 757784271 Change-Id: I7da11ab85ba9f5e023cdbe3c77d31224f3444ca5 --- .../engine_util_sparse_benchmark_test.cc | 19 +- test/benchmark/testdata/2humanoid100.xml | 123 +++++++++ test/benchmark/testdata/humanoid.xml | 252 ++++++++++++++++++ 3 files changed, 388 insertions(+), 6 deletions(-) create mode 100644 test/benchmark/testdata/2humanoid100.xml create mode 100644 test/benchmark/testdata/humanoid.xml 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 @@ + +