Skip to content

Releases: beehive-lab/TornadoVM

TornadoVM 1.0.9

20 Dec 08:30
a3b87c7
Compare
Choose a tag to compare

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 and Float.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

v1.0.8...v1.0.9

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

30 Sep 11:12
c4a6c6b
Compare
Choose a tag to compare

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

v1.0.7...v1.0.8

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

30 Aug 05:52
c712aa5
Compare
Choose a tag to compare

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

v1.0.6...v1.0.7

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

27 Jun 07:48
c131935
Compare
Choose a tag to compare

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

v1.0.5...v1.0.6

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

28 May 10:49
f317c91
Compare
Choose a tag to compare

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

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

TornadoVM v1.0.4

30 Apr 07:34
585574e
Compare
Choose a tag to compare

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 Mar 09:21
02cb3f7
Compare
Choose a tag to compare

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/

TornadoVM v1.0.2

29 Feb 08:50
188e3a4
Compare
Choose a tag to compare

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/

TornadoVM v1.0.1

30 Jan 08:27
46bdaf8
Compare
Choose a tag to compare

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

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

TornadoVM v1.0

05 Dec 11:28
22b0ed7
Compare
Choose a tag to compare

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/