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的商标政策