2017-01-20 4 views
1

나는 거기에 내가 다른 초기 지점에서 최적화 알고리즘 (fmincon)의 약 1,000 별도의 실행을 실행해야 matlab에,에 다소 지저분한 우도 함수를 최적화하고 32 개의 무료 매개 변수와 같은 것입니다.병렬 최적화 : 그라데이션 또는 루프

유감스럽게도 최적화 알고리즘의 실행 횟수를 개로 동시에 병렬 계산할 수는 없습니다. 나는 하나를 골라야한다.

바깥 쪽 루프를 병렬 처리하고 각 최적화를 자체 코어에서 실행하거나 유한 차분 그래디언트 계산을 계산하는 것이 더 효율적인지 아는 사람이 있습니까?

감사합니다.

+1

귀하의 상황에 해당되는지는 잘 모르겠지만 'gpuarray'를 사용할 수 있는지 확인하십시오. 알고있는 한 CUDA 코어가있는 Nvidia GPU가있는 경우에만 작동하지만 1000 코어 이상 사용할 수 있습니다. 특정 프로그램을 더 빠르게 만들지는 못하지만 시도해 볼만한 가치가 있습니다. – maxb

+0

감사! 나는 그것을 조사 할 것이다. 실제로 새로운 비디오 카드를위한 시장에서 지금. 나는 이것을 명심해야한다. – hipHopMetropolisHastings

답변

2

코드 나 하드웨어에 대해 알지 못해도 정확하게 대답 할 수 없습니다.

코어가 32 개 이상인 경우 그 중 일부는 병렬 그라디언트 계산 중 아무 작업도 수행하지 않습니다. 이 경우 1000 개의 시뮬레이션을 병렬로 실행하는 것이 더 빠를 수도 있습니다.

한편, 그래디언트를 병렬로 계산하면 CPU가 캐시를 더 효율적으로 사용할 수있어 캐시 미스가 줄어들 수 있습니다. Why does the order of the loops affect performance when iterating over a 2D array? 또는 What is “cache-friendly” code?을보실 수 있습니다.

+0

고마워요! 25 개의 코어가 있습니다. 나는 궁극적으로 어떤 테스트를해야하지만, 내가 아는 것보다 더 많은 지식이 있다고 생각했다. 나는 그 링크들을 조사 할 것이다. – hipHopMetropolisHastings