Releases: beehive-lab/TornadoVM
TornadoVM 1.0.9
Improvements
- #573: Enhanced output of unit-tests with a summary of pass-rates and fail-rates.
- #576: Extended support for 3D matrices.
- #580: Extended debug information for execution plans.
- #584: Added helper menu for the
tornado
launcher script when no arguments are passed. - #589: Enable partial loop unrolling for all backends.
- #594: Added RISC-V 64 CPU port support to run OpenCL with vector instructions RVV 1.0 (using the Codeplay OCK Toolkit).
- #598: OpenCL low-level buffers tagged as read, write and read/write based on the data dependency analysis.
- #601: Feature to select an immutable task graph to execute from a multi-task graph execution plan.
Compatibility
- #570: Extended timeout for all suite of unit-tests.
- #579: Removed legacy JDK 8 and JDK11 build options from the TornadoVM installer.
- #582: Restored tornado runner scripts for IntellIJ.
- #583: Automatic generation of IDE IntelliJ configuration runner files from the TornadoVM command.
- #597: Updated white-list of unit-test and checkstyle improved.
Bug Fixes
- #571: Fix issues with bracket closing for if/loops conditions.
- #572: Fix for printing default execution plans (execution plans with default parameters).
- #575: Fix the Level Zero version used for building the SPIR-V backend.
- #577: Fix checkstyle.
- #587: Fix thread scheduler for new NVIDIA Drivers.
- #592: Fix
Float.POSITIVE_INFINITY
andFloat.NEGATIVE_INFINITIVE
constants for the OpenCL, CUDA and SPIR-V backends. - #596: Fix extra closing bracket during the code-generation for the FPGAs.
- Remove the intermediate CUDA pinned memory regions in the JNI code: link
- Fix bitwise negation operations for the PTX backend: link
GetBackendImpl::getAllDevices
thread-safe: link- Check size elements for memory segments: link
Full Changelog
Docs
https://tornadovm.readthedocs.io/en/v1.0.9/
How to build
Select the backend/s you want.
## To enable all backends
./bin/tornadovm-installer --jdk jdk21 --backend=opencl,spirv,ptx
## To enable just OpenCL
./bin/tornadovm-installer --jdk jdk21 --backend=opencl
## To enable just OpenCL and SPIRV
./bin/tornadovm-installer --jdk jdk21 --backend=opencl, spirv
# etc.
TornadoVM 1.0.8
Improvements
- #565: New API call in the Execution Plan to log/trace the executed configuration plans.
- #563: Expand the TornadoVM profiler with Level Zero Sysman Energy Metrics.
- #559: Refactoring Power Metric handlers for PTX and OpenCL.
- #548: Benchmarking improvements.
- #549: Prebuilt API tests added using multiple backend-setup.
- Add internal tests for monitoring memory management link.
Compatibility
- #561: Build for OSx 14.6 and OSx 15 fixed.
Bug Fixes
- #564: Jenkins configuration fixed to run KFusion per backend.
- #562: Warmup action from the Execution Plan fixed to run with correct internal IDs.
- #557: Shared Execution Plans Context fixed.
- #553: OpenCL compiler flags for Intel Integrated GPUs fixed.
- #552: Fixed runtime to select any device among multiple SPIR-V devices.
- Fixed zero extend arithmetic operations: link.
Full Changelog
Docs
https://tornadovm.readthedocs.io/en/v1.0.8/
How to build
./bin/tornadovm-installer --jdk jdk21 --backend=opencl,spirv,ptx
TornadoVM 1.0.7
Improvements
- #468: Cleanup Abstract Metadata Class.
- #473: Add maven plugin to build TornadoVM source for the releases.
- #474: Refactor TornadoDevice to place common methods in the
TornadoXPUInterface
. - #482: Help messages improved when an out-of-memory exception is raised.
- #484: Double-type for the trigonometric functions added in the
TornadoMath
class. - #487: Prebuilt API simplified.
- #494: Add test to trigger unsupported features related to direct use of Memory Segments.
- #509: Add a quick pass configuration to skip the heavy tests during active development.
- #532: Improve thread scheduler to support RISC-V Accelerators from Codeplay.
- #533: Support for scalar values to be passed via lambda expressions as tasks.
- #538:
README
file updated. - #539: Refactor core classes and add new API methods to pass compilation flags to the low-level driver compilers (OpenCL, PTX and Level Zero).
- #542: Tagged LevelZero JNI and Beehive Toolkit dependencies added in the build and installer.
Compatibility
- #465: Support for JDK 22 and GraalVM 24.0.2.
- #486: Temurin for Windows added in the list of supported JDKs.
- #525: Revert usage of String Templates in preparation for JDK 23.
- #527: SPIR-V version parameter added. TornadoVM may run previous SPIR-V versions (e.g., ComputeAorta from Codeplay).
- #513: LevelZero JNI Library updated to v0.1.4.
Bug Fixes
- #470: README documentation fixed.
- #478: Fix the test names that are present in the white list.
- #488: FP64 Kind for radian operations and the PTX backend fixed.
- #493: Tests Whitelist for PTX backend fixed.
- #502: Fix barrier type in the documentation regarding programmability of reductions.
- #514: Installer script fixed.
- #540: Fix issue with clean-up execution IDs function.
- #541: Fix Data Accessors for the prebuilt API.
- #543: Fix checkstyle condition and FP16 error message improved.
Full Changelog
Docs
https://tornadovm.readthedocs.io/en/v1.0.7/
How to build
./bin/tornadovm-installer --jdk jdk21 --backend=opencl,spirv,ptx
TornadoVM 1.0.6
Improvements
- #442: Support for multiple SPIR-V device versions (>= 1.2).
- #444: Enabling automatic device memory clean-up after each run from the execution plan.
- #448: API extension to query device memory consumption at the TaskGraph granularity.
- #451: Option to select the default SPIR-V runtime.
- #455: Refactoring the API and documentation updated.
- #460: Refactoring all examples to use try-with-resources execution plans by default.
- #462: Support for copy array references from private to private memory on the hardware accelerator.
Compatibility
- #438: No writes for intermediate files to avoid permissions issues with Jenkins.
- #440: Update Jenkinsfile for CI/CD testing.
- #443: Level Zero and OpenCL runtimes for SPIR-V included in the Jenkins CI/CD.
- #450: TornadoVM benchmark script improved to report dimensions and sizes.
- #453: Update Jenkinsfile with regards to the runtime for SPIR-V.
Bug Fixes
- #434: Fix for building TornadoVM on OSx after integration with SPIR-V binaries for OpenCL.
- #441: Fix PTX unit-tests.
- #446: Fix NVIDIA thread-block scheduler for new GPU drivers.
- #447: Fix recompilation when batch processing is not triggered.
- #463: Fix unit-tests for CPU virtual devices.
Full Changelog
Docs
https://tornadovm.readthedocs.io/en/v1.0.6/
How to build
./bin/tornadovm-installer --jdk jdk21 --backend=opencl,spirv,ptx
TornadoVM 1.0.5
Improvements
- #402: Support for TornadoNativeArrays from FFI buffers.
- #403: Clean-up and refactoring for the code analysis of the loop-interchange.
- #405: Disable Loop-Interchange for CPU offloading..
- #407: Debugging OpenCL Kernels builds improved.
- #410: CPU block scheduler disabled by default and option to switch between different thread-schedulers added.
- #418: TornadoOptions and TornadoLogger improved.
- #423: MxM using ns instead of ms to report performance.
- #425: Vector types for
Float<Width>
andInt<Width>
supported. - #429: Documentation of the installation process updated and improved.
- #432: Support for SPIR-V code generation and dispatcher using the TornadoVM OpenCL runtime.
Compatibility
- #409: Guidelines to build the documentation.
- #411: Windows installer improved.
- #412: Python installer improved to check download all Python dependencies before the main installer.
- #413: Improved documentation for installing all configurations of backends and OS.
- #424: Use Generic GPU Scheduler for some older NVIDIA Drivers for the OpenCL runtime.
- #430: Improved the installer by checking that the TornadoVM environment is loaded upfront.
Bug Fixes
- #400: Fix batch computation when the global thread indexes are used to compute the outputs.
- #414: Recover Test-Field unit-tests using Panama types.
- #415: Check style errors fixed.
- #416: FPGA execution with multiple tasks in a task-graph fixed.
- #417: Lazy-copy out fixed for Java fields.
- #420: Fix Mandelbrot example.
- #421: OpenCL 2D thread-scheduler fixed for NVIDIA GPUs.
- #422: Compilation for NVIDIA Jetson Nano fixed.
- #426: Fix Logger for all backends.
- #428: Math cos/sin operations supported for vector types.
- #431: Jenkins files fixed.
Docs
TornadoVM v1.0.4
Improvements
#369 : Introduction of Tensor types in TornadoVM API and interoperability with ONNX Runtime.
#370 : Array concatenation operation for TornadoVM native arrays.
#371 : TornadoVM installer script ported for Windows 10/11.
#372 : Add support for HalfFloat
(Float16
) in vector types.
#374 : Support for TornadoVM array concatenations from the constructor-level.
#375 : Support for TornadoVM native arrays using slices from the Panama API.
#376 : Support for lazy copy-outs in the batch processing mode.
#377 : Expand the TornadoVM profiler with power metrics for NVIDIA GPUs (OpenCL and PTX backends).
#384 : Auto-closable Execution Plans for automatic memory management.
Compatibility
#386 : OpenJDK 17 support removed.
#390 : SapMachine OpenJDK 21 supported.
#395 : OpenJDK 22 and GraalVM 22.0.1 supported.
- TornadoVM successfully tested on Apple M3 chips.
Bug Fixes
#367 : Fix for Graal/Truffle languages in which some Java modules were not visible.
#373 : Fix for data copies of the HalfFloat
types for all backends.
#378 : Fix free memory markers when running multi-thread execution plans.
#379 : Refactoring package of vector api unit-tests.
#380 : Fix event list sizes to accommodate profiling of large applications.
#385 : Fix code check style.
#387 : Fix TornadoVM internal events in OpenCL, SPIR-V and PTX for running multi-threaded execution plans.
#388 : Fix of expected and actual values of tests.
#392 : Fix installer for using existing JDKs.
#389 : Fix DataObjectState
for multi-thread execution plans.
#396 : Fix JNI code for the CUDA NVML library access with OpenCL.
Docs
https://tornadovm.readthedocs.io/en/v1.0.4/
Installation
./bin/tornadovm-installer --listJDKs
TornadoVM Installer - Select a JDK implementation to install with TornadoVM:
jdk21 : Install TornadoVM with OpenJDK 21 (Oracle OpenJDK)
graal-jdk-21 : Install TornadoVM with GraalVM and JDK 21 (GraalVM 23.1.0)
mandrel-jdk-21 : Install TornadoVM with Mandrel and JDK 21 (GraalVM 23.1.0)
corretto-jdk-21 : Install TornadoVM with Corretto JDK 21
microsoft-jdk-21 : Install TornadoVM with Microsoft JDK 21
zulu-jdk-21 : Install TornadoVM with Azul Zulu JDK 21
temurin-jdk-21 : Install TornadoVM with Eclipse Temurin JDK 21
sapmachine-jdk-21 : Install TornadoVM with SapMachine OpenJDK 21
Usage:
$ ./bin/tornadovm-installer --jdk <JDK_VERSION> --backend <BACKEND>
Example:
$ ./bin/tornadovm-installer --jdk jdk21 --backend=spirv,opencl
If you want to select another version of OpenJDK, you can use --javaHome <pathToJavaHome> and install as follows:
$ ./bin/tornadovm-installer --backend <BACKEND> --javaHome <pathToJavaHome>
TornadoVM 1.0.3
27/03/2024
Improvements
- #344 : Support for Multi-threaded Execution Plans.
- #347 : Enhanced examples.
- #350 : Obtain internal memory segment for the Tornado Native Arrays without the object header.
- #357 : API extensions to query and apply filters to backends and devices from the
TornadoExecutionPlan
. - #359 : Support Factory Methods for FFI-based array collections to be used/composed in TornadoVM Task-Graphs.
Compatibility
- #351 : Compatibility of TornadoVM Native Arrays with the Java Vector API.
- #352 : Refactor memory limit to take into account primitive types and wrappers.
- #354 : Add DFT-sample benchmark in FP32.
- #356 : Initial support for Windows 11 using Visual Studio Development tools.
- #361 : Compatibility with the SPIR-V toolkit v0.0.4.
- #363 : Level Zero JNI Dependency updated to 0.1.3.
Bug Fixes
- #346 : Computation of local-work group sizes for the Level Zero/SPIR-V backend fixed.
- #360 : Fix native tests to check the JIT compiler for each backend.
- #355 : Fix custom exceptions when a driver/device is not found.
Documentation
TornadoVM v1.0.2
29/02/2024
Improvements
- #323 : Set Accelerator Memory Limit per Execution Plan at the API level
- #328 : Javadoc API to run with concurrent devices and memory limits
- #340 : New API calls to enable
threadInfo
andprintKernel
from the Execution Plan API. - #334 : Dynamically enable/disable profiler after first run
Compatibility
- #337 : Initial support for Graal and JDK 21.0.2
Bug Fixes
- #322 : Fix duplicate thread-info debug message when the debug option is also enabled.
- #325 : Set/Get accesses for the
MatrixVectorFloat4
type fixed - #326 : Fix installation script for running with Python >= 3.12
- #327 : Fix Memory Limits for all supported Panama off-heap types.
- #329 : Fix timers for the dynamic reconfiguration policies
- #330 : Fix the profiler logs when silent mode is enabled
- #332 : Fix Batch processing when having multiple task-graphs in a single execution plan.
Documentation
TornadoVM v1.0.1
30/01/2024
Improvements
#305: Under-demand data transfer for custom data ranges.
#313: Initial support for Half-Precision (FP16) data types.
#315: Math Ceil
function added.
#311: Enable Multi-Task Multiple Device (MTMD) model from the TornadoExecutionPlan
API.
Compatibility/Integration
#294: Separation of the OpenCL Headers from the code base.
#297: Separation of the LevelZero JNI API in a separate repository.
#301: Temurin configuration supported.
#304: Refactor of the common phases for the JIT compiler.
#316: Beehive SPIR-V Toolkit version updated.
Bug Fixes
#298: OpenCL Codegen fixed open-close brackets.
#300: Python Dependencies fixed for AWS.
#308: Runtime checks for Grid-Scheduler names.
#309: Fix check-style to support STR templates.
#314: emit Vector16 Capability for 16-width vectors.
Documentation
TornadoVM v1.0
TornadoVM 1.0
05/12/2023
Improvements
- Brand-new API for allocating off-heap objects and array collections using the Panama Memory Segment API.
- New Arrays, Matrix and Vector type objects are allocated using the Panama API.
- Migration of existing applications to use the new Panama-based types: https://tornadovm.readthedocs.io/en/latest/offheap-types.html
- Handling of the TornadoVM's internal bytecode improved to avoid write-only copies from host to device.
cospi
andsinpi
math operations supported for OpenCL, PTX and SPIR-V.- Vector 16 data types supported for
float
,double
andint
. - Support for Mesa's
rusticl
. - Device default ordering improved based on maximum thread size.
- Move all the installation and configuration scripts from Bash to Python.
- The installation process has been improved for Linux and OSx with M1/M2 chips.
- Documentation improved.
- Add profiling information for the testing scripts.
Compatibility/Integration
- Integration with the Graal 23.1.0 JIT Compiler.
- Integration with OpenJDK 21.
- Integration with Truffle Languages (Python, Ruby and Javascript) using Graal 23.1.0.
- TornadoVM API Refactored.
- Backport bug-fixes for branch using OpenJDK 17:
master-jdk17
Bug fixes:
- Multiple SPIR-V Devices fixed.
- Runtime Exception when no SPIR-V devices are present.
- Issue with the kernel context API when invoking multiple kernels fixed.
- MTMD mode is fixed when running multiple backends on the same device.
long
type as a constant parameter for a kernel fixed.- FPGA Compilation and Execution fixed for AWS and Xilinx devices.
- Batch processing fixed for different data types of the same size.