You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The almost million individual wires (segments) in DUNE FD lead to substantial memory usage in WCT jobs. @HaiwangYu points out that maybe WCT does not need to actually "know" about wire endpoints in WCT and perhaps we can not load them in.
Right now here are some ways that WCT deals with wires in ways that doesn't actually care about their endpoints:
First thing WCT does is "correct" various errors in many wires files so that wires are uniform, parallel and co-planar. Now part of WCT deals with wires violating these symmetries.
The simulation does not care where wire endpoints are, but instead just where the wire is in its array of wires. The Pimpos object handles transformation between x,y,z and wire-plane coordinates which maps to wire-in-plane and this object needs only wire-0 and wire-1 to form the transformation.
The mapping between wire-in-plane number and channel number is still required.
SP needs to know the channel IDs in "wire order".
What else?
If nothing is truly needing wire endpoints we may reduce memory by doing something like:
Post-processes wires file to produced a much smaller "wireless" file.
It holds wire-channel map.
Perhaps this can be populated algorithmicallly in the Jsonnet for some cases.
It holds bounding box of the wire end points
It holds full wire-0 and wire-1 endpoints.
A new IWire needs implementing to elide the endpoints
A new IAnodePlane / IAnodeFace / IWirePlane needs implementing that reads the new "wireless" file.
Note, the new IWire could still provide endpoint methods if given two infos: int wip and a pointer to a shared struct of giving plane bounding box. It could then calculate encpoints "live" on each call.
We must survey existing users of IWire to see if this plan is feasible before attempting to implement it.
The text was updated successfully, but these errors were encountered:
The almost million individual wires (segments) in DUNE FD lead to substantial memory usage in WCT jobs. @HaiwangYu points out that maybe WCT does not need to actually "know" about wire endpoints in WCT and perhaps we can not load them in.
Right now here are some ways that WCT deals with wires in ways that doesn't actually care about their endpoints:
Pimpos
object handles transformation between x,y,z and wire-plane coordinates which maps to wire-in-plane and this object needs only wire-0 and wire-1 to form the transformation.What else?
If nothing is truly needing wire endpoints we may reduce memory by doing something like:
IWire
needs implementing to elide the endpointsIAnodePlane
/IAnodeFace
/IWirePlane
needs implementing that reads the new "wireless" file.Note, the new
IWire
could still provide endpoint methods if given two infos:int wip
and a pointer to a shared struct of giving plane bounding box. It could then calculate encpoints "live" on each call.We must survey existing users of
IWire
to see if this plan is feasible before attempting to implement it.The text was updated successfully, but these errors were encountered: