Dynamically allocate contact and efc_ arrays on a new memory arena.
- Add private function `mj_arenaAlloc`. This is used internally to allocate memory from the arena. - Add private function `mj_nefc` to count constraints. This function returns a tight upper bound on `d->nefc`. The number of counted constraints can be slightly bigger than exact `d->nefc` in the case of constraints with empty Jacobian, as when placing a frictional tendon between two world sites. - Add new `memory` attribute to the `size` XML element for specification of arena memory size. This attribute is mutually exclusive with `nstack` and `njmax` specifications, which are now deprecated (but left around for the time being for legacy compatibility). - Move `d->stack` to the end of the new arena space. The stack now grows in reverse from the end. PiperOrigin-RevId: 479341539 Change-Id: Ie019c202e0908577ffc6f833a37920858116f667
This commit is contained in:
committed by
Copybara-Service
parent
4d85a464cc
commit
58fd72f53d
@@ -26,6 +26,7 @@
|
||||
#include <GLFW/glfw3.h>
|
||||
#include "lodepng.h"
|
||||
#include <mujoco/mjmodel.h>
|
||||
#include <mujoco/mjtnum.h>
|
||||
#include <mujoco/mjvisualize.h>
|
||||
#include <mujoco/mjxmacro.h>
|
||||
#include "glfw_dispatch.h"
|
||||
@@ -475,9 +476,9 @@ void infotext(mj::Simulate* sim,
|
||||
solerr = mju_log10(mju_max(mjMINVAL, solerr));
|
||||
|
||||
// prepare info text
|
||||
mju::strcpy_arr(title, "Time\nSize\nCPU\nSolver \nFPS\nstack\nconbuf\nefcbuf");
|
||||
mju::strcpy_arr(title, "Time\nSize\nCPU\nSolver \nFPS\nMemory");
|
||||
mju::sprintf_arr(content,
|
||||
"%-9.3f\n%d (%d con)\n%.3f\n%.1f (%d it)\n%.0f\n%.3f\n%.3f\n%.3f",
|
||||
"%-9.3f\n%d (%d con)\n%.3f\n%.1f (%d it)\n%.0f\n%.3f",
|
||||
d->time,
|
||||
d->nefc, d->ncon,
|
||||
sim->run ?
|
||||
@@ -485,9 +486,7 @@ void infotext(mj::Simulate* sim,
|
||||
d->timer[mjTIMER_FORWARD].duration / mjMAX(1, d->timer[mjTIMER_FORWARD].number),
|
||||
solerr, d->solver_iter,
|
||||
1/interval,
|
||||
d->maxuse_stack/(double)d->nstack,
|
||||
d->maxuse_con/(double)m->nconmax,
|
||||
d->maxuse_efc/(double)m->njmax);
|
||||
d->maxuse_arena/(double)(d->nstack * sizeof(mjtNum)));
|
||||
|
||||
// add Energy if enabled
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user