2013-05-01 2 views
1

현재 계산 집약적 인 시뮬레이션을 일부 실행하고 있지만 완료하는 데 오랜 시간이 걸립니다. 이미 프로세서에서 사용 가능한 모든 물리적 코어에 작업 부하를 분산 시켰습니다. 내가 궁금해하는 점은 워크로드를 더 분할하여 다른 컴퓨터에 할당하는 방법에 관한 것입니다. 저는 제온 (Xeon) 서버 몇 개를 사들이고 번호 계산을 위해 사용하고 있습니다.숫자 계산에 여러 대의 컴퓨터 사용

내가 가진 하나의 큰 문제는 나는 현재 내가 지속적으로 작은 변화를 만들고있어 두 가지 방법이 있기 때문에 비주얼 스튜디오 (Ctrl 키F5) 내에서 프로그램을 실행 해요 있다는 것입니다.

작업 부하를 다른 컴퓨터에 할당하는 방법/VS로 프로그램을 실행할 수있는 경우/실행하고 싶을 때마다 * .exe를 만들어야하는 경우에 대한 제안 사항이 있습니까?

답변

1

문제가 무엇인지에 달려 있습니다.

SETI @ Home과 같이 쉽게 병렬화 할 수 있으면 map/reduce와 Hadoop을 사용할 수 있습니다.

선형 대수학과 같이 MPI와 같은 것을 사용할 수 있습니다.

+0

나는 쉽게 병렬화 할 수 있다고 믿습니다. 작업 부하는 개별 블록으로 분할 될 수 있습니다. 누군가 WCF를 제안했지만 그 후에도 * .exe를 만들 필요가있는 문제가 여전히 있다고 생각합니다. 실행하기 전에 각 서버에 설치하십시오. 이 두 가지 방법으로 변경해야 할 모든 사항은 새로운 * .exe가 필요하고 서버에 다시 설치해야합니다. (이것은 내가 잘못 생각한 것임을 가정합니다.) –

+1

Hadoop과 HDInsight를 살펴 봅니다 : http://cloud.dzone.com/articles/hdinsight-writing-hadoop-map – duffymo

+0

아쉽게도 링크를 이용해 주셔서 감사합니다! –

0

"이 큰 문제는 내가 현재 Visual Studio (Ctrl F5)에서 프로그램을 실행하고 있는데 작은 변화를주기위한 두 가지 방법이 있기 때문입니다." ?

배포하는 경우 작업을 수행 할 때 모든 노드의 코드를 수정할 여유가 없어서 배포하기에 대해 생각하기 때문에 "큰 문제"입니까? 이 경우에는 노드가 작업의 작은 부분을 차지할 수있는 방식으로 알 고 또는 데이터를 분할하는 방법을 이미 알고 있다고 가정합니다.

만약 내가 잘못 이해했다면 - 죄송합니다. 오해가 생겨서 - 당신이 변화하는 부분에 따라 간단하고 정교한 형태로 인코딩 된 파일이나 데이터베이스에 "지속적으로 작은 변화"를하는 부분을 외부화하십시오. 노드를 계속 변경하지 않아도됩니다. 모든 노드에 코드를 배포하고 다양한 비트가 포함 된 DB 또는 파일에 연결하고 새로운 페라리를 즐기십시오!

+0

나는 보통 시뮬레이션을 시작합니다. 일반적으로 몇 시간이 지나면 마치 몇 가지 방법을 수정 한 다음 다시 실행합니다. 또는 때로는 ive가 망쳐 버린 것을 깨닫고, 멈추고, 빠르게 변경하고, 다시 실행합니다. –

0

WMI service을 사용하면 원격 컴퓨터에서 프로세스를 시작할 수 있습니다. 원격 컴퓨터에서 볼 수있는 공유 디렉터리에 EXE를 만든 다음 원격 컴퓨터에서 WMI를 사용하여 EXE를 시작합니다.

strComputer = "acomputer" 
strCommandLine = "calc.exe" 

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") 
Set objProcess = objWMIService.Get("Win32_Process") 

intReturnValue = objProcess.Create(strCommandLine, , , intPID) 
WScript.Echo "Process ID: " & intPID 

또한 처리 할 수 ​​PsExec from SysInternals를 사용할 수 있습니다

이 작업을 수행하려면,하지만 설명하기 위해 거기 예제의 많음이있다, 어떤 인증 합병증을지지 않습니다 간단한 방법은 .VBS 스크립트 파일을 사용하는 것입니다 이 작품을 만드는 모든 세부 사항.

Visual Studio에서 exe를 빌드 한 후 로컬 시스템에서 실행하여 원하는 작업을 수행 한 다음 원격 시스템에서 실행할 준비가되면 다음과 유사한 일괄 처리 스크립트를 실행할 수 있습니다. VBS 위의 원격 시스템에서 exe를 시작합니다.

작업 부하를 나눌 수있는 메커니즘을 제공해야 각 클라이언트가 문제의 어떤 부분을 알고 있는지 알 수 있습니다.이 정보는 원격 응용 프로그램을 시작하는 데 사용되는 명령 줄, exe가있는 디렉토리의 구성 파일, 데이터베이스 테이블 또는 클라이언트가 다시 연결하는 별도의 명령 및 제어 유형 서버를 사용하는 데 사용할 수 있습니다 (이러한 접근 방식을 사용하면 곧 자신 만의 솔루션을 사용하는 대신 기존 솔루션을 사용하는 방법을 익히는 것이 더 나을 것입니다.

일종의 원격 '킬 스위치'를 포함 할 수도 있습니다. PsKill from SysInternals을 사용할 수도 있고보다 정상적인 종료를 원할 경우 exe와 동일한 디렉토리에 특정 파일이있는 것과 같은 단순한 기능을 원격 프로세스가 스스로 종료 할 수있는 플래그로 사용할 수 있습니다.

CSScript 지원을 클라이언트에 추가하여 원격 클라이언트 프로그램이 정적이고 작업을 수행하기 위해 CSScript 파일을로드 및 컴파일 할 수 있습니다. 클라이언트 프로그램을 자주 다시 배포하고 다시 시작하는 데 어려움을 겪거나 모든 프로그램을 약간 다르게해야하는 경우 유용 할 수 있습니다. 예를 들어 각 클라이언트에 대해 별도의 스크립트 파일을 생성하는 프로그램을 작성할 수 있습니다.

관련 문제