| Version | Date | Changes | 
v0.4.2.1 Docs | 20.09.2021 | 
Breaking Changes
- Starting with v0.4.2.1 SOL requires every user to accept the license
agreements. This is handled during installation of SOL and should be fully
automatic. The SOLrepository server will issue a digitally signed license file
that is installed into the SOL installation directory. You can find a copy of
the license agreement it in the 
/path/to/sol folder AND you'll
receive a copy via e-mail. This license is valid for 1-year and needs to be
renewed using the installer once expired. 
- We completely overhauled the SOL installer to be a menu-based implementation,
to make it easier shape the SOL installation to user needs.
 
 
Closed Issues
- #380	[Installer] User License Agreements
 
- #373	[Deploy] Fix Python API
 
- #372	[License] Add SOL license agreement feature
 
- #371	[ISPC] Update to 1.16.1
 
- #370	[Licenses] Add licences of used software to SOL distribution and docs
 
- #369	[TensorFlow] "Dimensions must be equal, but ..." error during training
 
- #365	[DFP] max/min reduction stores wrong index for gradient
 
- #361	[PyTorch] aten::mse_loss is missing
 
- #359	[Installer] installer always tries to install module x86
 
- #358	[PyTorch] Missing aten::l1_loss
 
- #357	[PyTorch] Missing aten::broadcast_tensors
 
 
 | 
v0.4.2 Docs | 12.07.2021 | 
Highlights
- Added TensorFlow v2 support
 
- Added experimental Cross-Framework support
 
 
Breaking Changes
Closed Issues
- #356	[PyTorch] Include bugfixes for PyTorch RNN, LP Pool and Padding
 
- #354	[PyTorch] fix gradient of SIGN function and fix SIGN(0) case
 
- #353	[HLIR] Why do we store Constant copies?
 
- #352	[Runtime] [Input Error grad_outputs:0] Expected [1, 0, 0, 0, 0, 0, 0, 0] but found [0, 0, 0, 0, 0, 0, 0, 0]
 
- #351	[PyTorch] allow parsing of custom model function
 
- #350	[DNNL] Memory Descriptor error in ResNext
 
- #349	[PyTorch] use unique() instead of debugName() in TorchScript
 
- #348	[PyTorch] Enable KWARGS in TorchScript parser
 
- #347	[DFP] nn.Conv2d(cin, cout, 1, stride=2, bias=True, groups=groups) fails in BWD
 
- #346	[DFP] Test PY_AvgPool2d#2 fails in Backward Pass
 
- #345	[DFP] enable struct conditionals for new pooling implementation
 
- #344	[DFP] deprecate scoped conditionals
 
- #343	[SQLITE] Upgrade to 3.36.0
 
- #342	[HLIR] replace internal LPPool with more high level implementation
 
- #341	[DFP] AvgPool(3,3) on tensor(1, 1, 15, 15) seems to produce wrong gradient.
 
- #340	[VEBLAS] RNNCells do not compile
 
- #339	[TF] Race condition in VE-Native execution during Training
 
- #338	[TF] Training on X86 fails with "Assertion `t.dtype() == DType_::value' failed"
 
- #337	[TF] frees inputs between fwd and bwd pass
 
- #336	[TF] VE Native integration allocates unaligned CPU pointers?
 
- #335	[DFP] SqueezeNet BWD Pass can create invalid offsets
 
- #334	[Transparent Offloading] memory corruption during training
 
- #333	[Plugin] SOL tries to load non existing libsol-framework-te.so because of wrong regex expression
 
- #330	[PyTorch/Numpy] Remove framework dependent input shape checks
 
- #328	[Runtime] Move Shape checks from frontends to core-runtime
 
- #325	[PyTorch] TorchScript RNN Networks
 
- #324	[TF] ".local/lib/python3.6/site-packages/tensorflow/include/tensorflow/core/platform/refcount.h:90] Check failed: ref_.load() == 0 (1 vs. 0)"
 
- #323	[VE] native-ve extension functions produce wrong results with large tensor sizes
 
- #322	[API] remove updateSize callbacks
 
- #320	[TF] Hook up to TF's Memory Allocator
 
- #318	[PyTorch] TorchScript parse problems for torch.nn.LPPool*D, torch.nn.functional.lp_pool*d
 
- #317	[PyTorch] TorchScript Parser can't return varying model outputs...
 
- #316	[PyTorch] Replace parser with TorchScript based implementation
 
- #314	[PyTorch] Update to v1.9.0
 
- #313	[TF] SOL_LOG=TRACE fails in PluggableDevice TF implementation
 
- #312	[CMake] Add Python dependencies to Dependencies CMake
 
- #311	[ISPC] Update to 1.16.0
 
- #310	[DFP] Fix Padding
 
- #309	[DFP] Can't execute BatchNorm without Weight+Bias
 
- #305	[DFP] Fix Boundary checks for Max_Pooling in Kernel: 1, Stride: 2, Padding: Valid cases in TF
 
- #304	[PyTorch] add is_inf and is_nan
 
- #303	[Docs] Add description how to use GDB Debugging
 
- #301	[PyTorch] Move X86 and CUDA-API from TH(C) to ATen Interface
 
- #297	[AVEO] URPC_SHM_SEGID on RHEL8
 
- #296	[TF] argmax + argmin return indicies in different format
 
- #295	[TF] HardSigmoid fails
 
- #294	[TF] tf.keras.layer.Permute(1, 3, 2) fails
 
- #291	[TF] tf.math.reduce_prod
 
- #290	[Python] Change HLIR implementation from class based to function based implementation
 
- #287	[PyTorch] demote version exception to warning and throw instead only if the VE is used
 
- #286	[DFP] Move Reorder Transformation into DFP Backend and don't do it in the Algo postprocessing
 
- #282	[VEDNN] Enable NHWC Convolutions
 
- #281	[HLIR] Enable Convs with NCP input and PIO Parameters
 
- #280	[DNNL] Problem executing NHWC Convolutions
 
- #279	[TF] Conv uses always PIO weights, even with channels_first?
 
- #277	[TF] Why does TF return tf.EagerTensor and SOL returns np.ndarray?
 
- #274	[Python] Implement cross framework execution, i.e. to run TensorFlow model within PyTorch
 
- #273	[TensorFlow] add VE device plugin
 
- #272	[TensorFlow] implement param preprocessing
 
- #270	[NEC-SOL] add option to use "pip" instead of "pip3"
 
- #269	[NEC-SOL] add --trust option for trusting dav.neclab.eu repository
 
- #268	[TF] Enable multi-input models
 
- #231	[HLIR/DFP] Move HLIR-Loops to DFP-IR
 
- #216	[Python] rename sol.internal to sol.hlir
 
- #200	[Python] Make RNNCells to 1-layer 1-seq RNNs!
 
- #171	[Runtime] store ptr and sizes in sol_ref
 
- #115	[DFP] Bwd Accumulation sometimes not working properly
 
- #3		TensorFlow v2 Support
 
 
 | 
v0.4.1 Docs | 06.05.2021 | 
Breaking Changes
- Installation routine has changed, please refer the installation guide.
 
- Behavior of 
sol.backends.X has changed and does no longer take attributes of sol.backends.X but strings. 
- Behavior of 
sol.devices.X has changed and does no longer take attributes of sol.devices.X but strings. I.e. sol.device.set(sol.device.ve, 0) is now sol.device.set('ve', 0) 
 
Closed Issues
- #266	[CUDNN] CUDA_STATUS_ARCH_MISMATCH in pytorch.layers.conv2d testcase
 
- #265	[SQLite] Upgrade 3.35.5
 
- #264	[HLIR] Reductions get sometimes removed if the dimensions input size is unknown at compile time
 
- #263	[VEBLAS] Wrong results with LSTM w/ bias using NCC 3.2.0
 
- #262	[Docs] Add docs.sol-project.org subdomain
 
- #261	[Pytorch] Can't parse PyTorchic BERT
 
- #260	[PyTorch] Addbmm problem with varidic batch size
 
- #258	[AutoTuning] GEMMBackend fails when using variable batchsize
 
- #256	[VEBLAS] Autotuning crashes because of missing Handle?
 
- #255	[CUDNN] Bundle Libs to sol-backend-cudnn
 
- #254	[SDK] Generate SOL SDK
 
- #253	[CMake] Prevent DL4J from constant rebuilding
 
- #252	[WHL] enable to install all packages directly from PyPI AND locally
 
- #251	[PyTorch] add torch.Tensor.hip()
 
- #250	[PyTorch] torch.tensor.masked_scatter missing
 
- #249	[DFP] Inception fails in newest build
 
- #247	[DNNL] Compile shared library if WITH_DEPLOYMENT is activated
 
- #246	[Deployment] update to new plugin based API
 
- #245	[ISPC] fix detection of AVX512 extensions
 
- #244	[Plugins] Add Version Check to all SOL Plugins!
 
- #242	[VE] Check if DeviceHandle::reduce still requires the AVEO workaround.
 
- #241	[Tests] Add --help option
 
- #240	[Core] Add Option to add custom backends to SOL
 
- #238	[Jit] Move device specific library paths into the corresponding compilers!
 
- #237	[Core] Refactor Device/Backend System to sideload new backends without rebuilding SOL core components
 
- #236	[CUDNN] bundle libcudnn with SOL!
 
- #235	[SQLite] Update to v3.35.4
 
- #233	[PyTorch] Update to 1.8.1
 
- #232	[Cache] sol.cache.clear should delete .sol folder
 
- #229	[PyTorch] torch.tensor.masked_fill_ missing
 
- #228	[PyTorch] torch.tensor.cumsum missing
 
- #227	[PyTorch] Binding for pow() is incorrect
 
- #226	[SQLite] Update to 3.35.2
 
- #224	[CUDA] Add Struct Reductions
 
- #219	[PyTorch] Kill application from Python API if different version has detected, as the C library cannot be loaded if the API has changed
 
- #206	[Linking] Densenet Linking sometimes dies with GCC/NCC, possibly out of memory?
 
- #195	[HLIR] Match ALGO API to Layer API
 
- #162	[Python] Move Tensor Operators from PyTorch to Python API
 
 
 | 
v0.4.0.2 Docs | 10.03.2021 | 
Minor bugfix release.
- #223	[PyTorch] Problem parsing Huggingface BERT
 
- #222	[CUDNN] Upgrade to CUDNN 8
 
- #221	[CUDA] Add support for SM80 and SM86 architectures
 
- #220	[CUDA] Allow linking against different versions of CUDA
 
 
 | 
v0.4.0.1 Docs | 08.03.2021 | 
Minor bugfix release.
- #217		[Transparent Offload] Crashes in 2nd run of model
 
 
 | 
v0.4.0 Docs | 08.03.2021 | 
 This is a major release for SOL coming with a series of new features, i.e. ONNX support, RNNs (for SX-Aurora only for now), AdaptivePooling, improved performance, better accuracy for BatchNorms and MeanReductions and many more. 
Breaking Changes
- We no longer distribute the SOL images via GitLab. Please follow the installation steps described here.
 - SOL API no longer requires to explicitly include the correct interface, i.e. 
import sol.pytorch as sol. Instead just import sol and SOL will automatically detect the type of your model. 
- The API for 
sol.deploy(...) has been simplified, please checkout the Deployment documentation. 
 
Closed Issues
- #2		Recurrent Neural Networks (RNNs)
 
- #9		Adaptive[Avg/Max]Pooling only works if it can be transformed into a normal Pooling
 
- #49	[DFP] Can't use reduction for MaxPooling
 
- #53	ONNX Support
 
- #66	[Docs] add ONNX docs
 
- #68	[DFP] missing gradient: MOD
 
- #86	[PIP] Solve name clash with public PYPI repo
 
- #92	[DFP] IDX not used in code generation
 
- #95	[PyTorch] Upgrade to 1.7.0
 
- #98	[DFP] SoftMax might produce uncompileable code
 
- #103	[DFP] Multi-Value Reductions
 
- #107	[GCC] Error compiling with GCC v4.8.5
 
- #109	[DFP] wrong gradient for SoftPlus
 
- #116	[PyTorch] Arange producing wrong results if non-integer values used
 
- #118	[Python] using dict for input/output causes randomized SOL hashes
 
- #119	[PyTorch] Double check API calls, if they have changed in last upgrade
 
- #121	[PyTorch] Missing Tests
 
- #122	[PyTorch] HugginFace BERT stopped working
 
- #124	[HuggingFace] Bert dimension mismatch
 
- #125	[Core] Check for Memleaks
 
- #126	[DL4J] Upgrade to new JSON format
 
- #127	[DL4J] Upgrade to new DType System
 
- #128	[Frontends] Make ```autotuning``` an additional parameter of the sol.optimize call!
 
- #129	[DFP] Optimize IDX usage
 
- #130	[DFP] wrong initial value for reduction accumulators
 
- #132	[PyTorch] Testcase Arange fails
 
- #133	[PyTorch] AddCDIV AddCMul missing
 
- #134	[DFP] Wrong gradient for PReLU-Weight
 
- #136	[PyTorch] Min/Max returned indicies do not match the PyTorch indicies format.
 
- #137	[PyTorch] can't use named tuples in output
 
- #140	[VE] Min/Max Reduce or Pooling, that need to use reduction within the kernel, produce wrong results during backward pass
 
- #141	[Performance] MaxPooling Backward Pass
 
- #142	[DFP] Improve Pooling Backward Performance
 
- #143	[DFP] Improve Pooling Fwd Performance
 
- #144	[PyTorch] Upgrade to 1.7.1
 
- #145	[DFP] Remove Inner
 
- #146	[VE] Fix Updating of VBS
 
- #147	[CUDNN] report Version and warn if version is < 7.6.0
 
- #149	[CUDA] Exclude Half Precision API from GPUs below Maxwell
 
- #150	[ISPC] Upgrade to 1.15.0
 
- #151	[DFP] Segfault when optimizing BERT
 
- #152	[VEDNN] Evaluate new LLVM-VE
 
- #153	[DNNL] upgrade to 1.8
 
- #154	[SQLITE] Update to 3.34.0
 
- #155	[Python] Add debug option to run ```python -m sol``` to check if SOL works correctly
 
- #156	[PyTorch] return_indices of MaxPooling does not match PyTorch value range
 
- #158	[DNNL] Update to v1.8.1
 
- #159	[PyTorch] SOL's behavior of inplace methods, i.e. neg_ is not identical
 
- #160	[PyTorch] SOL segfaults during execution when model uses the same tensor for multiple outputs
 
- #164	[PyTorch] verify that torch.nn.Conv1d is working
 
- #170	[SQLITE] Update to 3.34.1
 
- #172	[VEBLAS] RNN
 
- #178	[DFP] does not zero initialize gradient in backwardpass for narrows
 
- #180	[Python] Single Python Wrapper for all frameworks
 
- #185	[DFP] Missing LXXX_idx in BWD Filter pass for Conv
 
- #189	[DFP] Problem in Embedding BWD
 
- #190	[Deploy] Fix Deployment
 
- #192	[HLIR] add sol_layer_input(network, layer, IType, LayerOutput)
 
- #194	[HLIR] Make all Cat inputs to IType::Input/X instead of IType::None/0
 
- #215	[Debug] Increase font size in memory consumption graphs
 
  |