v1.0.0-rc.144 (#54)
Build Packages / build:rpm (ubuntu2404) (push) Successful in 8m58s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 11m53s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 10m39s
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 7m34s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 9m18s
Build Packages / build:rpm (rocky8) (push) Successful in 10m4s
Build Packages / build:rpm (rocky9) (push) Successful in 11m17s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 9m47s
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 10m47s
Build Packages / build:rpm (rocky9_sls9) (push) Successful in 10m33s
Build Packages / Generate python client (push) Successful in 27s
Build Packages / Unit tests (push) Has been skipped
Build Packages / Create release (push) Has been skipped
Build Packages / Build documentation (push) Successful in 1m8s
Build Packages / XDS test (durin plugin) (push) Successful in 7m40s
Build Packages / XDS test (JFJoch plugin) (push) Successful in 7m23s
Build Packages / XDS test (neggia plugin) (push) Successful in 7m9s
Build Packages / DIALS test (push) Successful in 11m15s

This is an UNSTABLE release. The release has significant modifications and bug fixes, if things go wrong, it is better to revert to 1.0.0-rc.132.

* jfjoch_broker: Improve performance of preview JPEG image generator at receiver startup (saving about 150 ms on measurement start for 16M)

Reviewed-on: #54
Co-authored-by: Filip Leonarski <filip.leonarski@psi.ch>
Co-committed-by: Filip Leonarski <filip.leonarski@psi.ch>
This commit was merged in pull request #54.
This commit is contained in:
2026-05-01 17:06:36 +02:00
committed by leonarski_f
parent 6e0bb971ac
commit 7d34e8a049
147 changed files with 294 additions and 207 deletions
+15 -14
View File
@@ -40,9 +40,9 @@ AzimuthalIntegrationMapping::AzimuthalIntegrationMapping(const DiffractionExperi
nthreads = std::clamp<size_t>(nthreads, 1, 64);
if (!experiment.IsGeometryTransformed())
SetupRawGeom(experiment, mask.GetMaskRaw(experiment), nthreads);
SetupRawGeom(experiment, mask.GetMaskRaw());
else
SetupConvGeom(experiment.GetDiffractionGeometry(),mask.GetMask(), nthreads);
SetupConvGeom(experiment.GetDiffractionGeometry(),mask.GetMask());
UpdateMaxBinNumber();
}
@@ -55,9 +55,7 @@ void AzimuthalIntegrationMapping::SetupConvGeomRows(const DiffractionGeometry &g
}
}
void AzimuthalIntegrationMapping::SetupConvGeom(const DiffractionGeometry &geom,
const std::vector<uint32_t> &mask,
size_t nthreads) {
void AzimuthalIntegrationMapping::SetupConvGeom(const DiffractionGeometry &geom, const std::vector<uint32_t> &mask) {
pixel_to_bin.resize(width * height, UINT16_MAX);
pixel_resolution.resize(width * height, 0);
corrections.resize(width * height, 0);
@@ -68,13 +66,16 @@ void AzimuthalIntegrationMapping::SetupConvGeom(const DiffractionGeometry &geom,
if (nthreads <= 1) {
SetupConvGeomRows(geom, mask, 0, height);
} else {
nthreads = std::min(nthreads, height);
auto local_nthreads = std::min(nthreads, height);
std::vector<std::future<void>> futures;
futures.reserve(local_nthreads);
for (size_t t = 0; t < nthreads; ++t)
for (size_t t = 0; t < local_nthreads; ++t)
futures.emplace_back(std::async(std::launch::async,
&AzimuthalIntegrationMapping::SetupConvGeomRows,
this, std::cref(geom), std::cref(mask), t * height / nthreads, (t + 1) * height / nthreads));
this, std::cref(geom), std::cref(mask),
t * height / local_nthreads,
(t + 1) * height / local_nthreads));
for (auto &f: futures)
f.get();
@@ -82,7 +83,7 @@ void AzimuthalIntegrationMapping::SetupConvGeom(const DiffractionGeometry &geom,
}
void AzimuthalIntegrationMapping::SetupRawGeom(const DiffractionExperiment &experiment,
const std::vector<uint32_t> &mask, size_t nthreads) {
const std::vector<uint32_t> &mask) {
if (mask.size() != RAW_MODULE_SIZE * experiment.GetModulesNum())
throw JFJochException(JFJochExceptionCategory::InputParameterInvalid, "Mask size invalid");
@@ -100,13 +101,13 @@ void AzimuthalIntegrationMapping::SetupRawGeom(const DiffractionExperiment &expe
}
}
} else {
nthreads = std::min<size_t>(nthreads, experiment.GetModulesNum());
auto local_nthreads = std::min<size_t>(nthreads, experiment.GetModulesNum());
std::vector<std::future<void>> futures;
futures.reserve(nthreads);
futures.reserve(local_nthreads);
for (size_t t = 0; t < nthreads; ++t) {
const size_t module_begin = t * experiment.GetModulesNum() / nthreads;
const size_t module_end = (t + 1) * experiment.GetModulesNum() / nthreads;
for (size_t t = 0; t < local_nthreads; ++t) {
const size_t module_begin = t * experiment.GetModulesNum() / local_nthreads;
const size_t module_end = (t + 1) * experiment.GetModulesNum() / local_nthreads;
futures.emplace_back(std::async(std::launch::async, [&, module_begin, module_end] {
for (size_t m = module_begin; m < module_end; ++m) {