Choose timezone
Your profile timezone:
Color code: (critical, news during the meeting: green, news from this week: blue, news from last week: purple, no news: black)
High priority Framework issues:
Global calibration topics:
Sync reconstruction
Async reconstruction
EPN major topics:
Other EPN topics:
Full system test issues:
Topology generation:
AliECS related topics:
GPU ROCm / compiler topics:
TPC GPU Processing
TPC processing performance regression:
General GPU Processing
Info in
, ...) at the beginning of the message string to assign the proper log levelYELLOW
) for ALARM
messagesUtilities/EPNMonitoring/src/EPNstderrMonitor.cxx
for EPN InfoLoggerDeviceInfo::logLevel
set to --severity
from command line arguments
DeviceControl::logLevel
which determines the filter severity in the GUI
/home/epn/odc/files
in DPL workflows to remove the dependency on the NFS
logWatcher.sh
and logFetcher
scripts modified by EPN to remove dependencies on epnlog
user
log_access
role to allow access in logWatcher
mode to retrieve log files, e.g. for on-call shiftersMulti-class classification
Area overlap study
Plans & To-Do's
Title and text; High priority, medium priority, low priority; short term, mid term, long term; other
gpu-reco-workflow
: no progress yet; will start after the tracklet finding is ported.SMatrixGPU
on the host, under particular configuration: no progress yet. Consider the following structs to understand the problem.
struct point_soa { std::vector<int> x, y, x; };
point_soa p_soa = {{1, 2, 3}, {4, 5, 6}, {8, 9, 10}};
struct point { int x, y, z; };
point& p = { p_soa[1].x, p_soa[1].y, p_soa[1].z }; // error
struct point_reference { int& x, y, z; };
point_reference pr = { p_soa[1].x, p_soa[1].y, p_soa[1].z }; // works
pr = p_soa[1]; // we want something like this
#include <cstddef>
#include <iostream>
#include <vector>
template <typename T> using value = T;
template <typename T> using reference = T&;
template <typename T> using const_reference = const T&;
template <template <class> class F_in, template <template <class> class> class S>
struct proxy_type : S<F_in> {
template<template <class> class F_out>
operator S<F_out>() const {
auto& [x, y, z] = *this;
return {x, y, z};
}
};
template <template <class> class F, template <template <class> class> class S>
struct wrapper {
S<F> data;
proxy_type<reference, S> operator[](std::size_t i) {
auto& [x, y, z] = data;
return {x[i], y[i], z[i]};
}
proxy_type<const_reference, S> operator[](std::size_t i) const {
auto& [x, y, z] = data;
return {x[i], y[i], z[i]};
}
};
template<template <class> class F> struct S { F<int> x, y, z; };
int main() {
wrapper<std::vector, S> my_array = {{{1, 2, 3}, {4, 5, 6}, {8, 9, 10}}};
S<reference> r = my_array[1];
r.x = 42; // my_array[1] changed
S<value> v = my_array[1];
v.x = 43; // v ist just a copy, my_array[1] remains unchanged
S<const_reference> cr = my_array[1];
cr.x = 43; // error: cannot assign to const-qualified type
std::cout << cr.x << std::endl; // 42
return 0;
}