Recent Releases of https://github.com/beehive-lab/tornadovm
https://github.com/beehive-lab/tornadovm - TornadoVM 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
https://github.com/beehive-lab/TornadoVM/compare/v1.1.0...v1.1.1
Docs
https://tornadovm.readthedocs.io/en/v1.1.1/
How to build
Select the backend/s you want.
```bash
You can try the interactive mode of the installer and select the backends to build with:
./bin/tornadovm-installer ```
- Java
Published by stratika 8 months ago
https://github.com/beehive-lab/tornadovm - TornadoVM 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
https://github.com/beehive-lab/TornadoVM/compare/v1.0.10...v1.1.0
Docs
https://tornadovm.readthedocs.io/en/v1.1.0/
How to build
Select the backend/s you want.
```bash
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.
```
- Java
Published by jjfumero 11 months ago
https://github.com/beehive-lab/tornadovm - 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
https://github.com/beehive-lab/TornadoVM/compare/v1.0.9...v1.0.10
Docs
https://tornadovm.readthedocs.io/en/v1.0.10/
How to build
Select the backend/s you want.
```bash
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.
```
- Java
Published by jjfumero about 1 year ago
https://github.com/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
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
https://github.com/beehive-lab/TornadoVM/compare/v1.0.8...v1.0.9
Docs
https://tornadovm.readthedocs.io/en/v1.0.9/
How to build
Select the backend/s you want.
```bash
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.
```
- Java
Published by jjfumero about 1 year ago
https://github.com/beehive-lab/tornadovm - 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
https://github.com/beehive-lab/TornadoVM/compare/v1.0.7...v1.0.8
Docs
https://tornadovm.readthedocs.io/en/v1.0.8/
How to build
bash
./bin/tornadovm-installer --jdk jdk21 --backend=opencl,spirv,ptx
- Java
Published by jjfumero over 1 year ago
https://github.com/beehive-lab/tornadovm - 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
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
https://github.com/beehive-lab/TornadoVM/compare/v1.0.6...v1.0.7
Docs
https://tornadovm.readthedocs.io/en/v1.0.7/
How to build
bash
./bin/tornadovm-installer --jdk jdk21 --backend=opencl,spirv,ptx
- Java
Published by jjfumero over 1 year ago
https://github.com/beehive-lab/tornadovm - 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
https://github.com/beehive-lab/TornadoVM/compare/v1.0.5...v1.0.6
Docs
https://tornadovm.readthedocs.io/en/v1.0.6/
How to build
bash
./bin/tornadovm-installer --jdk jdk21 --backend=opencl,spirv,ptx
- Java
Published by jjfumero over 1 year ago
https://github.com/beehive-lab/tornadovm - 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
https://tornadovm.readthedocs.io/en/v1.0.5/
- Java
Published by jjfumero almost 2 years ago
https://github.com/beehive-lab/tornadovm - 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
```bash ./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>
```
- Java
Published by jjfumero almost 2 years ago
https://github.com/beehive-lab/tornadovm - 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
https://tornadovm.readthedocs.io/en/v1.0.3/
- Java
Published by jjfumero almost 2 years ago
https://github.com/beehive-lab/tornadovm - 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
threadInfoandprintKernelfrom 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
MatrixVectorFloat4type 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/
- Java
Published by jjfumero about 2 years ago
https://github.com/beehive-lab/tornadovm - TornadoVM v1.0.1
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/
- Java
Published by jjfumero about 2 years ago
https://github.com/beehive-lab/tornadovm - 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.
cospiandsinpimath operations supported for OpenCL, PTX and SPIR-V.- Vector 16 data types supported for
float,doubleandint. - 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.
longtype 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/
- Java
Published by jjfumero about 2 years ago
https://github.com/beehive-lab/tornadovm - TornadoVM v0.15.2
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,cospiandsinpifunctions 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.pyscript 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.
- Java
Published by jjfumero over 2 years ago
https://github.com/beehive-lab/tornadovm - TornadoVM v0.15.1
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
--trufflein thetornadoscript to run guest programs with Truffle. Example:tornado --truffle python myProgram.pyFull documentation: https://tornadovm.readthedocs.io/en/latest/truffle-languages.html
Bug fixes:
- Documentation that resets the device's memory: https://github.com/beehive-lab/TornadoVM/blob/master/tornado-api/src/main/java/uk/ac/manchester/tornado/api/TornadoExecutionPlan.java#L282
- Append the Java
CLASSPATHto thecpoption from thetornadoscript. - Dependency fixed for the
cmake-mavenplugin fixed for ARM-64 arch. - Fixed the automatic installation for Apple M1/M2 and ARM-64 and NVIDIA Jetson nano computing systems.
- Integration with IGV fixed. Use the
--igvoption for thetornadoandtornado-testscripts.
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.
```xml
- Java
Published by jjfumero almost 3 years ago
https://github.com/beehive-lab/tornadovm - TornadoVM v0.15
Improvements
New TornadoVM API:
- API refactoring (
TaskSchedulehas been renamed toTaskGraph) - Introduction of the Immutable
TaskGraphs - Introduction of the TornadoVM Execution Plans: (
TornadoExecutionPlan) - The documentation of migration of existing TornadoVM applications to the new API can be found here: https://tornadovm.readthedocs.io/en/latest/programming.html#migration-to-tornadovm-v0-15
- API refactoring (
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
CMAKEfor 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.
```xml
- Java
Published by jjfumero about 3 years ago
https://github.com/beehive-lab/tornadovm - TornadoVM v0.14.1
Improvements
- The tornado command is replaced from a Bash to a Python script.
- Use
tornado --helpto check the new options and examples.
- Use
- 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.
TornadoVMRuntimeCImoved toTornadoVMRutimeInterface.
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.
```xml
- Java
Published by jjfumero over 3 years ago
https://github.com/beehive-lab/tornadovm - TornadoVM v0.14
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:
lockObjectInMemoryThis requires the user to release memory by invokingunlockObjectFromMemoryat 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
SIGNUMMath 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.
- Java
Published by jjfumero over 3 years ago
https://github.com/beehive-lab/tornadovm - TornadoVM v0.13
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:
- https://github.com/beehive-lab/TornadoVM/commit/2ef32ca97941410672720f9dfa15f0151ae2a1a1
- https://github.com/beehive-lab/TornadoVM/commit/2ef32ca97941410672720f9dfa15f0151ae2a1a1
- Integer Test Move operation supported:
- https://github.com/beehive-lab/TornadoVM/pull/177
- Improvements in the SPIR-V Backend:
- Experimental SPIR-V optimizer. Binary size reduction of up to 3x
- https://github.com/beehive-lab/TornadoVM/commit/394ca94dcdc3cb58d15a17046e1d22c6389b55b7
- 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
- Experimental SPIR-V optimizer. Binary size reduction of up to 3x
- Improved Installation:
- Full automatic installer script integrated
- Documentation about the installation for Windows 11
- Refactoring and several bug fixes
- https://github.com/beehive-lab/TornadoVM/commit/57694186b42ec28b16066fb549ab8fcf9bff9753
- Vector types fixed:
- https://github.com/beehive-lab/TornadoVM/pull/181/files
- https://github.com/beehive-lab/TornadoVM/commit/004d61d6d26945b45ebff66641b60f90f00486be
- Fix AtomicInteger get for OpenCL:
- https://github.com/beehive-lab/TornadoVM/pull/177
- Dependencies for Math3 and Lang3 updated
- Java
Published by jjfumero almost 4 years ago
https://github.com/beehive-lab/tornadovm - TornadoVM v0.12
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
- Command line options added:
- 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.
```xml
- Java
Published by jjfumero over 4 years ago
https://github.com/beehive-lab/tornadovm - TornadoVM v0.11
- 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)andgetGlobalGroupSizemoved to public fields to keep consistency with the rest of the thread properties within theKernelContextclass.- Changeset: https://github.com/beehive-lab/TornadoVM/commit/e1ebd66035d0722ca90eb0121c55dbc744840a74
- Methods
- 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.getExecutionTimetoevent.getElapsedTime: https://github.com/beehive-lab/TornadoVM/pull/134 - Deprecating
OCLWriteNodeandPTXWriteNodeand fixing stores for bytes: https://github.com/beehive-lab/TornadoVM/pull/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
GridSchedulerobject (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.
```xml
<dependency>
<groupId>tornado</groupId>
<artifactId>tornado-matrices</artifactId>
<version>0.11</version>
</dependency>
```
- Java
Published by jjfumero over 4 years ago
https://github.com/beehive-lab/tornadovm - TornadoVM v0.10
- 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
--threadInfoinstead of--debug - Refactoring of the new API:
TornadoVMExecutionContextrenamed toKernelContextGridTaskrenamed toGridScheduler
- 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
- Java
Published by jjfumero over 4 years ago
https://github.com/beehive-lab/tornadovm - TornadoVM v0.9
15/04/2021
- Expanded API for expressing kernel parallelism within Java. It can work with the existing loop parallelism in TornadoVM.
- Direct access to thread-ids, OpenCL local memory (PTX shared memory), and barriers
TornadoVMContextadded:- See https://github.com/beehive-lab/TornadoVM/blob/master/tornado-api/src/main/java/uk/ac/manchester/tornado/api/TornadoVMContext.java
- Code examples:
- https://github.com/beehive-lab/TornadoVM/tree/master/examples/src/main/java/uk/ac/manchester/tornado/examples/tornadovmcontext
- Documentation:
- https://github.com/beehive-lab/TornadoVM/blob/master/assembly/src/docs/21TORNADOVMCONTEXT.md
- Profiler integrated with Chrome debug:
- Use flags:
-Dtornado.chrome.event.tracer.enabled=True -Dtornado.chrome.event.tracer.filename=userFile.json - See https://github.com/beehive-lab/TornadoVM/pull/41
- Use flags:
- Added support for Windows 10:
- See https://github.com/beehive-lab/TornadoVM/blob/develop/assembly/src/docs/20INSTALLWINDOWSWITHGRAALVM.md
- TornadoVM running with Windows JDK 11 supported (Linux & Windows)
- Xilinx FPGAs workflow supported for Vitis 2020.2
- Pre-compiled tasks for Xilinx/Intel FPGAs fixed
- Slambench fixed when compiling for PTX and OpenCL backends
- Several bug fixes for the runtime, JIT compiler and data management.
- Java
Published by jjfumero almost 5 years ago