Replies: 1 comment 7 replies
-
HI @mikymigs , There are a lot of question (that's good)., I will try to reply all of them.
M... That's an error from our side. I will check. In any case, you can download the latest version (from
So, TornadoVM can accelerate mainly data-parallel applications on GPUs. Although you can also use the multi-core CPU with OpenCL underneath. We have shown acceleration for Matrix-Multiplications (widely used on Machine Learning and Deel Learning), applications for computer vision, applications for NPL and face detection among many others. To get inspired, here a few link:
With TornadoVM v0.9, we extended the TornadoVM API to express kernel parallelism. Examples here: https://github.com/beehive-lab/TornadoVM/tree/master/examples/src/main/java/uk/ac/manchester/tornado/examples/tornadovmcontext/compute
TornadoVM has different modes of working. The dynamic reconfiguration is a brute force process in which TornadoVM automatically detects the fastest device for each data size. For introductory material, we have an introductory article at InfoQ: https://www.infoq.com/articles/tornadovm-java-gpu-fpga/ We also have another intro-article for Jaxenter: https://jaxenter.com/tornado-vm-java-162460.html
You don't need Graal. TornadoVM can run with OpenJDK. We have tested:
TornadoVM is just a java program. If you type $ tornado --pringFlags
/home/juan/manchester/oracleGraal/openjdk1.8.0_262-jvmci-20.2-b03/bin/java -server -XX:-UseCompressedOops \
-XX:+UnlockExperimentalVMOptions \
-XX:+EnableJVMCI \
-Djava.library.path=/home/juan/manchester/tornado/tornado/bin/sdk/lib \
-Djava.ext.dirs=/home/juan/manchester/tornado/tornado/bin/sdk/share/java/tornado \
-Dtornado.load.api.implementation=uk.ac.manchester.tornado.runtime.tasks.TornadoTaskSchedule \
-Dtornado.load.runtime.implementation=uk.ac.manchester.tornado.runtime.TornadoCoreRuntime \
-Dtornado.load.tornado.implementation=uk.ac.manchester.tornado.runtime.common.Tornado \
-Dtornado.load.device.implementation.opencl=uk.ac.manchester.tornado.drivers.opencl.runtime.OCLDeviceFactory \
-Dtornado.load.device.implementation.ptx=uk.ac.manchester.tornado.drivers.ptx.runtime.PTXDeviceFactory \
-Dtornado.load.annotation.implementation=uk.ac.manchester.tornado.annotation.ASMClassVisitor \
-Dtornado.load.annotation.parallel=uk.ac.manchester.tornado.api.annotations.Parallel \
-XX:-UseJVMCIClassLoader As you can see, you need some implementations that are loaded at runtime, as well as the
Apart from the ones I mentioned, we have this documentation:
Hope this helps. |
Beta Was this translation helpful? Give feedback.
-
Hello,
I've been struggling trying to run my own code ("Hello World" type of project) using TornadoVM. To understand why I'm struggling, let me give you a little bit of context:
Now after that I'm completely lost on how I can actually use TornadoVM for my own project. I've tried adding the maven dependencies in my pom.xml which didn't work (error:
Could not find artifact tornado:tornado-api:jar:0.09 in universityOfManchester-graal (https://raw.githubusercontent.com/beehive-lab/tornado/maven-tornadovm
) so I ended up adding the jar dependencies manually from the TornadoVM folder (TornadoVM\tornado-api\target\tornado-api-0.10-dev-bf7b95b.jar and TornadoVM\matrices\target\tornado-matrices-0.10-dev-bf7b95b.jar).This seems to work but I have no idea where to go from here... I saw online that we could use annotations like @parallel or use "Dynamic Reconfiguration" with
ts.execute(Policy.PERFORMANCE);
but I feel like I'm just copy and pasting some code without really understanding what I'm doing. Also I don't understand why I had to install all this GraalVM stuff if I just need to import a jar in my project... How can I be sure my program is actually running in the TornadoVM environnement?All that to say. Is there any "Hello World" type of tutorial that exists for newbies that allows using TornadoVM in a standard Java project? Is there any API type of documentation that explains your libs, the classes, the methods and what they are for? I mean, all I got is a few code sample and an annotation. There must be something I've missed! If you could give me some pointers or links to some additional documentation that would be great.
I hope you can help me move forward in my quest,
Thanks in advance!
Beta Was this translation helpful? Give feedback.
All reactions