v0.4 Citadelle

VersionDateChanges
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

  • In PyTorch we now use the TorchScript parser to trace the neural networks. Unfortunately TorchScript is still VERY experimental and buggy but we already have submitted two pull requests to fix some of the issues: github.com/pytorch/pytorch/pull/61274, github.com/pytorch/pytorch/pull/61274. Switching to TorchScript was required as

    HuggingFace BERT is currently incompatible with TorchScript. We’re looking for a solution. Please use v0.4.1 if you need BERT.

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