<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>TornadoVM on foojay.io - Friends of OpenJDK</title><link>https://foojayio.github.io/website/today/category/tornadovm/</link><description>Recent content in TornadoVM on foojay.io - Friends of OpenJDK</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Tue, 30 Dec 2025 15:18:44 +0000</lastBuildDate><atom:link href="https://foojayio.github.io/website/today/category/tornadovm/index.xml" rel="self" type="application/rss+xml"/><item><title>TornadoInsight - Compatibility with TornadoVM SDK 2.0+ &amp; Configuration Guide</title><link>https://foojayio.github.io/website/today/tornadoinsight-compatibility-with-tornadovm-sdk-2-0-configuration-guide/</link><pubDate>Tue, 30 Dec 2025 09:00:00 +0000</pubDate><guid>https://foojayio.github.io/website/today/tornadoinsight-compatibility-with-tornadovm-sdk-2-0-configuration-guide/</guid><description>&lt;figure class="wp-block-image size-full is-resized"&gt;
 &lt;img fetchpriority="high" decoding="async" width="298" height="298" src="tornado-insight.webp" alt="" class="wp-image-106112" style="width:138px;height:auto"&gt;
&lt;/figure&gt;
&lt;p&gt;This blog updates the previously published &lt;strong&gt;TornadoInsight&lt;/strong&gt; configuration &lt;a href="https://www.tornadovm.org/post/introducing-tornadoinsight-unleashing-the-power-of-tornadovm-in-intellij-idea" target="_blank" rel="noopener noreferrer"&gt;&lt;strong&gt;++guidelines++&lt;/strong&gt;&lt;/a&gt;
 and explains how to configure the required environment variable to ensure that TornadoInsight correctly detects the TornadoVM SDK when IntelliJ IDEA is launched from a graphical environment.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="6bbq84970"&gt;&lt;strong&gt;Overview&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;TornadoInsight requires access to a compatible Java Development Kit (JDK) and the TornadoVM SDK.{#o7o5c20810}&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Important update:&lt;/strong&gt;{#mvwo920904}&lt;/p&gt;
&lt;p&gt;Since version &lt;a href="https://github.com/beehive-lab/tornado-insight/releases/tag/v1.4.0" target="_blank" rel="noopener noreferrer"&gt;++v1.4.0++&lt;/a&gt;
, TornadoInsight can also use the &lt;strong&gt;JDK configured directly in IntelliJ IDEA&lt;/strong&gt; via &lt;strong&gt;Project Structure&lt;/strong&gt;. This means that, in many cases, users no longer need to configure the Java SDK in the plugins settings.{#welj420814}&lt;/p&gt;</description></item><item><title>Getting Started with TornadoVM 2.0 for Accelerating Java Applications</title><link>https://foojayio.github.io/website/today/getting-started-with-tornadovm-2-0/</link><pubDate>Mon, 22 Dec 2025 10:00:00 +0000</pubDate><guid>https://foojayio.github.io/website/today/getting-started-with-tornadovm-2-0/</guid><description>&lt;p&gt;Starting with &lt;strong&gt;TornadoVM 2.0&lt;/strong&gt; , installing and using TornadoVM is easier than ever. The project now provides prebuilt SDKs for multiple operating systems, architectures, and accelerator backends, and is also available via &lt;strong&gt;Maven Central&lt;/strong&gt; for seamless integration with existing Java codebases.{#viewer-bsvyh182}&lt;/p&gt;
&lt;p&gt;This guide walks you through:{#viewer-aq221189}&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Installing the TornadoVM SDK&lt;/li&gt;
&lt;li&gt;Verifying your setup&lt;/li&gt;
&lt;li&gt;Integrating TornadoVM into Java projects using Maven&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="viewer-f868f305-69f0-46b4-bbc6-baaa3d02051b"&gt;Prerequisites&lt;/h2&gt;
&lt;p&gt;Before installing TornadoVM, ensure that your system has the following:{#viewer-k00hu10420}&lt;/p&gt;</description></item><item><title>Foojay Podcast #82: OpenJDK Projects (Leyden, Babylon, Panama) and TornadoVM</title><link>https://foojayio.github.io/website/today/foojay-podcast-82/</link><pubDate>Mon, 17 Nov 2025 07:35:00 +0000</pubDate><guid>https://foojayio.github.io/website/today/foojay-podcast-82/</guid><description>&lt;p&gt;In this Foojay Podcast, we&amp;rsquo;re diving deep into some of the most exciting developments happening within the OpenJDK and TornadoVM projects.&lt;/p&gt;
&lt;p&gt;At the Devoxx and JFall conferences, we spoke with several speakers and visitors about some of the major themes shaping the future of Java development. The first guest is Moritz Halbritter from the Spring Engineering team. He provides us with more insights into Project Leyden and how it&amp;rsquo;s improving Java startup times through ahead-of-time compilation and profiling. We&amp;rsquo;ll learn how Spring Boot developers can already take advantage of these improvements today.&lt;/p&gt;</description></item><item><title>Build and Run TornadoVM with IntelliJ IDEA</title><link>https://foojayio.github.io/website/today/build-and-run-tornadovm-with-intellij-idea/</link><pubDate>Wed, 20 Nov 2024 19:08:13 +0000</pubDate><guid>https://foojayio.github.io/website/today/build-and-run-tornadovm-with-intellij-idea/</guid><description>&lt;p&gt;&lt;a href="https://www.tornadovm.org/" target="_blank" rel="noopener noreferrer"&gt;TornadoVM&lt;/a&gt;
 is an open-source Java technology that is developed to aid Java programmers in adapting their code bases for hardware acceleration.&lt;/p&gt;
&lt;p&gt;This blog aims to explain how Java programmers can build TornadoVM with IntelliJ IDEA, and how they can run TornadoVM unit-tests or other Java programs.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="h2-0-prerequisites"&gt;&lt;em&gt;Prerequisites&lt;/em&gt;&lt;/h2&gt;
&lt;p&gt;This blog uses IntelliJ IDEA 2024.2.4 version and the list of required plugins are as follows:{#r55ph1440}&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Python &lt;a href="https://plugins.jetbrains.com/plugin/631-python" target="_blank" rel="noopener noreferrer"&gt;++plugin++&lt;/a&gt;
 to be installed in IntelliJ. This plugin allows python scripting from the IDE.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;{#x95ro33520}&lt;/p&gt;</description></item><item><title>TornadoVM for RISC-V Accelerators</title><link>https://foojayio.github.io/website/today/tornadovm-for-risc-v-accelerators/</link><pubDate>Thu, 19 Sep 2024 07:50:28 +0000</pubDate><guid>https://foojayio.github.io/website/today/tornadovm-for-risc-v-accelerators/</guid><description>&lt;h2 id="h2-0-takeaways"&gt;Takeaways&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;RISC-V is an open standard instruction set architecture that anyone can use to build new processors and accelerators, for example, for AI.&lt;/li&gt;
&lt;li&gt;oneAPI Construction Kit (OCK) is a new framework that allows software developers and system designers to bridge the gap between hardware accelerators and open standards, by enabling a programming system to implement domain specific instructions for modern hardware such as RISC-V accelerators and custom processors.&lt;/li&gt;
&lt;li&gt;TornadoVM, a parallel programming framework for Java, can take advantage of OCK to offload and accelerate Java workloads on RISC-V chips. This post shows how to run on RISC-V CPUs with vector extensions.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="h2-1-introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://riscv.org/" title="RISC-V" target="_blank" rel="noopener noreferrer"&gt;RISC-V&lt;/a&gt;
 is an open standard instruction set architecture (ISA) based on the principles of reduced instruction sets (RISC). RISC-V is freely available under open licences, allowing anyone to design, modify and implement RISC-V processors.&lt;/p&gt;</description></item><item><title>Defining patterns of data transfers for Java applications with TornadoVM</title><link>https://foojayio.github.io/website/today/defining-patterns-of-data-transfers-for-java-applications-with-tornadovm/</link><pubDate>Thu, 15 Aug 2024 15:43:56 +0000</pubDate><guid>https://foojayio.github.io/website/today/defining-patterns-of-data-transfers-for-java-applications-with-tornadovm/</guid><description>&lt;p&gt;&lt;strong&gt;The TornadoVM API is designed to aid Java programmers in adapting their code bases for hardware acceleration. As explained in a previous &lt;a href="https://foojayio.github.io/website/today/migrating-applications-to-tornadovm-v0-15-part-1/"&gt;++article++&lt;/a&gt;
, the TornadoVM API exposes two key Java objects for programmers, the &lt;a href="https://github.com/beehive-lab/TornadoVM/blob/master/tornado-api/src/main/java/uk/ac/manchester/tornado/api/TaskGraph.java" target="_blank" rel="noopener noreferrer"&gt;++TaskGraph++&lt;/a&gt;
 and the &lt;a href="https://github.com/beehive-lab/TornadoVM/blob/master/tornado-api/src/main/java/uk/ac/manchester/tornado/api/TornadoExecutionPlan.java" target="_blank" rel="noopener noreferrer"&gt;++TornadoExecutionPlan++&lt;/a&gt;
. The former is used to define which methods should be offloaded on an accelerator as well as how often the data will flow. The latter is used to configure how the execution will take place (e.g., with a warmup, with a specific grid, with a profiler, etc.) and contains a method that actually invokes the execution. More information about how to use those objects are provided &lt;a href="https://tornadovm.readthedocs.io/en/latest/programming.html#selecting-the-methods-to-be-accelerated-using-a-task-graph-api" target="_blank" rel="noopener noreferrer"&gt;++here++&lt;/a&gt;
.&lt;/strong&gt;{#viewer-foo}&lt;/p&gt;</description></item><item><title>The TornadoVM Programming Model Explained</title><link>https://foojayio.github.io/website/today/the-tornadovm-programming-model-explained/</link><pubDate>Tue, 28 May 2024 11:01:14 +0000</pubDate><guid>https://foojayio.github.io/website/today/the-tornadovm-programming-model-explained/</guid><description>&lt;h2 id="h2-0-key-takeaways"&gt;Key Takeaways&lt;/h2&gt;
&lt;p&gt;&lt;img src="https://raw.githubusercontent.com/jjfumero/jjfumero.github.io/master/files/blog/24-02-prog-model/back.jpg" alt="" loading="lazy"&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/beehive-lab/TornadoVM/" target="_blank" rel="noopener noreferrer"&gt;TornadoVM&lt;/a&gt;
 offers an API for parallel programming on modern hardware that tackles data parallel, task parallel and pipeline parallel applications.&lt;/li&gt;
&lt;li&gt;TornadoVM offers different abstractions to developers to be able to express parallel applications in Java, identify the methods to offload, and dispatch the application on the corresponding accelerators.&lt;/li&gt;
&lt;li&gt;Task-Graphs and Execution Plans are the main building blocks of TornadoVM applications, allowing developers to compose complex graphs of computations and interact with the TornadoVM runtime to enable/disable profiling, enable debugging, or enable dynamic reconfiguration to select the best possible accelerators for the compute graphs.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In this blog post, I will explain how developers can start programming with TornadoVM and interact with the TornadoVM runtime.&lt;/p&gt;</description></item><item><title>Foojay Podcast #47: Artificial Intelligence and Machine Learning with Java</title><link>https://foojayio.github.io/website/today/foojay-podcast-47/</link><pubDate>Mon, 15 Apr 2024 09:59:42 +0000</pubDate><guid>https://foojayio.github.io/website/today/foojay-podcast-47/</guid><description>&lt;p&gt;About one and a half years ago, ChatGPT was launched.&lt;/p&gt;
&lt;p&gt;The way we search for information and develop software has changed a lot since then as the use of Artificial Intelligence suddenly became a lot easier.&lt;/p&gt;
&lt;p&gt;What can we expect in the near future, and how can we program AI ourselves with Java? Let&amp;rsquo;s find out&amp;hellip;&lt;/p&gt;
&lt;h2 id="h2-0-video"&gt;Video&lt;/h2&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
			&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/E1gBwWFpfUA?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
		&lt;/div&gt;

&lt;h2 id="h2-1-podcast-apps"&gt;Podcast Apps&lt;/h2&gt;
&lt;p&gt;You can listen and subscribe to the Foojay Podcast on:&lt;/p&gt;</description></item><item><title>TornadoVM: Code Interoperability Mode</title><link>https://foojayio.github.io/website/today/code-interoperability-mode-for-opencl-portability-across-various-programming-languages-with-tornadovm/</link><pubDate>Thu, 11 May 2023 07:54:04 +0000</pubDate><guid>https://foojayio.github.io/website/today/code-interoperability-mode-for-opencl-portability-across-various-programming-languages-with-tornadovm/</guid><description>&lt;p&gt;&lt;a href="https://www.tornadovm.org/" target="_blank" rel="noopener noreferrer"&gt;TornadoVM&lt;/a&gt;
 is a programming framework for accelerating Java applications on heterogeneous devices, like multi-core CPUs, GPUs and FPGAs.&lt;/p&gt;
&lt;p&gt;Java developers can use the TornadoVM API to prototype Java methods within their code bases for hardware acceleration.&lt;/p&gt;
&lt;p&gt;TornadoVM is hardware-agnostic, but the generated code (i.e., kernels) for acceleration can be executed only through the TornadoVM runtime.&lt;/p&gt;
&lt;p&gt;This blog outlines the key changes in TornadoVM to &lt;strong&gt;enable code interoperability of kernels with other programming languages beyond Java&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>Foojay Podcast #17: Execute Java Code with TornadoVM</title><link>https://foojayio.github.io/website/today/foojay-podcast-17/</link><pubDate>Mon, 27 Mar 2023 08:45:20 +0000</pubDate><guid>https://foojayio.github.io/website/today/foojay-podcast-17/</guid><description>&lt;p&gt;TornadoVM is a programming and execution framework for offloading and running JVM applications on multi-core CPUs, GPUs, and FPGAs.&lt;/p&gt;
&lt;p&gt;With the same code, some of your existing program code can be executed hundreds of times faster!&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
			&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/4Y-3qZNSkfM?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
		&lt;/div&gt;

&lt;h2 id="h2-1--odcast-pps"&gt;Podcast Apps&lt;/h2&gt;
&lt;p&gt;You can listen and subscribe to the Foojay Podcast on:&lt;/p&gt;</description></item><item><title>Migrating Applications to TornadoVM v0.15 (Part 2)</title><link>https://foojayio.github.io/website/today/migrating-applications-to-tornadovm-v0-15-part-2/</link><pubDate>Sat, 04 Mar 2023 18:38:41 +0000</pubDate><guid>https://foojayio.github.io/website/today/migrating-applications-to-tornadovm-v0-15-part-2/</guid><description>&lt;p&gt;In the &lt;a href="https://foojayio.github.io/website/today/migrating-applications-to-tornadovm-v0-15-part-1/"&gt;previous blog&lt;/a&gt;
, we discussed the TornadoVM programming model and showed how programmers can define the parts of their Java applications to be offloaded for hardware acceleration via the TornadoVM API (v0.15).&lt;/p&gt;
&lt;p&gt;In this article, we will spotlight all the TornadoVM configurations/operations that regard the execution on the hardware device.&lt;/p&gt;
&lt;p&gt;In particular, this blog has the following objectives:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Provide guidelines regarding how programmers can trigger TornadoVM-specific configurations that regard the execution on hardware accelerators.&lt;/li&gt;
&lt;li&gt;Provide examples on how to exploit the new operations that are exposed by the new TornadoVM API.&lt;/li&gt;
&lt;/ul&gt;
&lt;ol&gt;
&lt;li&gt;Prerequisites {#h2-0-1-prerequisites}&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;p&gt;This blog begins with a prerequisite that a snapshot of a user-defined TaskGraph is captured to an immutable state. This was the final point of the &lt;a href="https://foojayio.github.io/website/today/migrating-applications-to-tornadovm-v0-15-part-1/"&gt;previous blog&lt;/a&gt;
.&lt;/p&gt;</description></item><item><title>Migrating Applications to TornadoVM v0.15 (Part 1)</title><link>https://foojayio.github.io/website/today/migrating-applications-to-tornadovm-v0-15-part-1/</link><pubDate>Thu, 16 Feb 2023 07:58:43 +0000</pubDate><guid>https://foojayio.github.io/website/today/migrating-applications-to-tornadovm-v0-15-part-1/</guid><description>&lt;p&gt;TornadoVM 0.15 introduced changes at the API level with the aim of making the exposed operations more comprehensive to the programmers.&lt;/p&gt;
&lt;p&gt;It is imperative after all to get an understanding of how to use the TornadoVM API, as it includes very powerful operations, such as expressing parallelism, chaining Java methods (tasks) for deployment on heterogeneous hardware, configuration of the data transfers, etc.&lt;/p&gt;
&lt;p&gt;This article has the following objectives:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Give an overview of the TornadoVM programming model.&lt;/li&gt;
&lt;li&gt;Provide guidelines on how to define what to run on a device.&lt;/li&gt;
&lt;li&gt;Provide guidelines on how existing TornadoVM programs can migrate to use the TornadoVM v0.15 API.&lt;/li&gt;
&lt;/ul&gt;
&lt;ol&gt;
&lt;li&gt;TornadoVM Programming Model {#h2-0-1-tornadovm-programming-model}&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;p&gt;TornadoVM uses a programming model that derives from the state-of-the-art programming models of heterogeneous hardware accelerators, such as OpenCL, Level Zero, and CUDA. A key aspect for software applications that require to offload computations for hardware acceleration is that they are composed of two parts:&lt;/p&gt;</description></item><item><title>A Flavour of TornadoVM on Apple M1 Pro</title><link>https://foojayio.github.io/website/today/a-flavour-of-tornadovm-on-apple-m1-pro/</link><pubDate>Tue, 02 Aug 2022 08:21:12 +0000</pubDate><guid>https://foojayio.github.io/website/today/a-flavour-of-tornadovm-on-apple-m1-pro/</guid><description>&lt;p&gt;This article aims to describe the main steps required to install and run &lt;a href="https://foojayio.github.io/website/today/hardware-acceleration-for-java-tornadovm-can-do-it/"&gt;TornadoVM&lt;/a&gt;
 on Apple M1 Pro.&lt;/p&gt;
&lt;h4 id="steps"&gt;Steps&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Install Prerequisites&lt;/li&gt;
&lt;li&gt;Run TornadoVM Installer&lt;/li&gt;
&lt;li&gt;Execute Unit Tests&lt;/li&gt;
&lt;li&gt;Performance Evaluation: Running Matrix-Multiplication on Apple M1 GPU&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="h3-0-1-install-prerequisites"&gt;1. Install Prerequisites&lt;/h3&gt;
&lt;p&gt;To install TornadoVM, it is necessary to have some packages installed. For instance, you will have to install &lt;a href="https://maven.apache.org/" target="_blank" rel="noopener noreferrer"&gt;Maven&lt;/a&gt;
 and &lt;a href="https://mac.install.guide/homebrew/index.html" target="_blank" rel="noopener noreferrer"&gt;wget&lt;/a&gt;
 in order to enable the TornadoVM installer to be functional.&lt;/p&gt;
&lt;p&gt;Assuming that Homebrew is installed in your system, you can open a terminal and execute the following commands:&lt;/p&gt;</description></item><item><title>Hardware Acceleration For Java? TornadoVM Can Do It!</title><link>https://foojayio.github.io/website/today/hardware-acceleration-for-java-tornadovm-can-do-it/</link><pubDate>Fri, 01 Apr 2022 07:37:03 +0000</pubDate><guid>https://foojayio.github.io/website/today/hardware-acceleration-for-java-tornadovm-can-do-it/</guid><description>&lt;p&gt;Java programs can primarily run on x86 and Arm platforms and recent efforts focus on ports to PowerPC and RISC-V.&lt;/p&gt;
&lt;p&gt;Despite the diverse range of ISAs, contemporary computers are equipped with heterogeneous devices, such as Graphics Processing Units (GPUs), Field Programmable Gate Arrays (FPGAs), and Tensor Processing Units (TPUs), which operate as co-processors that offload data processing from the main processor.&lt;/p&gt;
&lt;p&gt;A question that rises is whether such compute power can be utilized by Java programs. The answer is that several frameworks have been created to address this challenge. For instance, &lt;a href="https://www.ibm.com/docs/en/sdk-java-technology/7?topic=i-j9-virtual-machine-jvm-1" target="_blank" rel="noopener noreferrer"&gt;IBM J9&lt;/a&gt;
, &lt;a href="https://aparapi.github.io/" target="_blank" rel="noopener noreferrer"&gt;Aparapi&lt;/a&gt;
, and &lt;a href="https://www.tornadovm.org/" target="_blank" rel="noopener noreferrer"&gt;TornadoVM&lt;/a&gt;
, are frameworks that aid Java programmers to accelerate their programs on heterogeneous hardware devices.&lt;/p&gt;</description></item></channel></rss>