合并 cuda 数据帧和距离计算时内存不足

问题描述

我正在尝试 RAPIDS cudf 和 cuspatial,想知道交叉连接两个导致 270 亿行的数据帧的更好方法是什么?

我有两个数据集 - 一个来自纽约市出租车行程数据(1470 万行),其中包含上车地点的经度/纬度。另一个数据集包含 1.8k 地铁站的经度/纬度。对于每次旅行,我想与所有站点位置交叉连接,然后计算所有排列的 haversine 距离。

我认为 cudf 不允许交叉连接,所以我在两个数据集中创建了一个新列 key

cutaxi['key'] = 0
cumetro['key'] = 0
cutaxi_metro = cutaxi.merge(cumetro,on = 'key',how = 'outer')
cutaxi_metro[hdist_km] = cuspatial.haversine_distance(cutaxi_metro[EntranceLongitude],cutaxi_metro[EntranceLatitude],cutaxi_metro[taxi_pickup],cutaxi_metro[taxi_dropoff])

我在 Nvidia V100 和 4 个虚拟 cpu 上运行代码,但我仍然遇到内存不足问题。我猜我需要分批处理合并,但不确定如何处理!任何建议表示赞赏!

MemoryError: std::bad_alloc: CUDA error at: ../include/rmm/mr/device/cuda_memory_resource.hpp:68: cudaErrorMemoryAllocation out of memory

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)