이 질문에 대한 대답은 특정 OpenCL 구현 및 하드웨어에 따라 다르지만 Mac 응용 프로그램에서 사용하기 위해 다음에 sincos
및 native_cos
중에서 선택해야합니다.OpenCL : sincos vs native_cos 및 native_sin
더 빠를 것으로 예상되는 것은 어느 것입니까?
이 질문에 대한 대답은 특정 OpenCL 구현 및 하드웨어에 따라 다르지만 Mac 응용 프로그램에서 사용하기 위해 다음에 sincos
및 native_cos
중에서 선택해야합니다.OpenCL : sincos vs native_cos 및 native_sin
더 빠를 것으로 예상되는 것은 어느 것입니까?
모든 초월 함수 버전을 테스트하는 미니 벤치 마크를 추가하고 벤치 마크 결과와 함께 커널 문자열을 적절하게 변경 (예 : native_
에서 cos
까지) 할 수 있습니다. 이벤트 기반 프로파일 링이 필요하고 이식성에 적합해야합니다. 그런 다음 N 회 반복마다 한 번씩, 마지막 벤치에서 오류가 발생하면 다시 벤치마킹하고 약간 변경 될 수 있습니다.
첫 번째 기능에는 네이티브를 사용하지만 두 번째 버전에는 네이티브를 사용하지 않고 첫 번째 버전에서는 네이티브를 사용하고 다른 버전에서는 대체적으로 네임을 사용하고 벤치마킹 모두를 사용하는 등의 기능을 벤치마킹하여 기능 순서가 중요한 파이프 라인 아키텍처에서 코드를 잘 작성하십시오.
항상 기본 속도가 빠릅니다. 그들은 1 : 1을 HW 명령어에 매핑합니다. 일반적으로 GPU의 경우 이것은 cos/sin 버텍스 명령어입니다. 정밀도는 구현 정의됩니다. 보통의 sincos는 속도에 비례하여 더 좋은 정확도를가집니다 (시스템에 따라 다름) – DarkZeros
단지 약간의 수정과 2 센트의 가치가 있습니다 : native_ * 함수는 1 : 1을 하드웨어 지침에 매핑 할 필요가 없습니다 (250 페이지 참조). OpenCL 1.2 표준). 구현에 따라 비 기본 버전보다 적은 수의 명령어로 매핑되므로 더 빨라질 수 있습니다. 이것은 또한 입력 값의 범위에 따라 달라집니다. 예를 들어 Nvidia의 sin, cos 및 sincos 구현은 일부 값 아래의 입력에 대한 빠른 경로와 그 값보다 큰 입력에 대한 느린 경로를 갖습니다. 따라서 native_sin을 사용할 때의 속도 향상은 입력 값에 따라 달라질 수 있습니다. – chippies
네이티브 함수는 특수 파이프 라인 (가산기/곱셈기보다 적은 수)을 사용합니까, 아니면 모든 파이프 라인을 사용하지만 결과를 얻기 위해 하드웨어 라이브러리를 예약합니까? –