Questão:
Que implementações de matriz eficientes existem para Java
demongolem
2014-02-05 07:50:11 UTC
view on stackexchange narkive permalink

De vez em quando, preciso de uma biblioteca que possa realizar a multiplicação de matrizes para mim. Acho que usei EJML mais recentemente, mas esse não é necessariamente o pacote mais fácil de usar quando estou trabalhando com vetores de recursos. Ter um bom pacote pode significar a diferença nas horas de espera para que seus cálculos sejam concluídos. Então, quais são os pacotes mais eficientes que existem? Existem bons benchmarks para apoiar tais afirmações feitas por vários pacotes que possam existir?

Dois respostas:
#1
+6
demongolem
2014-02-12 08:58:15 UTC
view on stackexchange narkive permalink

Bem, deixe-me responder, já que essa pergunta é um pouco tranquila. No site EJML, encontrei este gráfico:

enter image description here

Portanto, de acordo com isso, EJML é melhor em geral usando código Java puro para matrizes menores e MTJ é melhor para grandes tamanhos matrizes. Mais uma vez, tive que ter cuidado com o relatório de um dos candidatos, mas isso dá algumas dicas sobre os diferentes pacotes disponíveis.

Esse é o tipo de resposta que me faz pensar que este site poderia realmente funcionar
#2
+1
damienfrancois
2014-02-05 13:12:27 UTC
view on stackexchange narkive permalink

JBLAS é o equivalente da biblioteca BLAS padrão C / FORTRAN e é muito rápido. Ele vem com binários pré-compilados e usa o hardware da forma mais eficiente possível, mudando a implementação dependendo do tipo de hardware.

Outra alternativa é JAMA.

Eu irei votar a favor de você, no entanto, eu estava procurando mais detalhes sobre o que os torna eficientes / quão eficientes eles são comparados uns com os outros.
O que quer dizer C / Fortran standard blas? Você quer dizer NetBlas? (Qual IIRC existe apenas como um referene e é construído em torno de loops e é lento.) Você quer dizer Atlas que é compilado para seu próprio sistema? Você quer dizer o OpenBlas altamente otimizado? Você quer dizer que ele procura qual biblioteca BLAS você tem instalado e fornece um invólucro em torno dele? Não há BLAS padrão C.
Refiro-me à definição original da API netBLAS.


Estas perguntas e respostas foram traduzidas automaticamente do idioma inglês.O conteúdo original está disponível em stackexchange, que agradecemos pela licença cc by-sa 3.0 sob a qual é distribuído.
Loading...