Data Providers
Intel® Cluster Checker uses environment variables to configure data providers. The namespace CLCK_PROVIDER_PROVIDER-NAME is reserved for each provider, where the PROVIDER-NAME is the name of the corresponding provider. Each provider can define its own variables within its namespace, and each provider is responsible for reading its own environment variables. While these variables can be set in the user’s shell initialization files (such as .bashrc), the recommended method is to define these variables in the providers configuration file. An example providers configuration file is located at /opt/intel/clck/20.x.y/etc/providers/select_solutions_sim_mod_base_2018.0.xml or /opt/intel/oneapi/clck/<version>/etc/providers/select_solutions_sim_mod_base_2018.0.xml. The providers configuration file must be included in the framework definition using the following syntax:
<configuration> <framework_definition name="myFWD"> <providers config_file="select_solutions_sim_mod_base_2018.0.xml"> <provider>dgemm</provider> </providers> </framework_definition> </configuration>
The XML configuration file hides the raw environment variable names. Instead, the environment variable gets constructed by combining the XML tag names. For example, the following construct will generate the environment variable CLCK_PROVIDER_HPL_CLUSTER_FABRICS, which would then be made available to the HPL_CLUSTER provider.
<collector> ... <provider> <hpl_cluster> <fabrics>value</fabrics> </hpl_cluster> </provider> ... </collector>
Note that the value is enclosed within double quotes when passed to the provider. Consequently, if the value provided in the XML file contains double quotes, it will be ignored and the environment variable will not be constructed.
XML configuration files can also be used to enable running the same provider multiple times with disjoint sets of configuration options. For example, the following XML configuration would run the HPL_CLUSTER twice, once with CLCK_PROVIDER_HPL_CLUSTER_FABRICS= shm:tcp and once with CLCK_PROVIDER_HPL_CLUSTER_FABRICS= shm:ofi.
<collector> ... <provider> <hpl_cluster> <optionset id="1"> <fabrics>shm:tcp</fabrics> </optionset> <optionset id="2"> <fabrics>shm:ofi</fabrics> </optionset> </hpl_cluster> </provider> ... </collector>
The id attribute is required. For each run, the value of the corresponding id attribute will be stored in the database under the OptionID column. The value of this attribute is purely arbitrary and not meaningful other than to distinguish one set of options from another in the output columns of the database. However, the value must not contain tabs, newlines, parentheses, ampersands, vertical bars, the greater-than symbol <, the tilde symbol ~, spaces, semicolons, or double quotes. If no optionset tags are specified, the OptionID column will contain the string default. Additionally, if any tags are specified outside of optionset tags, the corresponding environment variables will be made available for every single optionset specified.
By default, providers timeout after 60 seconds (constant time). It is possible to specify the timeout value for any provider in the providers config file. The default scale is constant, and accepted scale values are linear, constant, and logarithmic. To specify a timeout (in seconds) for a provider in the providers config file, use the following syntax:
<hpcg_cluster> <timeout scale="linear">700</timeout> </hpcg_cluster>
To specify a timeout value for a specific optionset, use the following syntax:
<hpcg_cluster> <optionset id="1"> <timeout scale="linear">70</timeout> </optionset> </hpcg_cluster>
A timeout specified in an individual optionset supersedes a timeout specified for the provider generally. If the computed timeout is less than 5 seconds, it will default 5 seconds.