отправлять разные данные на разные узлы, используя пакет snow в r - PullRequest
0 голосов
/ 26 марта 2020

Чего я хочу добиться, это разделить мой набор данных на n чанков, где n - количество доступных процессоров, и отправить каждый чанк на другой узел. Таким образом, узел 1 получит блок 1, узел 2 получит блок 2, ..., а узел n получит блок n.

Раньше я обычно отправлял весь набор данных каждому узлу и подмножество данных только на каждом узле, но так как мой набор данных стал больше, я не могу себе этого позволить, поскольку использование clusterExport приведет к появлению следующего сообщения об ошибке:

Error in serialize(data, node$con) : error writing to connection

Я пробовал так много разных версий моей функции вместе с clusterApply или clusterCall, но ни одна из них не работала так, как будто они имели данные (разделенные как список с элементами n) поскольку аргумент функции в вызове clusterApply не сильно отличается от отправки данных узлам, и похоже, что R все еще отправляет копии для выполнения функции, что приводит к аналогичной ошибке.

Кроме того, я попытался разделить данные на главном устройстве (т. Е. Data_1, ..., data_n были созданы) и попытался прочитать каждую часть на одном узле без отправки всех данных, используя:

data_dist <- function(data){
             node_data <<- eval(as.name(data))                           
             }

clusterApply(cluster, str_c("data", 1:ncores, sep = "_"), data_dist)

но все же данные недоступны для узлов. Любая помощь будет принята с благодарностью.

...