arrayfire-js, 用于 node.js的ArrayFire.js ArrayFire

分享于 

8分钟阅读

GitHub

  繁體 雙語
ArrayFire.js - ArrayFire for Node.js
  • 源代码名称:arrayfire-js
  • 源代码网址:http://www.github.com/arrayfire/arrayfire-js
  • arrayfire-js源代码文档
  • arrayfire-js源代码下载
  • Git URL:
    git://www.github.com/arrayfire/arrayfire-js.git
    Git Clone代码到本地:
    git clone http://www.github.com/arrayfire/arrayfire-js
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/arrayfire/arrayfire-js
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
    通知:

    从 0.16.0开始,这个 MODULE 已经从 arrayfire_js 重命名为 arrayfire-js。 旧的arrayfire_js MODULE 将在npm上提供一段时间。

    ArrayFire.js

    请关注以下问题:跟踪发布 1.0.0版的进度。

    关于 ArrayFire

    "ArrayFire是一个具有 easy-to-use API的并行计算高性能软件库。 它的基于 array的函数集使得并行程序更易于访问。

    你可以阅读它的introduction int文档页面的索引。 它基本上是一个支持CPU和GPU后端的数学加速器 C++ 库,Windows。Linux和 Mac。 这只是。 用它编写最复杂的数学。统计。逻辑计算。图像转换和计算机视觉algorigthms非常简单,只需几行代码就可以完成。 它具有优良的批处理能力,使用简单的操作,从而在GPU设备上运行一次。

    关于 ArrayFire.js

    ArrayFire.js 是ArrayFire的node.js 绑定,它使用 CMake.js 作为它的构建系统。 它需要 node.js的失效水平和混合ArrayFire级别的性能和简单性。 V8计算性能相比,你将在熟悉的JavaScript中获得类似于x100+的类似于的性能级别。

    要求

    安装

    安装ArrayFire安装目录的位置之前,必须配置 CMake.js. 有两个选项:

    使用config配置

    当前用户的

    
    npm config set cmake_af_path"path_to_arrayfire_installation_directory"
    
    
    
    

    所有用户的( 全局)

    
    npm config set cmake_af_path"path_to_arrayfire_installation_directory" --global
    
    
    
    

    2.设置AF_PATH环境变量

    
    AF_PATH="path_to_arrayfire_installation_directory"
    
    
    
    

    在 Windows 上,安装程序为你做这个,所以在这个平台上没有什么可以做的,尽管。

    上面 只能完成一次。 你可以从npm安装 ArrayFire.js:

    
    npm install arrayfire-js --save
    
    
    
    

    用法

    // CPUvar af =require("arrayfire-js")("CPU");// OpenCLvar af =require("arrayfire-js")("OpenCL");// CUDAvar af =require("arrayfire-js")("CUDA");

    示例

    计算引脚

    来自 ArrayFire文档的PI计算器端口:

    C++

    // sample 40 million points on the GPUarray x = randu(20e6), y = randu(20e6);
    array dist = sqrt(x * x + y * y);// pi is ratio of how many fell in the unit circlefloat num_inside = sum<float>(dist <1);float pi = 4.0 * num_inside/20e6;af_print(pi);

    Javascript

    注意:注意:内存中阻塞或者可能阻塞的一切都应该是异步的,因此建议调用 ArrayFire.js 函数的异步变量,但也有支持REPL方案的同步对应程序。 ( 我建议使用 ES6生成器,而不是回调地狱,甚至不是盲目的承诺)。

    constnumberOfPoints=20000000;//.. .let x =af.randu(numberOfPoints, af.dtype.f32);let y =af.randu(numberOfPoints, af.dtype.f32);let dist =af.sqrt(x.mul(x).add(y.mul(y)));let numInside =yieldaf.sumAsync(dist.lt(1));let piVal = (4.0* numInside) / numberOfPoints;console.log(`PI = ${piVal}`);

    它包含在示例文件夹中。 运行:

    • io。js,输入:iojs examples/es6/bechmarks/pi.js
    • Node.js 0.12或者 上面,输入: node --harmony examples/es6/bechmarks/pi.js
    • Node.js below 0.12,输入: node examples/es5/bechmarks/pi.js

    神经网络

    有一个神经网络的例子,批反传播训练学习著名的 MNIST数据集。 它将在最快的设备上运行。

    它位于示例文件夹中。 运行:

    • io。js,输入: iojs examples/es6/machine-learning/neuralNetwork.js
    • Node.js 0.12或者 上面,输入: node --harmony examples/es6/machine-learning/neuralNetwork.js
    • Node.js below 0.12,输入: node examples/es5/machine-learning/neuralNetwork.js

    Linux Mint x64,i5 3570,Radeon R9的性能:

    • CPU平台:0.8秒/新纪元
    • 面向CPU的OpenCL平台:1.0秒/新纪元
    • 基于GPU的OpenCL平台: 0.28 秒/新纪元

    API文档

    http://arrayfire.github.io/arrayfire-js

    希望贡献?

    欢迎使用 ,但请先阅读贡献指南。

    许可证

    
    Copyright (c) 2014-2015, ArrayFire
    
    
    Copyright (c) 2015 Gábor Mező aka unbornchikken (gabor.mezo@outlook.com)
    
    
    All rights reserved.
    
    
    
    Redistribution and use in source and binary forms, with or without modification,
    
    
    are permitted provided that the following conditions are met:
    
    
    
     * Redistributions of source code must retain the 上面 copyright notice, this
    
    
     list of conditions and the following disclaimer.
    
    
    
     * Redistributions in binary form must reproduce the 上面 copyright notice, this
    
    
     list of conditions and the following disclaimer in the documentation and/or
    
    
     other materials provided with the distribution.
    
    
    
     * Neither the name of the ArrayFire nor the names of its
    
    
     contributors may be used to endorse or promote products derived from
    
    
     this software without specific prior written permission.
    
    
    
    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS"AS IS" AND
    
    
    ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
    
    
    WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
    
    
    DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
    
    
    ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
    
    
    (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
    
    
    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
    
    
    ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
    
    
    (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
    
    
    SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
    
    
    
    

    ARR  array  arrayfire  
    相关文章