"Aparapi is an API for expressing data parallel workloads in Java and running those workloads on a compatible GPU if possible. Where your workload actually ends up running depends on
* whether you have the ATI Stream SDK installed
* whether you have a compatible GPU
* whether your Java parallel code avoids any constructs that would make it untranslatable to OpenCL?. These restrictions are detailed in the Aparapi Readme file.
If your code and your target platform meet all of the above, Aparapi will translate your workload to OpenCL? and will run your workload on the GPU. Otherwise, your same code will still run as a parallel workload using a Java Thread Pool and will be able to take advantage of multiple cpu cores if you have them."
orra… isso é muito legal… gostei de verdade… torço para que outras fabricantes de placa de video façam o mesmo… ai fica show… imaginem se a intel e a nvidia fazem o mesmo… ai acho que alcançaria a maioria do mercado…
agora não muito off uma especulação: seria isso para fazer uns jogos específicos pra quem tem placa deles? è um mercado interessante…
As restrições para rodar Java são bem grandes - leia o arquivo readme - basicamente, você só usa o Java para fazer contas com vetores unidimensionais.
Isso não serve para jogos; serve, por exemplo, para você rodar algoritmos bem complexos na GPU.
Um exemplo de algoritmo complexo que pode usar a capacidade de uma GPU é achar a estrutura espacial de uma proteína, como o folding@home.
[quote=entanglement]1) As restrições para rodar Java são bem grandes - leia o arquivo readme - basicamente, você só usa o Java para fazer contas com vetores unidimensionais.
Isso não serve para jogos; serve, por exemplo, para você rodar algoritmos bem complexos na GPU.
Um exemplo de algoritmo complexo que pode usar a capacidade de uma GPU é achar a estrutura espacial de uma proteína, como o folding@home.
Vetor com uma dimensão só? Os processadores mmx já possuem instruções que te permitem somar duas matrizes há anos.
Vou ler lá…
No texto diz que são apenas tipos primitivos, e isso já é suficiente para jogos. O que você não pode usar são objetos, ou seja a gpu só é usada para cálculos, e é para isso mesmo que ela foi feita.
É uma iniciativa muito boa mesmo. Se as empresas de placas aceleradoras adotarem isso é possível até trocar c++ por java. Pois as engines java usam opengl ou direct3d( então usam c++).
Essa api permite a gpu rodar bytecode, que nem celulares com uma jme, ou seja é quase uma jrm(Java real machine).
Basicamente o que a ferramenta faz é:
a) Pegar um .class
b) Checar se os bytecodes do .class atendem às restrições estipuladas no documento
c) Converter os bytecodes em código específico para a GPU.
Não é que a GPU tenha um “Interpretador de Bytecodes”. Longe disso; isso quer dizer apenas que fica bem mais simples programar para a GPU.