c++ - 从简单的 arrayfire 构造函数中获取段错误

标签 c++ 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;
}

最佳答案

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/

相关文章:

C++如何显示小数部分的确切数字

c++ - QTextDocument(和 QTextEdit)没有更新它们的大小?

opencv - 为什么OpenCV擅长处理大尺度图像的ORB和Harris Keypoints检测?

arrayfire - 在ArrayFire中实现卷积神经网络反向传播(梯度计算)

c++ - 使用重复索引更改索引数组中的 ArrayFire 数组

c++ - 为什么要为具有非平凡析构函数的类声明 constrexpr 构造函数(例如 unique_ptr、std::variant)

android - 无法使用 nfc_initiator_transceive_bytes() 通过 libnfc 发​​送大型 APDU 命令

c++ - 使用纯属性注释 const 成员函数

c# - 将af::array转换为af_array并返回

complex-numbers - 在 ArrayFire 中创建虚数单位