Skip to content

Releases: beehive-lab/TornadoVM

TornadoVM v0.15.1

15 May 10:51
d3062ac
Compare
Choose a tag to compare

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>

TornadoVM v0.15

27 Jan 08:35
94f2fca
Compare
Choose a tag to compare

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>

TornadoVM v0.14.1

29 Sep 08:33
33c2afd
Compare
Choose a tag to compare

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>

TornadoVM v0.14

15 Jun 09:35
2abd301
Compare
Choose a tag to compare

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.

TornadoVM v0.13

21 Mar 10:28
440d759
Compare
Choose a tag to compare

CHANGELOG v0.13

  • Integration with JDK 17 and Graal 21.3.0
    • JDK 11 is the default version and the support for the JDK 8 has been deprecated
  • Support for extended intrinsics regarding math operations
  • Native functions are enabled by default
  • Support for 2D arrays for PTX and SPIR-V backends:
  • Integer Test Move operation supported:
  • Improvements in the SPIR-V Backend:
    • Experimental SPIR-V optimizer. Binary size reduction of up to 3x
    • Fix malloc functions for Level-Zero
    • Support for pre-built SPIR-V binary modules using the TornadoVM runtime for OpenCL
    • Performance increase due to cached buffers on GPUs by default
    • Disassembler option for SPIR-V binary modules. Use --printKernel
  • Improved Installation:
    • Full automatic installer script integrated
  • Documentation about the installation for Windows 11
  • Refactoring and several bug fixes
  • Dependencies for Math3 and Lang3 updated

TornadoVM v0.12

17 Nov 11:01
e225f46
Compare
Choose a tag to compare

CHANGELOG v0.12

  • New backend: initial support for SPIR-V and Intel Level Zero
    • Level-Zero dispatcher for SPIR-V integrated
    • SPIR-V Code generator framework for Java
  • Benchmarking framework improved to accommodate all three backends
  • Driver metrics, such as kernel time and data transfers included in the benchmarking framework
  • TornadoVM profiler improved:
    • Command line options added: --enableProfiler <silent|console> and --dumpProfiler <jsonFile>
    • Logging improve for debugging purposes. JIT Compiler, JNI calls and code generation
  • New math intrinsincs operations supported
  • Several bug fixes:
    • Duplicated barriers removed. TornadoVM BARRIER bytecode fixed when running multi-context
    • Copy in when having multiple reductions fixed
    • TornadoVM profiler fixed for multiple context switching (device switching)
  • Pretty printer for device information

Docker Images

Docker images are available for v0.12. Note that all docker images are built for the OpenCL backend only.

Visit https://github.com/beehive-lab/docker-tornado for more details

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.12</version>
</dependency>
<dependency>
    <groupId>tornado</groupId>
    <artifactId>tornado-matrices</artifactId>
    <version>0.12</version>
</dependency>
</dependencies>

TornadoVM v0.11

29 Sep 09:23
bd65e7a
Compare
Choose a tag to compare
  • TornadoVM JIT Compiler upgrade to work with Graal 21.2.0 and JDK 8 with JVMCI 21.2.0
  • Refactoring of the Kernel Parallel API for Heterogeneous Programming:
    • Methods getLocalGroupSize(index) and getGlobalGroupSize moved to public fields to keep consistency with the rest of the thread properties within the KernelContext class.
  • Compiler update to register the global number of threads: https://github.com/beehive-lab/TornadoVM/pull/133/files
  • Simplification of the TornadoVM events handler: https://github.com/beehive-lab/TornadoVM/pull/135/files
  • Renaming the Profiler API method from event.getExecutionTime to event.getElapsedTime: #134
  • Deprecating OCLWriteNode and PTXWriteNode and fixing stores for bytes: #131
  • Refactoring of the FPGA IR extensions, from the high-tier to the low-tier of the JIT compiler
    • Utilizing the FPGA Thread-Attributes compiler phase for the FPGA execution
    • Using the GridScheduler object (if present) or use a default value (e.g., 64, 1, 1) for defining the FPGA OpenCL local workgroup
  • Several bugs fixed:
    • Codegen for sequential kernels fixed
    • Function parameters with non-inlined method calls fixed

Docker Images

Docker images available for v0.11. Note that all docker images are built for the OpenCL backend only.

Visit https://github.com/beehive-lab/docker-tornado for more details

Pom file dependencies

To obtain the TornadoVM API from maven dependencies, you need to include the following dependency in our 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.11</version>
      </dependency>

      <dependency>
         <groupId>tornado</groupId>
         <artifactId>tornado-matrices</artifactId>
         <version>0.11</version>
      </dependency>
   </dependencies>

TornadoVM v0.10

29 Jun 06:39
b576f85
Compare
Choose a tag to compare
  • TornadoVM JIT Compiler sync with Graal 21.1.0
  • Experimental support for OpenJDK 16
  • Tracing the TornadoVM thread distribution and device information with a new option --threadInfo instead of --debug
  • Refactoring of the new API:
    • TornadoVMExecutionContext renamed to KernelContext
    • GridTask renamed to GridScheduler
  • AWS F1 AMI version upgraded to 1.10.0 and automated the generation of AFI image
  • Xilinx OpenCL backend expanded with:
    • a) Initial integration of Xilinx OpenCL attributes for loop pipelining in the TornadoVM compiler
    • b) Support for multiple compute units
  • Logging FPGA compilation option added to dump FPGA HLS compilation to a file
  • TornadoVM profiler enhanced for including data transfers for the stack-frame and kernel dispatch time
  • Initial support for 2D Arrays added
  • Several bug fixes and stability support for the OpenCL and PTX backends

TornadoVM v0.9

15 Apr 08:05
fda5e2e
Compare
Choose a tag to compare

15/04/2021