0

저는 이미지 프로세싱 작업을하고 있습니다. Intel (R) Core (TM) i7 -3770 CPU @ 3.40 GHz, RAM 4 GB 구성의 컴퓨터가 있습니다. PCT의 SPMD 명령을 사용하여 이미지 처리 알고리즘 코드를 병렬 처리하기를 원합니다. 이를 위해 수직으로 8 분할 된 이미지를 다른 실험실로 보내고 SPMD 명령을 사용하여 다른 실험실의 다른 부분에 병렬로 이미지 처리 알고리즘을 실행했습니다.코어 i7 프로세서에서 MATLAB의 Parallel Computing Toolbox를 사용하여 속도를 크게 높이려면 어떻게해야합니까?

나는 순차적 코드에서 올바른 대답을 얻었다. 그러나 이것은 순차적 코드보다 많은 시간이 걸립니다. 나는 이것을 가장 큰 이미지에서 가장 작은 이미지로 시도했지만 중요한 결과를 얻지 못했습니다.

어떻게 SPMD 명령을 사용하여 속도를 향상시킬 수 있습니까?

+1

많은 Matlab의 기능은 즉시 사용할 수있는 멀티 스레드입니다. 당신이 사용하고있는 것들이 있는지 모르겠지만, 당신이 그들을 테스트하고 자신을 찾으십시오. 대형 이미지 처리 기능을 끄고 컴퓨터의 성능 모니터가 어떻게 켜지는지 확인하십시오. –

+0

@HighPerformanceMark에 동의합니다 - 많은 Image Processing Toolbox 기능은 이미 멀티 스레드이며, 멀티 스레딩은 데이터를 전송할 필요가 없기 때문에 'SPMD'에서 사용되는 다중 프로세스 접근 방식보다 성능이 향상되는 경우가 많습니다. – Edric

답변

1

코드를 제공하지 않으므로 일반적인 대답을 고수해야합니다. 모든 병렬 컴퓨팅에는 몇 가지 설계 고려 사항이 있습니다. 가장 중요한 두 가지 사항은 코드를 병렬로 실행할 수 있는지, 둘째로 얼마나 많은 통신 오버 헤드를 생성하는지입니다.

호출하는 작업자는 정보를 앞뒤로 보내는 것을 의미하므로 병렬 컴퓨팅에서 최적의 방법이 있습니다. 작업자에게 충분한 작업을 제공하여 작업자와주고받는 통신이 병렬 컴퓨팅에서 얻는 속도보다 짧은 시간을 필요로하는지 확인하십시오.

마지막으로 중요한 것은 작업 코드 예제를 제공하면 커뮤니티가 훨씬 더 잘 도와 줄 수 있다는 것입니다. 당신은 이미지 내 여러 블록에 동일한 작업을 적용 할 경우보다는 같은 spmd 등의 구조에 대해

0

걱정, 당신은 단지 명령 blockproc을 적용하고 trueUseParallel 옵션을 설정할 수 있습니다. 그것은 당신이 아무것도 할 필요없이 당신을 위해 모든 것을 병렬 처리합니다.

그게 효과가없고 실제로 spmd을 사용하여 알고리즘을 구현해야한다는 요구 사항이 있으면 시도한 것을 나타내고 잘못된 부분을 나타내는 코드를 게시해야합니다.