UxHw Distribution Arithmetic in Silicon
Every Signaloid compute module performs distribution arithmetic in hardware using UxHw. Instead of computing with single-point values, UxHw performs computations with distributions as values. With UxHw, distribution arithmetic propagates distributions through your program automatically: the result of each intermediate operation is a distribution.
On-module execution
You can use the Signaloid System-on-Chip (SoC) on the compute modules to deploy C or C++ applications. The Signaloid SoC is a RISC-V core extended with a subset of Signaloid UxHw which enables distribution-extended computation. When the application performs arithmetic on values with associated distributions, the hardware uses the input distribution representations through the computation. With UxHw, you do not manage samples manually or run repeated trials: a single UxHw execution produces the output distribution.
The detailed technical specifications of the compute modules, including the specific core, the clock frequency, and the memory available to your device application are in Specifications (C0-microSD) and Specifications (C0-microSD+).
Distribution representation
The Athens microarchitecture of UxHw represents each distribution using a number of floating-point values. The amount of these representation values is bounded by the representation precision. Larger representations track finer distributional detail at the cost of larger memory usage. The modules differ in the precision they support, and in how many distributions they keep in flight at once.
| Capability | C0-microSD | C0-microSD+ |
|---|---|---|
| Maximum representation precision | Athens-16 | Athens-64 |
| In-flight distributions at Athens-8 | 600 | 4312 |
| In-flight distributions at maximum precision | 288 (Athens-16) | 476 (Athens-64) |
The minimum representation precision that the C0-microSD and C0-microSD+ support is Athens-4. See UxHw capabilities (C0-microSD) and UxHw capabilities (C0-microSD+) in the specifications.
Distributions on the C0-microSD and the C0-microSD+ modules use a single-precision floating-point underlying data type. The Signaloid toolchain selects this when it builds for a module, irrespective of floating-point types your source code declares. See here for more details about the underlying data type.
The compute modules calculate the output distribution in a single execution and can achieve large speedups over using Monte Carlo methods of equivalent accuracy which need many iterations to converge. See the C0-microSD benchmarks, the C0-microSD+ benchmarks, and the Examples and Demos catalog.
Relation to the Signaloid Cloud Compute Engine
The on-module Signaloid SoC and the Signaloid Cloud Compute Engine share the same UxHw programming model. You can write the same distribution-extended programs and the distributions propagate the same way. The two substrates differ in capacity, performance, and transport. The Cloud Compute Engine runs at data-center scale on the Signaloid Cloud Developer Platform, while a compute module brings UxHw to an embedded system over its own host interface. For the cloud and web API side of the same technology, see the Compute Engine documentation.
Next steps
- To learn how to write distribution-extended programs to run on the compute modules, take a look at the C0-microSD and C0-microSD+ UxHw application development guides.
- To understand how the host and the module share the work across the coprocessor lifecycle, read Operational Model (C0-microSD) and Operational Model (C0-microSD+).
- To understand how the physical link carries every transaction between the host and the module, read SD Interface (C0-microSD) and SD Interface (C0-microSD+).