ArrayFire est une bibliothèque de tenseur à usage général qui simplifie le processus de développement logiciel pour les architectures parallèles trouvées dans les processeurs, les GPU et d'autres dispositifs d'accélération matérielle. La bibliothèque sert les utilisateurs sur chaque marché informatique technique.
Plusieurs des avantages de ArrayFire comprennent:
ArrayFire fournit aux développeurs de logiciels une abstraction de haut niveau des données qui résident sur l'accélérateur, l'objet af::array . Les développeurs écrivent du code qui effectue des opérations sur les baies de feu de calcul, qui, à leur tour, sont automatiquement traduites en noyaux presque optimaux qui s'exécutent sur le dispositif de calcul.
ArrayFire fonctionne sur des appareils allant des téléphones mobiles basse puissance aux superordinateurs compatibles avec GPU de haute puissance. ArrayFire fonctionne sur des processeurs de tous les principaux fournisseurs (Intel, AMD, ARM), GPU des fabricants de premier plan (AMD, Intel, Nvidia et Qualcomm), ainsi qu'une variété d'autres appareils d'accélérateur sur Windows, Mac et Linux.
Les instructions d'installation ou de création de feuilles de Source peuvent être trouvées sur le wiki.
Visitez la page Wikipedia pour une description du jeu de vie 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
}Le code source complet peut être trouvé ici.

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 );Le code source complet peut être trouvé ici.
Pour plus d'exemples de code, visitez les examples/ répertoire.
Vous pouvez trouver la documentation complète ici.
Liens rapides:
ArrayFire a plusieurs API linguistiques entretenues et communautaires:
† †
† La communauté a maintenu les emballages
Emballages en cours
La communauté des développeurs ArrayFire vous invite à construire avec nous si vous êtes intéressé et en mesure d'écrire des fonctions tensineuses les plus performantes. Ensemble, nous pouvons remplir la mission ArrayFire pour un calcul scientifique rapide pour tous.
Les contributions de toute nature sont les bienvenues! Veuillez vous référer au Wiki et à notre code de conduite pour en savoir plus sur la façon dont vous pouvez vous impliquer dans la communauté ArrayFire par le biais de parrainage, de promoteurs de développeurs ou de gouvernance.
Si vous redistribuez ArrayFire, veuillez suivre les conditions établies dans la licence. Si vous souhaitez citer ArrayFire dans une publication académique, veuillez utiliser le document de citation suivant.
ArrayFire Development est financé par AcceleReyes LLC et plusieurs tiers, veuillez consulter la liste des remerciements pour l'expression de notre gratitude.
La marque littérale "ArrayFire" et les logos ArrayFire sont des marques d'Acecereyes LLC (DBA ArrayFire). Si vous souhaitez utiliser l'une de ces marques dans votre propre projet, veuillez consulter la politique de marque ArrayFire