ArrayFire-это библиотека тензоров общего назначения, которая упрощает процесс разработки программного обеспечения для параллельных архитектур, найденных в процессорах, графических процессорах и других аппаратных устройствах ускорения. Библиотека обслуживает пользователей на каждом рынке технических вычислений.
Несколько преимуществ Arrayfire включают в себя:
ArrayFire предоставляет разработчикам программного обеспечения высокоуровневую абстракцию данных, которые находятся на акселераторе, объекте af::array . Разработчики пишут код, который выполняет операции на массивах ArrayFire, которые, в свою очередь, автоматически переводятся в почти оптимальные ядра, которые выполняются на вычислительном устройстве.
Arrayfire работает на устройствах, от суперкомпьютеров с поддержкой с поддержкой графических процессоров. Arrayfire работает на процессорах от всех основных поставщиков (Intel, AMD, ARM), GPU от выдающихся производителей (AMD, Intel, Nvidia и Qualcomm), а также множество других устройств ускорителя на Windows, Mac и Linux.
Инструкции по установке или созданию Arrayfire из источника можно найти на вики.
Посетите страницу в Википедии, чтобы получить описание жизни 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 приглашают вас построить с нами, если вы заинтересованы и можете написать максимальные тензорные функции. Вместе мы можем выполнить миссию Arrayfire для быстрых научных вычислений для всех.
Взносы любого рода приветствуются! Пожалуйста, обратитесь к вики и нашему кодексу поведения, чтобы узнать больше о том, как вы можете принять участие в сообществе Arrayfire посредством спонсорства, разработчиков или управления.
Если вы перераспределите ArrayFire, пожалуйста, следуйте условиям, установленным в лицензии. Если вы хотите процитировать Arrayfire в академической публикации, используйте следующий документ цитирования.
Development Development финансируется Accelereyes LLC и несколькими третьими лицами, пожалуйста, смотрите список подтверждений для выражения нашей благодарности.
Литеральная отметка «Arrayfire» и логотипы Arrayfire являются товарными знаками Accelereyes LLC (DBA Arrayfire). Если вы хотите использовать любую из этих отметок в своем собственном проекте, обратитесь к политике товарного знака Arrayfire в области товарного знака Arrayfire