Frame: Dynamically balance catalog splats
This commit is contained in:
1 parent
7b034f42e8
commit
d9f2c83b9f
1 file changed
+9
-4
+9
-4
@@ -333,10 +333,15 @@ size_t frame_splat_catalog(const FrameLensMesh *mesh,
|
|||||||
#pragma omp parallel num_threads((int)worker_count) reduction(+ : images)
|
#pragma omp parallel num_threads((int)worker_count) reduction(+ : images)
|
||||||
{
|
{
|
||||||
const size_t worker = (size_t)omp_get_thread_num();
|
const size_t worker = (size_t)omp_get_thread_num();
|
||||||
const size_t first = mesh->triangle_count * worker / worker_count;
|
/* Source density and lens magnification can vary by orders of magnitude
|
||||||
const size_t last = mesh->triangle_count * (worker + 1) / worker_count;
|
* between neighboring image triangles. Dynamic single-triangle chunks
|
||||||
images += splat_catalog_triangles(mesh, catalog, private_hdr[worker], width,
|
* prevent a small sky region from leaving the other private HDR workers
|
||||||
height, exposure, psf, first, last);
|
* idle. Each worker still owns its HDR buffer exclusively. */
|
||||||
|
#pragma omp for schedule(dynamic, 1)
|
||||||
|
for (size_t triangle = 0; triangle < mesh->triangle_count; ++triangle)
|
||||||
|
images += splat_catalog_triangles(mesh, catalog, private_hdr[worker],
|
||||||
|
width, height, exposure, psf, triangle,
|
||||||
|
triangle + 1);
|
||||||
}
|
}
|
||||||
#pragma omp parallel for schedule(static)
|
#pragma omp parallel for schedule(static)
|
||||||
for (size_t pixel = 0; pixel < pixel_count; ++pixel)
|
for (size_t pixel = 0; pixel < pixel_count; ++pixel)
|
||||||
|
|||||||
Reference in new issue
Block a user