TornadoVM Versions Save

TornadoVM: A practical and efficient heterogeneous programming framework for managed languages

v1.0.4

2 weeks ago

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>

v1.0.3

1 month ago

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

https://tornadovm.readthedocs.io/en/v1.0.3/

v1.0.2

2 months ago

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 and printKernel 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

https://tornadovm.readthedocs.io/en/v1.0.2/

v1.0.1

3 months ago

30/01/2024

Improvements

https://github.com/beehive-lab/TornadoVM/pull/305: Under-demand data transfer for custom data ranges. https://github.com/beehive-lab/TornadoVM/pull/313: Initial support for Half-Precision (FP16) data types. https://github.com/beehive-lab/TornadoVM/pull/315: Math Ceil function added. https://github.com/beehive-lab/TornadoVM/pull/311: Enable Multi-Task Multiple Device (MTMD) model from the TornadoExecutionPlan API.

Compatibility/Integration

https://github.com/beehive-lab/TornadoVM/pull/294: Separation of the OpenCL Headers from the code base. https://github.com/beehive-lab/TornadoVM/pull/297: Separation of the LevelZero JNI API in a separate repository. https://github.com/beehive-lab/TornadoVM/pull/301: Temurin configuration supported. https://github.com/beehive-lab/TornadoVM/pull/304: Refactor of the common phases for the JIT compiler. https://github.com/beehive-lab/TornadoVM/pull/316: Beehive SPIR-V Toolkit version updated.

Bug Fixes

https://github.com/beehive-lab/TornadoVM/pull/298: OpenCL Codegen fixed open-close brackets. https://github.com/beehive-lab/TornadoVM/pull/300: Python Dependencies fixed for AWS. https://github.com/beehive-lab/TornadoVM/pull/308: Runtime checks for Grid-Scheduler names. https://github.com/beehive-lab/TornadoVM/pull/309: Fix check-style to support STR templates. https://github.com/beehive-lab/TornadoVM/pull/314: emit Vector16 Capability for 16-width vectors.

Documentation

https://tornadovm.readthedocs.io/en/v1.0.1/

v1.0

5 months ago

TornadoVM 1.0

05/12/2023

Improvements

  • Brand-new API for allocating off-heap objects and array collections using the Panama Memory Segment API.
  • Handling of the TornadoVM's internal bytecode improved to avoid write-only copies from host to device.
  • cospi and sinpi math operations supported for OpenCL, PTX and SPIR-V.
  • Vector 16 data types supported for float, double and int.
  • 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.

Docs

https://tornadovm.readthedocs.io/en/v1.0/

v0.15.2

9 months ago

Date: 26/07/2023

Improvements

  • Initial Support for Multi-Tasks on Multiple Devices (MTMD): This mode enables the execution of multiple independent tasks on more than one hardware accelerator. Documentation in link: https://tornadovm.readthedocs.io/en/latest/multi-device.html
  • Support for trigonometric radian, cospi and sinpi functions for the OpenCL/PTX and SPIR-V backends.
  • Clean-up Java modules not being used and TornadoVM core classes refactored.

Compatibility/Integration

  • Initial integration with ComputeAorta (part of the Codeplay's oneAPI Construction Kit for RISC-V) to run on RISC-V with Vector Instructions (OpenCL backend) in emulation mode.
  • Beehive SPIR-V Toolkit dependency updated.
  • Tests for prebuilt SPIR-V kernels fixed to dispatch SPIR-V binaries through the Level Zero and OpenCL runtimes.
  • Deprecated javac.py script removed.

Bug fixes:

  • TornadoVM OpenCL Runtime throws an exception when the detected hardware does not support FP64.
  • Fix the installer for the older Apple with the x86 architecture using AMD GPUs.
  • Installer for ARM-based systems fixed.
  • Installer fixed for Microsoft WSL and NVIDIA GPUs.
  • OpenCL code generator fixed to avoid using the reserved OpenCL keywords from Java function parameters.
  • Dump profiler option fixed.

v0.15.1

1 year ago

Date: 15/05/2023

Improvements

  • Introduction of a device selection heuristic based on the computing capabilities of devices. TornadoVM selects, as the default device, the fastest device based on its computing capability.
  • Optimisation of removing redundant data copies for Read-Only and Write-Only buffers from between the host (CPU) and the device (GPU) based on the Tornado Data Flow Graph.
  • New installation script for TornadoVM.
  • Option to dump the TornadoVM bytecodes for the unit tests.
  • Full debug option improved. Use --fullDebug.

Compatibility/Integration

  • Integration and compatibility with the Graal 22.3.2 JIT Compiler.
  • Improved compatibility with Apple M1 and Apple M2 through the OpenCL Backend.
  • GraalVM/Truffle programs integration improved. Use --truffle in the tornado script to run guest programs with Truffle. Example: tornado --truffle python myProgram.py Full documentation: https://tornadovm.readthedocs.io/en/latest/truffle-languages.html

Bug fixes:

POM file dependencies

To obtain the TornadoVM API from maven dependencies, you need to include the following dependency in your pom file. Note that, for running the TornadoVM application, you either need: a) TornadoVM SDK Binaries; b) a full installation of the TornadoVM; or c) a docker instance of TornadoVM.

<repositories>
    <repository>
        <id>universityOfManchester-graal</id>
        <url>https://raw.githubusercontent.com/beehive-lab/tornado/maven-tornadovm</url>
    </repository>
</repositories>

<dependencies>
<dependency>
    <groupId>tornado</groupId>
    <artifactId>tornado-api</artifactId>
    <version>0.15.1</version>
</dependency>
<dependency>
    <groupId>tornado</groupId>
    <artifactId>tornado-matrices</artifactId>
    <version>0.15.1</version>
</dependency>
</dependencies>

v0.15

1 year ago

Improvements

  • New TornadoVM API:

  • Launch a new website https://tornadovm.readthedocs.io/en/latest/ for the documentation

  • Improved documentation

  • Initial support for Intel ARC discrete GPUs.

  • Improved TornadoVM installer for Linux

  • ImprovedTornadoVM launch script with optional parameters

  • Support of large buffer allocations with Intel Level Zero. Use: tornado.spirv.levelzero.extended.memory=True

Bug fixes:

  • Vector and Matrix types
  • TornadoVM Floating Replacement compiler phase fixed
  • Fix CMAKE for Intel ARC GPUs
  • Device query tool fixed for the PTX backend
  • Documentation for Windows 11 fixed

POM file dependencies

To obtain the TornadoVM API from maven dependencies, you need to include the following dependency in your pom file. Note that, for running the TornadoVM application, you either need: a) TornadoVM SDK Binaries; b) a full installation of the TornadoVM; or c) a docker instance of TornadoVM.

<repositories>
    <repository>
        <id>universityOfManchester-graal</id>
        <url>https://raw.githubusercontent.com/beehive-lab/tornado/maven-tornadovm</url>
    </repository>
</repositories>

<dependencies>
<dependency>
    <groupId>tornado</groupId>
    <artifactId>tornado-api</artifactId>
    <version>0.15</version>
</dependency>
<dependency>
    <groupId>tornado</groupId>
    <artifactId>tornado-matrices</artifactId>
    <version>0.15</version>
</dependency>
</dependencies>

v0.14.1

1 year ago

Improvements

  • The tornado command is replaced from a Bash to a Python script.
    • Use tornado --help to check the new options and examples.
  • Support of native tests for the SPIR-V backend.
  • Improvement of the OpenCL and PTX tests of the internal APIs.

Compatibility/Integration

  • Integration and compatibility with the Graal 22.2.0 JIT Compiler.
  • Compatibility with JDK 18 and JDK 19.
  • Compatibility with Apple M1 Pro using the OpenCL backend.

Bug Fixes

  • CUDA PTX generated header fixed to target NVIDIA 30xx GPUs and CUDA 11.7.
  • The signature of generated PTX kernels fixed for NVIDIA driver >= 510 and 30XX GPUs when using the TornadoVM Kernel API.
  • Tests of virtual OpenCL devices fixed.
  • Thread deployment information for the OpenCL backend is fixed.
  • TornadoVMRuntimeCI moved to TornadoVMRutimeInterface.

POM file dependencies

To obtain the TornadoVM API from maven dependencies, you need to include the following dependency in your pom file. Note that, for running the TornadoVM application, you either need a full installation of the TornadoVM or a docker instance of TornadoVM.

<repositories>
    <repository>
        <id>universityOfManchester-graal</id>
        <url>https://raw.githubusercontent.com/beehive-lab/tornado/maven-tornadovm</url>
    </repository>
</repositories>

<dependencies>
<dependency>
    <groupId>tornado</groupId>
    <artifactId>tornado-api</artifactId>
    <version>0.14.1</version>
</dependency>
<dependency>
    <groupId>tornado</groupId>
    <artifactId>tornado-matrices</artifactId>
    <version>0.14.1</version>
</dependency>
</dependencies>

v0.14

1 year ago

15/06/2022

New Features

  • New device memory management for addressing the memory allocation limitations of OpenCL and enabling pinned memory of device buffers.
    • The execution of task-schedules will still automatically allocate/deallocate memory every time a task-schedule is executed, unless lock/unlock functions are invoked explicitly at the task-schedule level.
    • One heap per device has been replaced with a device buffer per input variable.
    • A new API call has been added for releasing memory: unlockObjectFromMemory
    • A new API call has been added for locking objects to the device: lockObjectInMemory This requires the user to release memory by invoking unlockObjectFromMemory at the task-schedule level.
  • Enhanced Live Task migration by supporting multi-backend execution (PTX <-> OpenCL <-> SPIR-V).

Compatibility/Integration

  • Integration with the Graal 22.1.0 JIT Compiler
  • JDK 8 deprecated
  • Azul Zulu JDK supported
  • OpenCL 2.1 as a default target for the OpenCL Backend
  • Single Docker Image for Intel XPU platforms, including the SPIR-V backend (using the Intel Integrated Graphics), and OpenCL (using the Intel Integrated Graphics, Intel CPU and Intel FPGA in emulation mode). Image: https://github.com/beehive-lab/docker-tornado#intel-integrated-graphics

Improvements/Bug Fixes

  • SIGNUM Math Function included for all three backends.
  • SPIR-V optimizer enabled by default (3x reduce in binary size).
  • Extended Memory Mode enabled for the SPIR-V Backend via Level Zero.
  • Phi instructions fixed for the SPIR-V Backend.
  • SPIR-V Vector Select instructions fixed.
  • Duplicated IDs for Non-Inlined SPIR-V Functions fixed.
  • Refactoring of the TornadoVM Math Library.
  • FPGA Configuration files fixed.
  • Bitwise operations for OpenCL fixed.
  • Code Generation Times and Backend information are included in the profiling info.