NEON 코드는 vDSP_conv 구현에 사용됩니다. 어떤 경우에는 사용되지만 다른 경우에는 사용되지 않습니다.
우리는 (vDSP를 생성하는 벡터 및 수치 그룹) 복잡한 인자가 많기 때문에 NEON을 사용하는 함수에 대한 게시 기준이 아닙니다. 각 호출에 대한 세부 정보 (스트라이드, 길이 및 여러 매개 변수의 정렬), 코드가 실행되는 프로세서 모델 및 소프트웨어 버전이 포함됩니다.
특정 사례에 대해 궁금한 점이 있으면 조사 할 수 있습니다.
호기심을 묻거나 성능이 예상 한 바가 아닙니까? 일반적으로 근본적인 관심사는 구현이 얼마나 빨리 수행되는지, 더 나은지 여부입니다. SIMD는 그 중 일부에 대한 프록시 일 수 있지만 실제 목표는 아닙니다.
아래 코멘트 해결하기 위해 업데이트 :
최근 iOS 용 소스 코드를 조사를 그것은 상관을 수행하는 NEON하는 프로세서에서 실행과에 모든 진보를 설정할 때 SIMD 코드를 얻기 위해 필요한 모든 것 같습니다 그러나 코드는 주소가 정렬되어있는 경우 정렬 힌트를 사용하도록 특수화되어 있으므로 신호, 필터 및 출력 주소가 16 바이트의 배수가되도록 정렬하면 특정 프로세서 모델에서 더 나은 성능을 얻을 수 있습니다. 가능한 경우 필터 요소 수에 8의 배수를 사용하십시오. 그러나 4의 배수도 좋습니다.
불행히도 코드는 O (n • log (n))가 아닙니다. FFT 구현이 아닌 직접 산술 연산을 사용하므로 O (n)입니다. 일반적으로 직접 산술 연산이 적합한 짧은 길이를 위해 설계되었습니다. 상관 관계에 대한 FFT 알고리즘이 도움이 될 경우 https://bugreport.apple.com에 기능 요청을 제출하십시오.
사용 된 알고리즘에 관계없이 동일한 길이의 정보를 원하지 않으면 길이가 짧아지는 것이 좋습니다. 왜냐하면 짧은 길이를 처리하는 경우 동일한 정보를 얻기 위해 다양한 조합으로 더 많은 정보를 처리해야하기 때문입니다. 상관 관계가 필요한 정보를 생성 할 수 있도록 필 요한 길이를 파악한 다음, 세분화하지 않고 그 길이를 사용하는 것이 좋습니다.
생성 된 어셈블리를보고 NEON 명령어를 찾을 수 있습니까? –
@BradLarson : vDSP 호출은 컴파일러에서 인라인으로 확장되지 않으므로 해당 명령어가 생성 된 어셈블리에 표시되지 않습니다. 해당하는 동적 시스템 라이브러리를 디스 어셈블 할 수 있지만 코드가 NEON 코드로 분기되는 경우가 있고 경우에 따라 코드가 분기되기 때문에 특히 다른 프로세서 모델의 여러 사례에 관심이있는 경우 실행을 추적하기가 어려울 수 있습니다. –
@EricPostpischil - 맞아, 잊어 버렸어. 해명 해줘서 고마워. –