Never use more threads than meshes for multi-threaded compile.
PiperOrigin-RevId: 651728817 Change-Id: Ib607d528c25a10e2cdb8c2b0b0da2189683d2691
This commit is contained in:
committed by
Copybara-Service
parent
9c9faa02d5
commit
f1aa52aa9b
@@ -3322,8 +3322,9 @@ void CompileMesh(mjCMesh* mesh, const mjVFS* vfs, std::exception_ptr& exception,
|
|||||||
void mjCModel::CompileMeshes(const mjVFS* vfs) {
|
void mjCModel::CompileMeshes(const mjVFS* vfs) {
|
||||||
std::vector<std::thread> threads;
|
std::vector<std::thread> threads;
|
||||||
int nmesh = meshes_.size();
|
int nmesh = meshes_.size();
|
||||||
int hardware_threads = std::thread::hardware_concurrency();
|
int hardware_threads = std::thread::hardware_concurrency() / 2;
|
||||||
int nthread = std::max(1, std::min(kMaxCompilerThreads, hardware_threads / 2));
|
int maxthread = std::min(nmesh, std::min(kMaxCompilerThreads, hardware_threads));
|
||||||
|
int nthread = std::max(1, maxthread);
|
||||||
|
|
||||||
threads.reserve(nthread);
|
threads.reserve(nthread);
|
||||||
|
|
||||||
@@ -3445,7 +3446,7 @@ void mjCModel::TryCompile(mjModel*& m, mjData*& d, const mjVFS* vfs) {
|
|||||||
SetNuser();
|
SetNuser();
|
||||||
|
|
||||||
// compile meshes (needed for geom compilation)
|
// compile meshes (needed for geom compilation)
|
||||||
if (usethread) {
|
if (usethread && meshes_.size() > 1) {
|
||||||
// multi-threaded mesh compile
|
// multi-threaded mesh compile
|
||||||
CompileMeshes(vfs);
|
CompileMeshes(vfs);
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Reference in New Issue
Block a user