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