This is the first release of PartitionMaker. Its main functionalities are:
Full chain DAQ/HLTI partitions (ROS + LVL2 + EB + EF) with or without RoI Builder.
Capability of creating only segments (ROS, LVL2, EB and EF).
The segments have automatic subsegments generation capabilities.
Support for Emulated or Real Dataflow devices (ROS, pROS, SFI and SFO).
Support for loading an already existing partition for edition.
Possibility of editing any partition parameter in a fast, intuitive way, after produce a partition by means of high level functions.
Some general consistency checking already implemented (example: check whether a pROS is present when desired a ROS + LVL2 + EB partition).
Possibility for choosing between TCP or UDP network protocols.
Possibility for choosing between optimized or debug applications.
Easy to set ROB to ROS map information.
Documentation available for developers interested in develop scripts using the PartitionMaker.
Possibility of using real algorithms (for LVL2 only)
Possibility of using preloaded data.
Histogramming support for LVL2.
Possibility of creating partitions using templated applications.
A partition can be created using previously created segments.
A It is possible to optionally specify all the running parameters when using real algorithms.
This is the first release of FarmScanner. Its main functionalities are:
Transparent interaction with the PartitionMaker
Retrieve in parallel the information of nodes within a cluster.
Assign of functions (L2PU, ROS, L2SV, etc) to nodes, so the PartitionMaker will know which nodes to use when creating an application.
Possibility to assign single or multiple applications per node with load balancing based selection.
Possibility to add nodes that can perform any kind of function within a partition.
The nodes can be returned to the user as a list of OKS Computer Objetcs or as an OKS ComputerSet object.
The nodes can be added without a SSH access (offline) mode.
Imagine that we want to create a full chain, localhost, partition, with the following options:
1 Emulated Readout System (ROSE)
3 RoBs per ROSE (ROB)
1 LVL2 Supervisor (L2SV)
1 LVL2 Processing Unit (L2PU) with 1 Worker Thread (WT)
1 Sub Farm Input (SFI)
1 Event Filter Application (EFD) with one Processing Task (PT)
1 Sub Farm Output (SFO)
TCP network protocol, since we have the ROSE and the LVL2 Result Handler in the same node.
You don't need to specify the use of LVL2 Result Handler (ex-pROS) or a Dataflow Manager (DFM), since the PartitionMaker automatically insert them as needed. So, let's imagine that we want to generate our localhost partition on the pcatb123 node. To start, after login on the pcatb123 node, just call, from the command line, the PartitionMaker integrated environment by typing pmaker.
Next, after the environment is opened, just type the following commands:
cluster = pm.farmscanner.FarmScanner(localHostNode = 'pcatb123')
robMap = pm.rossegment.genROBMap('PartitionMaker/ROBMap.txt')
robMap = pm.rossegment.reduceROBMap(robMap, 1, 3)
part = pm.tdaqpartition.TDAQPartition(cluster, name='part_lh', robMap=robMap, nL2SV=1, nL2PU=1, nWT=1, nSFI=1, nEFD=1, nPT=1, nSFO=1, useROSE=True, useTCP=True)
pm.project.quickGenerate(part.getPartition(), printAll=True)
After these 5 commands, a partition file named 'part_lh.data.xml' will be created in your local directory. Below follows the explanation of each of the above typed commands.
This command creates a cluster containing just one node (pcatb123) already set for localhost operation.
Reads from a disk file the mapping between the ROBs and the ROSs, returning this map as a python map.
Since the TDAQPartition class gets the information about number of ROSs and number of ROBs per ROS, you must reduce the ROB map, so it can be the size we want, in this case, we are reducing this map to just one ROS, containing 3 ROBs attached to it.
Initializes the class that will, at the end, return an OKS Partition object fully configured, based on the parameters passed to its constructor. Just note that, since we are explicitly typing the parameter name and value ('nL2SV=1', for instance), they can be in any order, so that it would not be an error place the 'nL2SV=1' parameter after the parameter 'useROSE=True' for instance.
Generates the partition file, by receiving the OKS components returned by the method part.getPartition. The printAll parameter is optional and tells the method to print all objects parameters in the partition file. If this value is False (the default), only the parameters which values differs from their initial value within the schema file will be printed.
IMPORTANT NOTE: the PartitionMaker follows the python's syntax, so, for instance, you must not insert spaces in the left side of the above typed commands. More information can be found here.
For more information on parameters settings, helper functions, other functionalities, users are invited to take a look at the DOxygen documentation in the $PARTITION_MAKER_HOME/Documents/DOxygen/index.html.