簡體   English   中英

蘇門答臘項目在其他JVM語言中的應用

[英]Application of Project Sumatra to other JVM languages

我剛剛發現了Project Sumatra ,旨在將JVM引入顯卡。 從他們的網頁,這包括Java的自定義編譯器(稱為Rootbeer )。

這是一個好消息,但是,如果這意味着蘇門答臘項目也適用於其他JVM語言,我想聽聽對項目內部有更多了解的人的意見? 是否有可能直接從Scala或Clojure發出Aparapi電話? 或者您是否必須在Java中開發一些核心功能,然后通過其他JVM語言訪問它?

我剛才遇到過這個問題。 抱歉這么久。 完全披露我是Aparapi的發明者/蘇門答臘的牽頭和贊助商。

與Aparapi不同,Sumatra具有從JVM內部的Java方法的IR(中間表示)開始工作的優勢。 這意味着最終它將根據在此抽象級別找到的模式檢測GPU卸載的機會。 Aparapi不得不從字節碼逆向工程機會。

蘇門答臘可能最初會關閉用戶提示,而不是嘗試自動並行化代碼。 目前主要關注的是Java 8的新“lambda”功能及其配套的“流API”。 所以Aparapi要求用戶從內核基類繼承。 Sumatr a可能會使用以下建議的“顯式”並行性提示: -

。IntRange.range(1024).parallel()的forEach(GID - > {出[GID] = A [GID] + B [GID];});

雖然對於明顯的情況,如

for(int id = 0; i <1024; i ++){out [gid] = a [gid] + b [gid]; }

應該完全可以卸載這個循環。 因此,對其他基於JVM的語言的支持將取決於我們尋找自動並行化機會的雄心壯志。 我懷疑來自其他語言(JavaScript(Nashorn),JRuby,Scala,JPython等)的許多模式都是可檢測的。

AFAIK Rootbeer(一個大學項目)和Aparapi(一個基於AMD的項目)是無關的,所以你可能在這里錯過了一些東西。

關於Aparapi本身,它在其Wiki中聲明它不能與Scale / Closure等一起使用,或者實際上除了純Java以外的任何東西,因為它依賴於JDK的javac用來正確分析字節碼的模式。 它還要求您擴展其內核類,以便能夠將字節碼轉換為OpenCL並在GPU中執行它。 所以看起來你會使用其中一個。

回到你的問題:基於這一切,你必須用Java開發並從其他JVM語言中調用它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM