2011-03-03 3 views
43

컴퓨터 클러스터를 사용하여 Python 프로그램을 실행하는 데 관심이 있습니다. 과거에는 파이썬 MPI 인터페이스를 사용했지만 컴파일/설치에 어려움이 있었기 때문에 파이썬의 multiprocessing 모듈과 같은 기본 제공 모듈을 사용하는 솔루션을 선호했습니다.클러스터 컴퓨팅을위한 다중 처리 모듈 사용

전체 컴퓨터 클러스터에 걸쳐 적용되는 multiprocessing.Pool 인스턴스를 설정하고 Pool.map(...)을 실행하면됩니다. 가능하거나 쉽게 할 수있는 것입니까?

이것이 불가능할 경우 적어도 각 노드의 매개 변수가 다른 중앙 스크립트의 모든 노드에서 Process 인스턴스를 시작할 수 있기를 바랍니다.

+2

아마도 JUG를 시도해보십시오. http://packages.python.org/Jug/ – unutbu

답변

35

클러스터 컴퓨팅의 경우 분산 메모리 시스템 (SMP가 아닌 여러 노드)을 의미하는 경우 Python의 다중 처리가 적합한 선택이 아닐 수 있습니다. 여러 프로세스를 생성 할 수 있지만 여전히 단일 노드 내에 바인딩됩니다.

당신이 필요로하는 것은 여러 노드의 프로세스 스폰 (spawing)를 처리하고 프로세서 간의 통신을위한 메커니즘을 제공하는 프레임 워크입니다. (MPI가하는 일).

클러스터 컴퓨팅에 도움이 될 프레임 워크 목록은 Parallel Processing on the Python wiki 페이지를 참조하십시오. 나는 그들 중과 경험을 (내가 주로 MPI를 사용)이 없기 때문에 내가 개인적으로 신뢰도를 보장 할 수는 없지만 목록에서

, pp, jug, pyrocelery은 현명한 선택처럼 보인다.

쉬운 설치/사용이 중요한 경우, 나는 jug을 탐색하여 시작할 것입니다. easy to install, supports common batch cluster systems이며 well documented으로 보입니다.

+12

나는 용기를 썼다. 모듈을 잘 지원한다고 덧붙일 것입니다. 전혀 버그를 발견하면 매우 빨리 수정됩니다 (일반적으로 <24 시간). – luispedro

+2

파이썬 다중 처리 관리자는 시스템 내에서뿐만 아니라 여러 시스템간에 대화 할 수 있습니다. 참조 : http://eli.thegreenplace.net/2012/01/24/distributed-computing-in-python-with-multiprocessing/ – MattK

11

과거에는 꽤 성공적으로 이것을 수행하기 위해 Pyro을 사용했습니다. 모바일 코드를 켜면 노드가 이미 가지고 있지 않은 필수 모듈을 자동으로 전송합니다. 꽤 멋진.

+0

정말 멋지다. –

관련 문제