Client Configuration#
Howso Engine’s python client (HowsoDirectClient) is designed to work well
without any special configuration. However, there may be circumstances where
additional options may be useful.
How to Create a Configuration File#
The configuration file is a simple YAML text file with the name howso.yml
and is located in one of these places:
At any valid file path that is stored in an environment variable:
HOWSO_CONFIG,Within your current working directory,
Within your OS-specific “home” directory inside a directory called
.howso,
On Windows, the “home” directory is stored in the
%USERPROFILE%environment variable.On MacOS or Linux, the “home” directory is the location stored in the
$USERenvironment variable.
Within your configured
XDG_DIR_CONFIG_PATHpath (see documentation at freedesktop.org for more information).
Note
If there are multiple howso.yml files, they will be searched for in the above
order and the first one found will be used.
Structure of the configuration file#
The top-level of the file is the howso section:
howsoThis is the top-level for Howso Engine options. It has two primary sub-sections:
clientandclient_extra_params:clientSet the client to use by it’s dotted Python path. The default value is
howso.direct.HowsoDirectClient.This is an advanced user option can be used to define and use other clients which subclass
HowsoDirectClientbut provide alternate behavior. This may be useful for adding additional authentication, for example.client_extra_paramsThis section is for providing options to Amalgam (
amalgam) and the Howso Engine (core):amalgamHowso Engine is built upon Amalgam. This section holds options that are specific to the usage of Amalgam and/or the Python client: amalgam-lang. The options here are as follows:
debugfalse(the default)trueUse this option for additional debugging information in the Amalgam trace files.
library_pathSet a full path to an Amalgam shared library (DLL, SO, DyLib). This is an advanced setting for developers who compile their own Amalgam shared object binaries.
archTarget CPU architecture of the amalgam library. This is determined programmatically by default and should only be overridden here by advanced users.
Valid values are:
x86_64- Most Windows, older MacOS, and linux machinesarm64- Modern MacOS and some Linux machinesarm64_8a- Specifically compiled for CPUs compatible with generation 1aarch64instruction sets such as early Raspberry Pi’s and some early Graviton processors.
execution_trace_dirSet the desired path where tracefiles should be written. The path must be a valid directory with write permission for the operating user. The default value is the current working directory.
execution_trace_fileSet the desired file name for the trace files. Default value is
<trainee_name>.trace.library_postfixThe Amalgam shared libraries are compiled for different modes of operation. Each of the valid values for this option are:
-mtfor Multithreaded operation. This is almost always the best option (and is thus the default on most systems).-stfor Singlethreaded operation. In rare cases usually involving small Trainee models, this may be the best option.-openmpfor Multi Processing using the OpenMP library. This option may be useful when latency is paramount.-pgcfor “Pedantic Garbage Collection”. This is exclusively used by developers in Amalgam debugging scenarios.
osTarget operating system of the amalgam library. Valid values are:
linuxdarwinwindows
tracefalse(default) - No trace files are written.true- Use this option to generate tracefiles.
coreThis section is for changing the behavior of the Howso Engine (the Amalgam shared objects).
persisted_trainees_dirBy default, persisted trainees are stored in the current working directory. Set this option to a valid path with sufficient write permissions to store all persisted trainees if so desired.
howso_pathSets the location to look for the Howso Engine (core). This is an advanced setting used by developers.
howso_fnameSets the filename for the Howso Engine (core). This is an advanced setting used by developers.
trainee_template_pathSets the path to look for the howso-template howso-template. This is an advanced setting used by developers.
Example Configuration File#
Note
By default, the Howso Engine will automatically choose sensible default values making a configuration file entirely optional.
This is an example howso.yml file which overrides a few options for an
early model Raspberry Pi
howso:
client: howso.direct.HowsoDirectClient
client_extra_params:
amalgam:
arch: arm64_8a
library_postfix: -st
core:
persisted_trainees_dir: /home/jsmith/howso_trainees