C++ 通过host()从af::array检索数据会导致错误的数据
当试图通过C++ 通过host()从af::array检索数据会导致错误的数据,c++,arrayfire,C++,Arrayfire,当试图通过host()从设备的af::array()检索数据时,主机上的输出数据错误(即错误值)。为了测试这一点,我编写了一个小代码示例(基于): 为什么指针中有一半的值设置为0.007813,而不是所有的值都设置为1?将测试数组中的的默认值更改为2时,一半的值设置为2,而3的值设置为32。为什么会发生这种情况?arrayfire和C之间的数据类型冲突 对于浮子使用: af::array in_test_array = af::constant(1., vector_size),
host()
从设备的af::array
()检索数据时,主机上的输出数据错误(即错误值)。为了测试这一点,我编写了一个小代码示例(基于):
为什么指针中有一半的值设置为
0.007813
,而不是所有的值都设置为1
?将测试数组中的的默认值更改为2
时,一半的值设置为2
,而3
的值设置为32
。为什么会发生这种情况?arrayfire和C之间的数据类型冲突
对于浮子使用:
af::array in_test_array = af::constant(1., vector_size),
out_test_array = af::constant(0., vector_size);
float *local_data_ptr = new float[vector_size]();
双重用途:
af::array in_test_array = af::constant(1., vector_size, f64),
out_test_array = af::constant(0., vector_size, f64)
double *local_data_ptr = new double[vector_size]();
在上述两种情况下,您将看到arrayfire将在本地_data_ptr缓冲区中返回1.0,尽管数据类型不同
af::array in_test_array = af::constant(1., vector_size),
out_test_array = af::constant(0., vector_size);
float *local_data_ptr = new float[vector_size]();
af::array in_test_array = af::constant(1., vector_size, f64),
out_test_array = af::constant(0., vector_size, f64)
double *local_data_ptr = new double[vector_size]();