我想使用 apache arrow,因为它使执行引擎能够利用现代处理器中包含的最新 SIMD(单输入多数据)操作,用于分析数据处理的本机矢量化优化。(https://arrow.apache.org/)。
从文档(https://arrow.apache.org/docs/memory_layout.html)中,我了解到内存分配确保大约 64 字节对齐。
为了验证这 64 字节对齐,我使用 numpy 数组的 __array_interface__ 数据成员,该数组指向存储数组内容的数据区域,并在其上计算模 64。如果结果为 0,则内存地址至少对齐 64 字节。
当我执行下面的代码时,在我的系统(Fedora)上它似乎工作(模 64 的结果为零)但是当我在同事的系统(Fedora 也是)上执行相同的代码时它不起作用:模的结果64 不是零。所以内存没有在 64 字节上对齐。
请在这里找到我的代码:
import pyarrow as pa
tab=pa.array([[1, 2], [3, 4]])
panda_array=tab.to_pandas()
print('numpy address {} modulo 64 => {}'.format(panda_array.__array_interface__['data'][0], panda_array.__array_interface__['data'][0]%64))
感谢您的帮助。