Releases: beehive-lab/TornadoVM
TornadoVM 2.0.0
Improvements
#722: Simplify running tornadovm with a Java argfile
#732: [types] Support for GPU-native Int8 types for PTX and OpenCL
#736: Implement support for compressed oops (coops)
#738: [feat] Update TornadoVM to be packaged as SDK across multiple platforms
#739: [feat] Zero-copy TornadoNativeArray type instances with shallow memory segments
#740: Add support for byte and half-float arrays in local memory across all backends
#748: Support FP32 to FP16 conversion across all backends
Compatibility
#704: Bump org.apache.commons:commons-lang3 from 3.12.0 to 3.18.0 in tornado-benchmarks
#709: Fix Python dependency installation issues in installer
#717: [feat] Added streamlit python dependency for compatibility with TornadoViz
Bug Fixes
#705: [fix] Support for ShortCircuits in OpenCL and PTX
#706: [fix] Codegen support for IntegerBelowNode & Fix of closing bracket in OpenCL
#712: [fix] Fix for Loop Partial Unroll Phase
#714: [fix] The differences CUDA 13 introduced to CUDA API cuCtxCreate
#721: [fix] Integer overflow in TornadoNativeArray implementations that caused IllegalArgumentException when allocating large arrays
#723: [fix] Prevent NullPointerException when trying to dump bytecodes during warm-up
#746: [fix] Remove @ prefix from inline Truffle export flags
Refactors & Infrastructure
#703: Updated build instructions for using a single thread for maven.
#708: [test] Mark unsupported tests for SPIRV
#711: Add mvn test configuration to ease unit-testing when porting TornadoVM to third-party projects
#716: [build-infra] Add missing checksums and script to generate checksum files for TornadoVM Maven artifacts
#720: Increase default memory size on device
#725: [refactor] Move Dynamic Reconfiguration to research features
#730: [build] Revamp build infrastructure by adding Maven wrapper mvnw
#733: Move argfile generation to python from bash
#742: [CI] Migrate build & test workflows (OpenCL, PTX, SPIR-V) to GitHub Actions for Linux (x64) and macOs(arm64)
#737: [tests] Marked Quantization Tests as whitelisted due to NVIDIA driver issues
#743: [build] Use shared export‑list files instead of verbose inline --add-exports in pom.xml
#744: Add licences in pom files - prep work for migrating release to maven central
#745: [deploy] Add release profile in maven to prepare maven central release
#747: [CI] Add deploy-maven-central workflow for deploying artifacts to Maven central
#749: [CI] Add GPG key configuration and Maven settings to deploy-maven-central
Full Changelog
Docs
https://tornadovm.readthedocs.io/en/v2.0.0/
How to build
Select the backend/s you want.
## You can try the interactive mode of the installer and select the backends to build with:
./bin/tornadovm-installerHow to use TornadoVM SDK
To use the TornadoVM SDK, ensure that the environment variable JAVA_HOME points to a valid JDK 21 installation. After that, select the appropriate sdk distribution for your target architecture and the accelerator backends you intend to use.
Linux Systems
wget https://github.com/beehive-lab/TornadoVM/releases/download/v2.0.0/tornadovm-2.0.0-opencl-linux-amd64.zip
unzip tornadovm-2.0.0-opencl-linux-amd64.zip
export TORNADO_SDK="$(pwd)/tornadovm-2.0.0-opencl"
export PATH=$TORNADO_SDK/bin:$PATH
tornado --devices
tornado --versionmacOS Systems
wget https://github.com/beehive-lab/TornadoVM/releases/download/v2.0.0/tornadovm-2.0.0-opencl-mac-aarch64.zip
unzip tornadovm-2.0.0-opencl-mac-aarch64.zip
export TORNADO_SDK="$(pwd)/tornadovm-2.0.0-opencl"
export PATH=$TORNADO_SDK/bin:$PATH
tornado --devices
tornado --versionWindows (10+) Systems
curl -L -o tornadovm-2.0.0-opencl-windows-amd64.zip https://github.com/beehive-lab/TornadoVM/releases/download/v2.0.0/tornadovm-2.0.0-opencl-windows-amd64.zip
tar -xf tornadovm-2.0.0-opencl-windows-amd64.zip
set TORNADO_SDK=%cd%\tornadovm-2.0.0-opencl
set PATH=%TORNADO_SDK%\bin;%PATH%
tornado --devices
tornado --versionTornadoVM 1.1.1
Improvements
#657: Optimize to reuse the allocated buffers for batch processing.
#659: Fixed object state to be the one from the last executed TaskGraph.
#660: New PERSIST bytecode to improve object lifecycle tracking.
#661: Saving the TornadoVM Bytecodes in a log file.
#660: Distinguish the data transfer mode when logging the execution of the TRANSFER_TO_DEVICE_ONCE Bytecode.
#667: Update documentation of the TornadoVM flags.
#670: Refactoring of the Matrix4x4Float type.
#674: Updated project links in README.
#675: Avoid rescheduling IfNodes used for loop-bound evaluation.
#676: Added unit-tests for Transformer Compute Kernels.
#679: Added Matrix-Vector Row-Major compute example.
#683: Mark flash attention unittest unsupported for SPIR-V.
#684: Performance improvements for processing with Dynamic Reconfiguration.
#685: Dynamic reconfiguration refactored.
#686: New API Functions for warmup.
#693: Disabling fast math to support FMA in PTX.
#695: Update tornadovm-installer script to be interactive.
#696: Increase sizes for auxiliary data structures related with the number of Tasks in a TaskGraph.
#697: Added auto-deps mode in tornadovm-installer and restored backend and jdk console arguments.
#698: Update tornadovm-installer changes in README.
Compatibility
#668: Updated build instructions for RISC-V systems.
Bug Fixes
#664: Fix kernel name in PTX with sanitizer check.
#666: Fix GridScheduler for execution plans that have multiple TaskGraphs.
#671: Fix ANSI espace characters for logging TornadoVM Bytecodes.
#677: Fix 1.0/sqrt(x) replacement with native rsqrt(x) function.
#678: Fix profiling on macOS systems, regarding accessing UPS metrics.
#681: Fix closing bracket for flash attention.
#688: Fix state after warmup phase.
Full Changelog
Docs
https://tornadovm.readthedocs.io/en/v1.1.1/
How to build
Select the backend/s you want.
## You can try the interactive mode of the installer and select the backends to build with:
./bin/tornadovm-installerTornadoVM 1.1.0
Improvements
#620: Support of computation with mixed precision FP16 to FP32 for matrix operations.
#622: New API to allow buffer mapping between two different buffers on the hardware accelerator.
#624: Enhanced TornadoVM profiler with correct information for the UNDER_DEMAND transfer to host data.
#627: New feature to persist data on the hardware accelerator, and consume data already allocated on the hardware accelerator.
#630: Support for atomics using the kernel API for OpenCL and PTX backends.
#636: TornadoVM bytecode logging improved.
#642: Math functions extended: acosh and asinh supported for OpenCL and SPIR-V.
#645: Memory deallocations improved. Action by default when closing the TornadoExecutionPlan resource.
Compatibility
#625: Documentation to build on RISC-V updated.
#632: Add maven build with Single thread.
#633: Add tests for running multiple task graphs with different grid schedulers.
#638: Add tests to check force copy in buffers and persist buffers on the hardware accelerator.
#640: Rename XPUFuffer to FieldBuffer for all backends.
#649: Update the fast mode to live mode for testing.
#654: Add loop condition test in white list.
Bug Fixes
#626: Fix data accessors when using the UNDER_DEMAND transfer to host innovation from the task-graph.
#628: Device filtering API fixed to use device type and device names.
#635: Update nodes for local memory to be subtype of ValueNode instead of ConstantNode in the TornadoVM IR.
#639: Fix subgraph execution when combining with the GridScheduler.
#644: Fix TornadoVM execution frame setter.
#646: Fix shared memory buffers across task-graphs when no new allocation is present as new parameters for the following task-graphs.
#647: Fix UNDER_DEMAND invocation for the batch processor mode and read-write arrays.
#651: Fix memory mapping regions for the PTX Backend.
#653: Object repetition with shared buffers on ON_DEVICE bytecodes.
Full Changelog
Docs
https://tornadovm.readthedocs.io/en/v1.1.0/
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.10
Improvements
- #608: Selective execution with multiple SPIR-V runtimes (either OpenCL, Intel Level Zero, or both) to unlock execution on RISC-V systems.
- #611: Support of
HalfFloatfor Matrix Types (FP16->FP16).
Compatibility
- #607: WSL installation and configuration updated for WSL Ubuntu 24 LTS and Windows 11.
- #609: Documentation and patch for RISC-V64 updated.
- #610: Maven dependency updated
- #612: Re-enable colours in maven builds on Linux.
Bug Fixes
- #606: Fix data sizes in benchmark suite.
- #613: Fix code formatter.
- #614: Fix flags for the benchmark pipeline in Jenkins.
- #615: Fix code style based on the formatter.
- #616: Fix atomics for the Kernel API and the OpenCL backend.
Full Changelog
Docs
https://tornadovm.readthedocs.io/en/v1.0.10/
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.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
tornadolauncher 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_INFINITYandFloat.NEGATIVE_INFINITIVEconstants 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::getAllDevicesthread-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,ptxTornadoVM 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
TornadoMathclass. - #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:
READMEfile 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,ptxTornadoVM 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,ptxTornadoVM 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>