ArrayFire是一個通用張量庫,簡化了CPU,GPU和其他硬件加速器設備中的並行體系結構的軟件開發過程。該圖書館在每個技術計算市場中為用戶提供服務。
Arrayfire的幾個好處包括:
ArrayFire為軟件開發人員提供了駐留在加速器af::array對像上的數據的高級抽象。開發人員編寫在Arrayfire數組上執行操作的代碼,而該代碼又自動轉化為在計算設備上執行的近乎最佳內核。
Arrayfire在從低功耗手機到高功率GPU超級計算機的設備上運行。 Arrayfire在所有主要供應商(Intel,AMD,ARM),著名製造商(AMD,Intel,Nvidia和Qualcomm)的CPU上運行,以及Windows,Mac和Linux上的其他各種加速器設備。
可以在Wiki上找到安裝或從源構建Arrayfire的說明。
訪問Wikipedia頁面,以描述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
}完整的源代碼可以在此處找到。

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 );完整的源代碼可以在此處找到。
有關更多代碼示例,請訪問examples/目錄。
您可以在此處找到完整的文檔。
快速鏈接:
Arrayfire有幾個官方和社區維護語言API:
††
†社區維持包裝紙
過程內包裝紙
如果您有興趣並能夠編寫表現最佳的張量功能,則Arrayfire開發人員社區邀請您與我們一起建造。我們可以共同完成所有人的陣列大火任務,以實現所有人的快速科學計算。
歡迎任何形式的貢獻!請參考Wiki和我們的行為準則,以了解有關如何通過贊助,開發人員提交或治理參與Arrayfire社區的更多信息。
如果您重新分配了Arrayfire,請遵循許可證中規定的條款。如果您想在學術出版物中引用Arrayfire,請使用以下引用文檔。
Arrayfire開發由Accelereyes LLC和幾個第三方資助,請參閱確認我們的感激之情列表。
字面的標記“ Arrayfire”和Arrayfire Logos是Accelereyes LLC(DBA Arrayfire)的商標。如果您想在自己的項目中使用這些標記中的任何一個,請諮詢Arrayfire的商標政策