Я получаю ошибку сегментации от вызова простого конструктора arrayfire.
#include <arrayfire.h>
int main(){
af_array a;
int N = 10;
dim_t dims = 10;
af_randu(&a, N, &dims, f32);
af::array b(a);
return 0;
}
af_randu
является функцией C-API в ArrayFire В идеале пользователям не нужно напрямую вызывать эти функции.
Вам нужно позвонить аф :: Randu (). Итак, ваш призыв к Ранду будет:
af:array b = af::randu(N, f32);
Ниже просто для ответа на заданный вопрос, C-API для af_randu
AFAPI af_err af_randu(af_array *out,
const unsigned ndims,
const dim_t *const dims,
const af_dtype type
)
Итак, второй аргумент ndims
(количество измерений), которое в вашем случае равно 1. Следовательно, ваш вызов af_randu:
af_randu(&a, 1, &dims, f32);
Если бы вы делали матрицу, скажем, 10х10, то вы бы сделали
dim_t dims[] = {10, 10}
af_randu(&a, 2, dims, f32);
Полное раскрытие: я разработчик для ArrayFire.
Других решений пока нет …