gpt4 book ai didi

r - 尚不支持 mclapply 长向量

转载 作者:行者123 更新时间:2023-12-04 02:02:13 25 4
gpt4 key购买 nike

我正在尝试运行一些 R 代码,它由于内存而崩溃。我得到的错误是:

Error in sendMaster(try(lapply(X = S, FUN = FUN, ...), silent = TRUE)) : 
long vectors not supported yet: memory.c:3100

造成麻烦的函数如下:
StationUserX <- function(userNDX){
lat1 = deg2rad(geolocation$latitude[userNDX])
long1 = deg2rad(geolocation$longitude[userNDX])
session_user_id = as.character(geolocation$session_user_id[userNDX])
#Find closest station
Distance2Stations <- unlist(lapply(stationNDXs, Distance2StationX, lat1, long1))
# Return index for closest station and distance to closest station
stations_userX = data.frame(session_user_id = session_user_id,
station = ghcndstations$ID[stationNDXs],
Distance2Station = Distance2Stations)
stations_userX = stations_userX[with(stations_userX, order(Distance2Station)), ]
stations_userX = stations_userX[1:100,] #only the 100 closest stations...
row.names(stations_userX)<-NULL
return(stations_userX)
}

我使用 mclapply 运行这个函数 50k 次。 StationUserX 正在调用 Distance2StationX 90k 次。

有没有明显的方法来优化功能 StationUserX ?

最佳答案

mclapply无法将所有数据从工作线程发送回主线程。这是因为预调度,每个线程运行大量迭代,然后将所有数据同步回来。这很好而且很快,但会导致发送回 > 2GB 的数据,这是它无法做到的。

运行 mclapplymc.preschedule=F关闭预调度。现在,每次迭代都会产生自己的线程并返回自己的数据。它不会那么快,但它解决了问题。

关于r - 尚不支持 mclapply 长向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23231183/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com