내가 뭘하려는거야 : EBImage를 사용하여 이미지 스택을 열고 처리 한 다음 처리 된 이미지를 새 파일로 저장합니다. 나는 이것을 "doParallel"과 "foreach"패키지를 사용하여 병렬로 시도하고있다.병렬로 R 이미지 파일 열기
문제 :이 오류에 대한 모든 정보를 얻을하는 방법을 모른다
Error in unserialize(node$con) : error reading from connection
Calls: <Anonymous> ... doTryCatch -> recvData -> recvData.SOCKnode -> unserialize
Execution halted
: 내가 작업에 대해 둘 이상의 프로세서 코어를 사용하는 모든 시간을, R은 오류를 반환합니다. 동일한 스크립트를 사용하지만 하나의 프로세서 코어 만 사용하려고해도 아무런 문제가 없습니다.
샘플 스크립트 :
library(EBImage)
library(foreach)
library(doParallel)
nCores = 1
registerDoParallel(makeCluster(nCores))
img_stack_ids = c("A", "B", "C", "D")
foreach(i = 1:384, .packages = c("EBImage")) %dopar% {
imgs = tryCatch(readImage(sprintf("/INPUT_IMGS/%s_%s, i, img_stack_ids)),
error = function(e) array(0, dim = c(0,0,0)))
img_processed = processingFunction(img_list)
writeImage(img_processed, sprintf("/OUTPUT_IMGS/%s", i))
}
코드는 작동 nCores 1 사이의 무엇이든 가능한 코어의 최대 수는없는 경우 nCores = 1, 그것은 그렇게되면.
나는이에 실행하려는 시스템은 그래서 그것은 문제가 이미지와 할 수없는 CentOS는 개별 근로자 파일 ID를 기반으로 고유 한 파일에 액세스되어야한다 7.
실행 36 개 코어 가상 머신이다 리눅스가 같은 디렉토리에 동시에 읽고 쓰는 문제가 없다면, 파일 잠금 또는 동시 읽기가 필요합니다.
저는 솔직히 해결 방법과 솔루션에 만족합니다.
감사합니다.
내 세션 정보 : R 버전 3.3.1 (2016년 6월 21일) 플랫폼 : x86_64에-사과 darwin13.4.0 (64 비트) 에서 실행 : OS X 10.11.6 (엘 캐피 탄)
locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
attached base packages:
[1] parallel stats graphics grDevices utils datasets methods
base
other attached packages:
[1] doParallel_1.0.10 iterators_1.0.8 foreach_1.4.3
ZProjection_0.99.0 EBImage_4.16.0
loaded via a namespace (and not attached):
[1] locfit_1.5-9.1 lattice_0.20-34 codetools_0.2-15
png_0.1-7 fftwtools_0.9-7 tiff_0.1-5
grid_3.3.1 tools_3.3.1 jpeg_0.1-8
abind_1.4-5
[11] rsconnect_0.5 BiocGenerics_0.20.0