extended, Snitch-style, to perform a deterministic memory-array walk of
a large Matrix.
+*<blockquote>
+* **Horizontal-First**: (aka standard Cray Vectors) walk through
+ **elements** first before moving to next instruction
+* **Vertical-First**: walk through **instructions** before
+ moving to next element. Currently managed by `svstep`,
+ ZOLC may be deployed to manage the stepping.
+</blockquote>*
+
Let us also imagine that the Matrices are stored in Memory with PEs
attached, and that the PEs are fully functioning Power ISA with Draft
SVP64, but their Multiply capability is not as good as the main CPU.
The reason in this case for the use of Vertical-First Mode is the
conditional execution of the Multiply-and-Accumulate.
Horizontal-First Mode is the standard Cray-Style Vectorisation:
-loop on all elements with the same instruction before moving
+loop on all *elements* with the same instruction before moving
on to the next instruction. Predication needs to be pre-calculated
for the entire Vector in order to exclude certain elements from
the computation. In this case, that's an expensive inconvenience
to support OpenCAPI properly? The answer is very likely to be yes.
The saving grace here is that with
the expectation of running only hot-loops with ZOLC-driven
-binaries, the size of each PE's
+binaries, the size of each PE's TLB-aware
L1 Cache needed would be miniscule compared
to the average high-end CPU.