通过调用简单的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是ArrayFire中的C-API函数。理想情况下,用户无需直接调用这些功能。

您需要调用的是af::randu()。因此,您致电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的开发人员。

关于c++ - 从简单arrayfire构造函数获取段错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39801733/

10-13 06:50