A Arrayfire é uma biblioteca de tensores de uso geral que simplifica o processo de desenvolvimento de software para as arquiteturas paralelas encontradas nas CPUs, GPUs e outros dispositivos de aceleração de hardware. A biblioteca atende aos usuários em todos os mercados de computação técnica.
Vários benefícios do Arrayfire incluem:
A Arrayfire fornece aos desenvolvedores de software uma abstração de dados de alto nível que reside no acelerador, o objeto af::array . Os desenvolvedores escrevem código que executa operações nas matrizes Arrayfire, que, por sua vez, são traduzidas automaticamente em kernels quase ideais que executam no dispositivo computacional.
A Arrayfire é executada em dispositivos que variam de telefones celulares de baixa potência a supercomputadores habilitados para GPU de alta potência. A Arrayfire é executada em CPUs de todos os principais fornecedores (Intel, AMD, ARM), GPUs dos fabricantes de destaque (AMD, Intel, Nvidia e Qualcomm), bem como uma variedade de outros dispositivos aceleradoras no Windows, Mac e Linux.
As instruções para instalar ou criar o ArrayFire a partir da fonte podem ser encontradas no wiki.
Visite a página da Wikipedia para obter uma descrição do jogo de vida de Conway.

static const float h_kernel[] = { 1 , 1 , 1 , 1 , 0 , 1 , 1 , 1 , 1 };
static const array kernel ( 3 , 3 , h_kernel, afHost);
array state = (randu( 128 , 128 , f32) > 0.5 ).as(f32); // Init state
Window myWindow ( 256 , 256 );
while (!myWindow.close()) {
array nHood = convolve (state, kernel); // Obtain neighbors
array C0 = (nHood == 2 ); // Generate conditions for life
array C1 = (nHood == 3 );
state = state * C0 + C1; // Update state
myWindow. image (state); // Display
}O código -fonte completo pode ser encontrado aqui.

array predict ( const array &X, const array &W) {
return sigmoid ( matmul (X, W));
}
array train ( const array &X, const array &Y,
double alpha = 0.1 , double maxerr = 0.05 ,
int maxiter = 1000 , bool verbose = false ) {
array Weights = constant ( 0 , X. dims ( 1 ), Y. dims ( 1 ));
for ( int i = 0 ; i < maxiter; i++) {
array P = predict (X, Weights);
array err = Y - P;
if (mean< float >( abs (err) < maxerr) break ;
Weights += alpha * matmulTN (X, err);
}
return Weights;
}
...
array Weights = train(train_feats, train_targets);
array test_outputs = predict(test_feats, Weights);
display_results< true >(test_images, test_outputs,
test_targets, 20 );O código -fonte completo pode ser encontrado aqui.
Para mais exemplos de código, visite os examples/ diretório.
Você pode encontrar a documentação completa aqui.
Links rápidos:
A Arrayfire tem várias APIs oficiais e comunitárias mantidas em linguagem:
† †
† Comunidade manteve invólucros
Invólucros em andamento
A comunidade de desenvolvedores da Arrayfire convida você a construir conosco se estiver interessado e capaz de escrever funções tensoras de melhor desempenho. Juntos, podemos cumprir a missão Arrayfire para computação científica rápida para todos.
As contribuições de qualquer tipo são bem -vindas! Consulte o Wiki e nosso Código de Conduta para saber mais sobre como você pode se envolver com a comunidade Arrayfire por meio de patrocínio, comprometimento ou governança.
Se você redistribuir o ArrayFire, siga os termos estabelecidos na licença. Se você deseja citar a Arrayfire em uma publicação acadêmica, use o seguinte documento de citação.
O desenvolvimento do ArrayFire é financiado pela AcceleReyes LLC e por vários terceiros, consulte a lista de agradecimentos para obter uma expressão de nossa gratidão.
A marca literal "Arrayfire" e os logotipos da Arrayfire são marcas comerciais da Accelereyes LLC (DBA Arrayfire). Se você deseja usar qualquer uma dessas marcas em seu próprio projeto, consulte a política de marca registrada da Arrayfire