Program Tip

OpenCL과 OpenGL의 컴퓨 트 셰이더의 차이점은 무엇입니까?

programtip 2021. 1. 8. 22:13
반응형

OpenCL과 OpenGL의 컴퓨 트 셰이더의 차이점은 무엇입니까?


OpenCL이 GPU의 메모리 아키텍처를 제어하므로 더 나은 최적화가 가능하다는 것을 알고 있지만,이를 제쳐두고 벡터 연산 (더하기, 곱하기, 반전 등)에 Compute Shader를 사용할 수 있습니까?


다른 OpenGL 셰이더 유형과 달리 컴퓨 트 셰이더는 컴퓨터 그래픽과 직접 관련이 없으며 CUDA 및 OpenCL과 유사한 기본 하드웨어의 훨씬 더 직접적인 추상화를 제공합니다. 사용자 정의 가능한 작업 그룹 크기, 공유 메모리, 그룹 내 동기화 및 CUDA 및 OpenCL에서 알려지고 사랑받는 모든 것을 제공합니다.

주요 차이점은 기본적으로 다음과 같습니다.

  • OpenCL C 대신 GLSL을 사용합니다. 이러한 프로그래밍 언어간에 큰 차이는 없지만 고급 텍스처 유형 (예 : 큐브 맵 배열), 고급과 같이 OpenCL에서 사용할 수없는 모든 그래픽 관련 GLSL 기능을 사용할 수 있습니다. 필터링 (예 : 밉 매핑, 좋습니다. 아마도 밉 수준을 직접 계산해야 할 것입니다), 그리고 4x4 행렬이나 기하학적 함수와 같은 약간의 편리한 것.
  • 다른 GLSL 셰이더와 마찬가지로 OpenGL 셰이더 프로그램입니다. 즉, OpenGL 데이터 (예 : 버퍼, 텍스처, 이미지)에 액세스하는 것은 사소한 일이지만 OpenGL과 OpenCL / CUDA 간의 인터페이스는 사용자 측의 수동 동기화 작업으로 지루할 수 있습니다. 같은 방식으로 기존 OpenGL 워크 플로에 통합하는 것도 사소한 반면, OpenCL을 설정하는 것은 기존 그래픽 파이프 라인에 통합하는 것은 말할 것도없고 그 자체로 책입니다.

따라서 이것이 내려지는 것은 다른 셰이더의 그래픽 접근 방식과 달리 GPU 프로그래밍에 대한 일반적인 (OpenCL / CUDA 유사) 컴퓨팅 접근 방식을 보여 주지만 컴퓨팅 셰이더는 실제로 기존 OpenGL 응용 프로그램 내에서 사용하기위한 것입니다. OpenCL / CUDA의 컴퓨팅 유연성이 없었던 스테이지 (물론 다른 장점도 제공). 따라서 컴퓨팅 작업을 수행하는 것은 일반 컴퓨팅 용이 아닌 다른 셰이더 단계로 압축하거나 동기화해야하는 추가 컴퓨팅 프레임 워크를 도입하는 것보다 더 유연하고 직접적이며 쉽습니다.

컴퓨팅 셰이더는 하드웨어 리소스에 대한 동일한 유연성과 제어 및 동일한 프로그래밍 접근 방식으로 OpenCL로 달성 할 수있는 거의 모든 작업을 수행 할 수 있어야합니다. 따라서 수행하려는 작업에 적합한 GPU에 적합한 알고리즘 (CUDA 또는 OpenCL과 잘 작동 함)이있는 경우 예, 컴퓨팅 셰이더로도 수행 할 수 있습니다. 그러나 OpenGL을 사용하는 것은 (아직도 처음부터 실시간 컴퓨터 그래픽을위한 프레임 워크이며 아마도 항상 그럴 것입니다) 컴퓨 트 쉐이더 때문에 그다지 말이되지 않습니다. 이를 위해 OpenCL 또는 CUDA를 사용할 수 있습니다. 컴퓨팅 셰이더의 진정한 강점은 그래픽과 컴퓨팅 기능을 혼합 할 때 작용합니다.


여기 에서 다른 관점을 찾으 십시오 . 요약 :

예, OpenCL은 이미 존재했지만 무거운 애플리케이션 (CFD, FEM 등)을 대상 으로 하며 OpenGL보다 훨씬 더 보편적입니다 (GPU 이상으로 생각하세요 ... 인텔의 Xeon Phi 아키텍처는 50 개 이상의 x86 코어를 지원합니다).

또한 OpenGL / CUDA와 OpenCL간에 버퍼를 공유하는 것은 재미가 없습니다.

참조 URL : https://stackoverflow.com/questions/15868498/what-is-the-difference-between-opencl-and-opengls-compute-shader

반응형