2012-12-10 9 views
2

현재 vDSP 프레임 워크의 일부 기능, 특히 vDSP_conv를 사용하고 있는데 함수가 스칼라 모드를 호출하는지 SIMD에서 처리되는지 확인하는 방법이 있는지 궁금합니다. 네온 프로세서에.
기능의 documentation에는 충족되어야하는 power-pc-architecture에 대한 몇 가지 기준 또는 스칼라 모드가 호출됩니다. 지금 나는이 기준이 iphone에도 적용되는지, 또는 내 기능이 스칼라 모드를 호출하는지 또는 네온에서 제대로 실행되는지를 확인하는 방법을 모른다.vDSP 함수가 네온에서 스칼라 또는 SIMD를 실행하는지 확인하는 방법

확인할 방법이 있습니까?
감사합니다.

+0

생성 된 어셈블리를보고 NEON 명령어를 찾을 수 있습니까? –

+1

@BradLarson : vDSP 호출은 컴파일러에서 인라인으로 확장되지 않으므로 해당 명령어가 생성 된 어셈블리에 표시되지 않습니다. 해당하는 동적 시스템 라이브러리를 디스 어셈블 할 수 있지만 코드가 NEON 코드로 분기되는 경우가 있고 경우에 따라 코드가 분기되기 때문에 특히 다른 프로세서 모델의 여러 사례에 관심이있는 경우 실행을 추적하기가 어려울 수 있습니다. –

+0

@EricPostpischil - 맞아, 잊어 버렸어. 해명 해줘서 고마워. –

답변

8

NEON 코드는 vDSP_conv 구현에 사용됩니다. 어떤 경우에는 사용되지만 다른 경우에는 사용되지 않습니다.

우리는 (vDSP를 생성하는 벡터 및 수치 그룹) 복잡한 인자가 많기 때문에 NEON을 사용하는 함수에 대한 게시 기준이 아닙니다. 각 호출에 대한 세부 정보 (스트라이드, 길이 및 여러 매개 변수의 정렬), 코드가 실행되는 프로세서 모델 및 소프트웨어 버전이 포함됩니다.

특정 사례에 대해 궁금한 점이 있으면 조사 할 수 있습니다.

호기심을 묻거나 성능이 예상 한 바가 아닙니까? 일반적으로 근본적인 관심사는 구현이 얼마나 빨리 수행되는지, 더 나은지 여부입니다. SIMD는 그 중 일부에 대한 프록시 일 수 있지만 실제 목표는 아닙니다.

아래 코멘트 해결하기 위해 업데이트 :

최근 iOS 용 소스 코드를 조사를 그것은 상관을 수행하는 NEON하는 프로세서에서 실행과에 모든 진보를 설정할 때 SIMD 코드를 얻기 위해 필요한 모든 것 같습니다 그러나 코드는 주소가 정렬되어있는 경우 정렬 힌트를 사용하도록 특수화되어 있으므로 신호, 필터 및 출력 주소가 16 바이트의 배수가되도록 정렬하면 특정 프로세서 모델에서 더 나은 성능을 얻을 수 있습니다. 가능한 경우 필터 요소 수에 8의 배수를 사용하십시오. 그러나 4의 배수도 좋습니다.

불행히도 코드는 O (n • log (n))가 아닙니다. FFT 구현이 아닌 직접 산술 연산을 사용하므로 O (n)입니다. 일반적으로 직접 산술 연산이 적합한 짧은 길이를 위해 설계되었습니다. 상관 관계에 대한 FFT 알고리즘이 도움이 될 경우 https://bugreport.apple.com에 기능 요청을 제출하십시오.

사용 된 알고리즘에 관계없이 동일한 길이의 정보를 원하지 않으면 길이가 짧아지는 것이 좋습니다. 왜냐하면 짧은 길이를 처리하는 경우 동일한 정보를 얻기 위해 다양한 조합으로 더 많은 정보를 처리해야하기 때문입니다. 상관 관계가 필요한 정보를 생성 할 수 있도록 필 요한 길이를 파악한 다음, 세분화하지 않고 그 길이를 사용하는 것이 좋습니다.

+0

나는 연속적으로 상관 관계가있는 두 개의 무한한 신호를 가지고 있으므로 각 블록의 길이를 자유롭게 선택할 수있다. 물론 상관 관계가 n log (n) (오른쪽?)이므로 각 블록의 길이가 짧을수록 성능이 향상됩니다.하지만 나는 매개 변수 내가 심즈 처리를위한 스위트를 선택하거나 그들이하지 않는 경우 및 스칼라 처리됩니다 궁금 해서요. 나는 함수가 주어진 매개 변수에 대해 항상 최상을 수행하지만 어떤 기준을 충족하고 "sweetspot"를 칠 때 더 잘 수행 할 수 있습니까? powerpc 아키텍처에 대한 문서의 기준과 비슷하지만 일반적으로 그렇습니다. –

+0

@ MaximilianKörner : 귀하의 질문에 답변을 드릴 수 있도록 답변을 업데이트했습니다. –