Получение ошибки сегмента от конструктора Simple arrayfire

Я получаю ошибку сегментации от вызова простого конструктора 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;
}

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.

3

Другие решения

Других решений пока нет …