并行計算的高性能軟件庫:ArrayFire
ArrayFire是一個用于并行計算的高性能軟件庫,擁有易于使用的API。其基于陣列的功能設置,使并行編程簡單。
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>
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!