并行計算的高性能軟件庫:ArrayFire

jopen 10年前發布 | 37K 次閱讀 ArrayFire C/C++開發

ArrayFire是一個用于并行計算的高性能軟件庫,擁有易于使用的API。其基于陣列的功能設置,使并行編程簡單。
qq截圖20141113225049.png
ArrayFire的多個后端(CUDA,OpenCL和本地CPU),使其獨立于平臺和高便攜性。

在ArrayFire幾行代碼就可以取代數十個并行計算代碼行,為您節省寶貴的時間和降低開發成本。

示例:

#include <arrayfire.h>

include <cstdio>

using namespace af;

int main(int argc, char *argv[]) { try {

    // Select a device and display arrayfire info
    int device = argc > 1 ? atoi(argv[1]) : 0;
    af::setDevice(device);
    af::info();

    printf("Create a 5-by-3 matrix of random floats on the GPU\n");
    array A = randu(5,3, f32);
    af_print(A);

    printf("Element-wise arithmetic\n");
    array B = sin(A) + 1.5;
    af_print(B);

    printf("Negate the first three elements of second column\n");
    B(seq(0, 2), 1) = B(seq(0, 2), 1) * -1;
    af_print(B);

    printf("Fourier transform the result\n");
    array C = fft(B);
    af_print(C);

    printf("Grab last row\n");
    array c = C.row(end);
    af_print(c);

    printf("Create 2-by-3 matrix from host data\n");
    float d[] = { 1, 2, 3, 4, 5, 6 };
    array D(2, 3, d, af::afHost);
    af_print(D);

    printf("Copy last column onto first\n");
    D.col(0) = D.col(end);
    af_print(D);

    // Sort A
    printf("Sort A and print sorted array and corresponding indices\n");
    array vals, inds;
    sort(vals, inds, A);
    af_print(vals);
    af_print(inds);

} catch (af::exception& e) {
    fprintf(stderr, "%s\n", e.what());
    throw;
}

}</pre>

項目主頁:http://www.baiduhome.net/lib/view/home/1415890274039

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!