0

通过调用简单的 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;
}
4

1 回答 1

2

af_randu是 ArrayFire 中的 C-API 函数。理想情况下,用户无需直接调用这些函数。

您需要调用的是af::randu()。所以你给兰杜的电话是:

af:array b = af::randu(N, f32);

以下只是回答所提出的问题,af_randu 的 C-API 是

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);

如果你正在做一个让我们说 10x10 的矩阵,那么你会做

dim_t dims[] = {10, 10}
af_randu(&a, 2, dims, f32);

全面披露:我是 ArrayFire 的开发人员。

于 2016-10-01T11:55:12.217 回答