문제

FFTW (FFT 라이브러리)의 스레드 버전을 사용하여 듀얼 CPU 머신의 일부 코드를 가속화하려고합니다. 다음은 1 스레드만으로 시간의 출력입니다.

131.838u 1.979s 2:13.91 99.9%

여기에는 2 개의 스레드가 있습니다.

166.261u 30.392s 1:52.67 174.5%

사용자 시간과 CPU로드 백분율은 그것이 효과적으로 실행되고 있음을 나타냅니다. 그러나 WallClock 시간 (내가 정말로 신경 쓰는 것)은 나에게 스레드를 다루는 데 약 28 초가 걸린다고 말합니다. . 상황을 설명하는 정확한 방법입니까? 그렇다면 상당히 정상입니까, 아니면 잘못 구성된 것이 잘못 되었습니까? 빛에 감사드립니다.

도움이 되었습니까?

해결책

나는 FFTW를 공정한 금액을 사용했는데, 두 개 이상의 프로세서에 가지 않으면 단일 스레드 버전을 사용하는 것이 거의 항상 더 깨끗한 솔루션이라는 것을 알았습니다. 스레드 간 커뮤니케이션이 적거나 적어도 내 경험 이었기 때문에 더 빠릅니다.

체크 아웃해야 할 몇 가지 사항 :

  1. 당신은 당신의 지혜를 올바르게 구성하고 그것을 사용하고 있습니까? 일단 창조 된 지혜는 당신의 변형이 훨씬 빨리 운영 될 것입니다. 당신이 그것을 사용하지 않는다면, 당신은해야합니다.
  2. 하나의 스레드 또는 두 가지에서 도서관을 호출하고 있습니까? 그것은 항상 내 문제 였고, 여러 스레드 호출을 라이브러리에 고통하게 고통스러워했습니다.
  3. 당신의 변화는 얼마나 큰가요? 처음에는 작은 것을 시도하고, 그것이 어떻게 진행되는지, 그리고 확장을하기 위해 노력하고 있습니까?
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top