Я хочу использовать стрелку apache, потому что она позволяет механизмам выполнения использовать преимущества последних операций SIMD (Single input multiple data), включенных в современные процессоры, для собственной векторизованной оптимизации аналитической обработки данных. (https://arrow.apache.org/).
Из документации (https://arrow.apache.org/docs/memory_layout.html ), Я так понимаю, что при распределении памяти необходимо выравнивать 64 байта.
Чтобы проверить это 64-байтовое выравнивание, я использую элемент данных __array_interface__ массива numpy, который указывает на область данных, в которой хранится содержимое массива, и вычисляю на нем по модулю 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))
Спасибо за помощь.