Создать 2d массив из деления двух 1d-массивов в arrayfire - PullRequest
0 голосов
/ 03 марта 2020

У меня есть два 1d-массива в arrayfire, x и y. Я хотел бы разделить их друг на друга и создать 2d-массив из результата, то есть, как показано в следующем коде:

#include <arrayfire>

int main(void){

    const size_t x_len = 1024, y_len = 2048;
    af::array x(x_len, f64), y(y_len, f64);
    //Fill x, y with y \neq 0
    //Now either
    af::array xy(x_len, y_len, f64); //Gives a 2d-array
    for(size_t i = 0; i < x.dims(0); ++i)
        for(size_t j = 0; j < y.dims(0); ++j)
            xy(i, j) = x(i) / y(j);
    //or
    af::array xy = x / y; //Gives a 1d-array

    return 0;
}

Первый подход дает мне целевой 2d-массив, последний Подход не (и приведет к cra sh, если x_len != y_len. Я мог бы использовать описанный выше подход, но я предполагаю, что он будет значительно медленнее, чем специализированные команды.
Следовательно, есть ли такие команды в arrayfire, или я должен использовать циклы?

1 Ответ

1 голос
/ 03 марта 2020
af::array xy = matmulNT(x, 1/y);
...