2012-03-15 9 views
0

글쎄 내 문제는 다음과 같습니다. 몇 가지 가상 컴퓨터에서 실행되는 코드 조각이 있으며 각 가상 컴퓨터에는 N 개의 인터페이스 (각 스레드마다)가 있습니다. 문제 자체가 하나의 인터페이스에서 메시지를 받고 다른 인터페이스를 통해 가장 빠른 방식으로 리디렉션됩니다.C++ 복수 기계를 사용한 멀티 스레딩

하나의 인터페이스 (유니 캐스트)에서 메시지를 받으면 리다이렉트 할 인터페이스를 계산하고 메시지에 대한 모든 정보를 저장합니다 (데이터 그램 및 원하는 모든 추가 정보) 내가 만든 함수로. 다음 반복에서 프로그램은 리다이렉션 할 새 메시지가 있는지 그리고 올바른 인터페이스를 읽고 있는지 확인합니다. 그리고 계속해서 ... 그러나 이것은 프로그램 교환 정보를 매우 천천히 만듭니다 ...

사물을 빠르게 할 수있는 메커니즘이 있습니까?

+3

"닫기 결합"클러스터에서 작업하지 않는 한 멀티 스레딩이란 여기에서 "멀티 프로세싱"또는 "프로세스 간 IO"를 의미합니다. – dmckee

+0

이것은 매우 모호하고 개방적입니다. 현재 수행중인 작업, 얻은 성능 수치 및 측정 방법 등을 보여주는 샘플 코드를 게시 할 수 있습니까? – Useless

+0

@dmckee일지도 모르겠다 ... 나는 이것에 대해 처음이야. 그리고 그것은 내가 브리핑을받은 내용이다. ... –

답변

3

누군가가 이미 특정 바퀴를 발명했다 -이

MPI

라고 하나 openMPI 또는

+0

답장을 보내 주셔서 감사합니다 !!! 나는 그것을 체크하고 내가 모든 요구 사항을 채울 수 있는지 알아볼 것이다 !!! 다시 한 번 감사드립니다 –

1

왜 대기 사용하지 않는 MPICH에서보세요? 메시지가 들어 오면 대기열에 넣고 각 처리 모듈에 대기열에서 가져 오도록 알립니다. 예를 들어 :

  • MSG는
  • 모듈 1에서 제공 큐에 넣는다
  • 모듈 2,3 큐에서
  • 모듈 2 픽 그것을 통지하고, 데이터베이스에 저장된 얻을
  • 병렬로, 모듈 3은 대기열에서 그것을 집어 처리합니다.

키는 "병렬"입니다. 이 모듈은 다른 스레드이므로 모듈 2는 db에 저장되지만 모듈 3은 메시지를 완화 할 수 있습니다.

JMS 또는 MQ를 사용하거나 고유 한 대기열을 만들 수 있습니다.

+0

정보 주셔서 감사합니다! 나는 MPI에 대해 이야기 할 것이고, 모든 것을 관리 할 수 ​​없다면 Queuing 메커니즘을 도입하려고 노력할 것이다. –

1

마치 가상 머신이라도 여러 대의 "머신"에 병렬 컴퓨팅을 시도하는 것처럼 들립니다. 이 도메인을 처리하기 위해 MPI - Message Passing Interface과 같은 기존 프로토콜을 살펴볼 수 있습니다.이 유형의 시나리오에서 도움이되는 몇 가지 기능이 있으므로

+0

정보를 제공해 주셔서 감사합니다 !!! MPI로 모든 것을 관리 할 수 ​​있는지 알게 될 것입니다 !!! –