문제

나는 Matlab 유전자 알고리즘을 C ++로 변환하기 위해 일부 친구들과 협력하고 있으며 현재 순차적으로 작동합니다. MATLAB은 더 이상 현재 코드의 일부가 아닙니다.

우리는 클러스터에서 그것을 사용하려고하지만 자원은 약간 건조했습니다. 우리는 대학에서 클러스터를 사용할 수 있으며 암석과 OpenMPI가 장착되어 있지만 실제로 작업을 시작해야 할 곳은 확실하지 않습니다.

현재 데이터가 포함 된 2D 및 3D 배열 설정이 있으며 시스템이 크로스 오버 또는 모델간에 교환 할 때 2D 및 3D 배열의 일부를 교체하려고합니다. 여러 노드에서 이러한 구조를 분리하는 몇 가지 좋은 방법은 무엇입니까?

도움이 되었습니까?

해결책

매트릭스 계산을 수행하는 경우 계산 자체에 따라 계산 자체에 크게 의존합니다.

골럽과 밴 대출 책인 "매트릭스 계산, 3 판"을 강력히 추천합니다. 그것에는 병렬 계산에 전념하는 전체 장이 있습니다 (6 장).

OpenMPI는이 문제에 사용하기에 좋은 미들웨어입니다. C ++ 에서이 작업을 수행하므로 Zeromq를 살펴볼 수도 있습니다. 두 사람은 의미론이 다르며, 하나는 문제 공간이나 스킬 셋을 다른 것보다 더 선호 할 수 있습니다.

또한 병렬 매트릭스 계산 (일반적으로 신호 처리이지만 다른 응용 프로그램이 많이 있음)은 매우 활발한 연구 영역이라는 것을 알아야합니다.

다른 팁

체력 계산 :

일반적으로 체력을 계산하기 위해 한 개인에 대해 알아야하므로 개인을 각 핵심으로 배제하여 인구를 통해 일할 수 있습니다. 개인의 체력이 계산되었을 때, 그 핵심은 새로운 개인을 손에 넣으십시오.

크로스 오버 :

분열 및 정복 접근 방식은이 문제에 적합 할 수 있습니다. 배열을 각 CPU 코어에서 처리하는 블록으로 나누고 다차원 공간을 적절하게 이동할 수 있도록 글로벌 크로스 오버 단계 (쌍의 서브 세트를 결합)를 추가 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top