Support for torch.log, torch.log2, torch.log10 (as well as respective
torch.Tensor methods) and the ONNX Log operator, at BF16 precision
Bump the amd_v80_c6b32, amd_v80ll_c6b32, silicom_artena_c8b32 and
silicom_artena_c8b32lstm cards' cell_state_depth to 2048
Recurrent models such as LSTMs use fewer tensor descriptors. This allows a
larger number of these models to be combined into a multi-model program.
The example applications default --device to the VOLLO_CARD_BDF environment
variable when it is set, so a host with several accelerators can select one without
editing every command
vollo-tool fpga-config can name a card by PCI BDF as well as by index
Report loading a .vollo program from a mismatched compiler version as a
vollo_compiler.LoadError explaining the version difference, instead of a
panic
Raise ValueError instead of panicking when constructing a Config with an
unknown fabric or a missing clock_mhz
Program.load_bytes now raises vollo_compiler.LoadError rather than
ValueError when the data isn't a valid program, matching Program.load
Say what produced a program file that wasn't written by the Vollo compiler,
when it records that, instead of reporting it as an empty field
Fix a bug which caused programs built through the ProgramBuilder to produce
incorrect values if they used dynamic weights
Fix an operator fusion bug in where operations which could select the wrong
branch depending on the operations on the inputs to the where operation
Fixed panic when a dynamic weight matmul is an input to a sum
Fix miscompilation with optimize_transforms = False for summing values from
different timesteps
Fix clamp behaviour not matching PyTorch / ONNX when max < min
Fix vollo_torch.nn.LSTMCell using a different cell state each time it's called
Fix a bug which caused ProgramBuilder.to_program to fail on programs with fp8 weights
Reduce tensor descriptors used in multi-model programs, allowing more models to be combined
into a program
Fix a multi-model program intermittently running the wrong model, from some
point in a run until the program is reloaded. This affected inputs
transferred over MMIO (the default for small inputs) and only on some host
CPUs
Add an example in vollo-ip-sim for using your own data path
Remove the automatic FPGA temperature monitoring added in 28.1.0. It sometimes
caused a crash with the artena bitstream. VOLLO_RT_TEMP_LIMIT_C and
VOLLO_RT_TEMP_WARN_C no longer do anything. The monitor will be reinstated in
the next hardware release with the necessary bitstream change.
Add automatic FPGA temperature monitoring in Vollo RT: it warns when the
device gets hot and stops compute before it overheats, configurable with the
VOLLO_RT_TEMP_LIMIT_C and VOLLO_RT_TEMP_WARN_C environment variables
Remove the unused DDR4 DIMM memory controller from the V80 and V80LL
bitstreams
Speed up model compilation
Fix a DMA deadlock that could occur when a model output transfer was paused
partway through
Fix the input size threshold used to decide whether inputs are sent over MMIO
Fix a stall in models with multiple MMIO inputs when an optional input is
empty
Prevent the SDK installer from opening an X11 terminal window when run
non-interactively
Fix a multi-model program intermittently running the wrong model, from some
point in a run until the program is reloaded. This affected inputs
transferred over MMIO (the default for small inputs) and only on some host
CPUs
Add experimental vollo_rt_prepare_raw_buffer_output_completion and vollo_rt_check_raw_buffer_output_completion
functions to Vollo RT for completion detection from a different thread to the one holding the vollo_rt_context
Add experimental support for specifying which cores to allocate PyTorch
operations to using vollo_torch.CorePartition
Add support for specifying which cores to allocate models to in a multi-model
program by passing core_indices to vollo_compiler.ProgramBuilder.add_nnir
Optimize sigmoid and SiLU activation functions
Improve spaced latency for some stateful models that use dynamic weights
Reduce tensor RAM usage of state in stateful models
vollo_torch.Fp8Weights now errors if used on operations which require
bf16 weights, such as dynamic weights
Add Alveo V80LL bitstream and vollo_compiler.Config.v80ll_c6b32 hardware
config
Add support for Linear layers where the contracted dimension is not the
data dimension via the allow_dynamic_weights flag for
vollo_compiler.NNIR.to_program
Add support for multiple inputs to vollo_torch.nn.Scan
Add support for indexing with negative indices in: torch.stack,
torch.sum, torch.permute, torch.squeeze, torch.unsqueeze
Add support for torch.nn.functional.linear
Add optional bias argument to vollo_torch.nn.PaddedConv1d
Add inputs_precisions and output_precisions arguments to
vollo_torch.fx.nnir.to_nnir
vollo-compiler:
Add model_input_number_format and model_output_number_format methods
to vollo_compiler.Program
Add vollo_compiler.NumberFormat enum
vollo-rt C/C++ API
Add vollo_rt_add_job, vollo_rt_add_job_partial_update,
vollo_rt_model_input_format, vollo_rt_model_output_format,
vollo_rt_get_raw_buffer_bytes functions and number_format enum
vollo-rt Python bindings
Add add_job, add_job_f32, model_output_format methods to
vollo_rt.VolloRTContext
Memory usage and compilation time improvements in the compiler
Add quick_compile flag to vollo_compiler.NNIR.to_program for faster
compilation
Add max_sparse_entries option to vollo_compiler.NNIR.to_program to
configure the number of nonzero entries allowed in weights for non-standard
memory format MatMuls
Add token-info subcommand to vollo-tool license to show information about
a purchase token
Add info message to vollo-tool license redeem-device if the device being
redeemed for has been redeemed on an expired or nearly expiring token
Add initial support for Alveo V80, further performance optimisations still outstanding
Add support for Napatech NT400D11
Add support for vfio-pci; use load-kernel-driver.sh vfio to load it,
required for V80
Add lock to Vollo RT to prevent concurrent usage of the accelerator
Improve VM cycle count estimates for Agilex devices
Additional model support:
Add support for broadcasting non-constant tensors except along the data dimension
Add grouped convolution support to vollo_torch.nn.PaddedConv1d
Add support for reshape operations
Changes to the API of vollo_torch.nn.Scan: the step function now returns
an output tensor and a separate state tensor instead of a single tensor; the
forward method now takes both an input_axis and an output_axis instead
of a single axis argument