NVIDIA GPU는 Codeplay가 DPC ++ 표준 개발에 기여한 후 SYCL 지원을받습니다.

하드웨어 / NVIDIA GPU는 Codeplay가 DPC ++ 표준 개발에 기여한 후 SYCL 지원을받습니다. 2 분 읽기

엔비디아



Intel, Xilinx, Renesas 및 Imagination Technologies, SYCL ( 'sickle'로 발음)과 같은 선도 기업의 지원을받은 후 이제 NVIDIA GPU를 사용하는 개발자도 혜택을 얻을 수 있습니다. SYCL 커뮤니티에 꾸준히 적극적으로 기여해 온 Codeplay는 이제 여러 하드웨어 플랫폼에서 코드를 재활용하고 재사용 할 수있는 DPC ++ (Data Parallel C ++)의 고급 개발을 마무리했습니다. 결과는 ComputeCpp입니다. Codeplay의 자체 SYCL 구현 .

ComputeCpp의 최신 에디션은 OpenCL 및 NVIDIA의 PTX를 사용하는 NVIDIA GPU에 대한 실험적 지원을 제공합니다.

작년에 인텔은 SYCL을 추진하기 위해 결정적인 조치를 취했으며 심지어 oneAPI 표준 작업을 시작했습니다. oneAPI에는 Intel의 CPU, GPU 및 FPGA를위한 DPC ++ (확장 기능이있는 SYCL 구현)이 포함되어 있습니다. 자일링스, 르네사스, 상상 테크놀로지스에서 SYCL에 대한 지원이 들어 오자이 운동은 곧 상당히 커지고 추진력을 얻었습니다. 간단히 말해서, 소프트웨어 개발자는 이제 SYCL을 사용하여 다양한 장치를 대상으로 할 수 있습니다.



ComputeCpp는 OpenCL 및 NVIDIA의 PTX를 사용하여 NVIDIA GPU에 대한 실험적인 지원을 제공합니다. 그러나 DPC ++ (인텔의 SYCL 구현)는 OpenCL을 거치지 않고 LLVM 컴파일러에 통합 된 NVIDIA GPU에 대한 완전한 지원을 추가 할 수있는 기회를 제공합니다. Codeplay는 SYCL 개발자가 NVIDIA GPU를 대상으로 할 수 있도록 구현의 초기 실험 단계를 오픈 소스로 제공한다고 발표했습니다. 이 구현의 코드베이스는 별도의 포크 기본 LLVM 컴파일러 프로젝트와 DPC ++ 브랜치 모두에서 이 조직은 업스트림 인텔 / LLVM 컴파일러에 NVIDIA GPU 지원을 추가하기 위해 인텔과 협력 할 계획이라고 덧붙였습니다.

개발자는 NVIDIA GPU에 대한 SYCL 지원의 이점을 어떻게 얻을 수 있습니까?

이 프로젝트를 통해 개발자는 시스템의 OpenCL 계층을 거치지 않고도 SYCL 코드를 사용하여 NVIDIA GPU를 대상으로 지정할 수 있습니다. 즉, 개발자는 NVIDIA GPU만으로 시스템에서 DPC ++를 실행하여 SYCL 애플리케이션을 컴파일 할 수 있습니다. 또한 기존 CUDA 애플리케이션은 CUDA 지원을 사용하여 SYCL에 점진적으로 이식 된 다음 CUDA가없는 플랫폼에서 실행할 수 있습니다. 이것은 분명히 많은 시간과 반복적 인 노력을 절약합니다.

Codeplay는 DPC ++ 용 NVIDIA 백엔드를 사용하는 방법을 설명하는 프로젝트 README 파일에 대한 지침을 제공했습니다. 개발자는 컴파일 할 때 일부 플래그를 사용하고 런타임에서 대상 장치를 알 수 있도록 장치 선택기를 설정하는 코드를 사용해야합니다. 특히“ NVIDIA CUDA 지원으로 SYCL 툴체인 구축 ”및 Clang 컴파일러 옵션에는 특정 지침 .

Codeplay는 Titan RTX GPU (컴퓨팅 기능 7.5)에서 CUDA 10.1을 사용하여 Ubuntu 18.04로 프로젝트를 성공적으로 실행했음을 확인했습니다. 팀은 SM 5.0 이상과 호환되는 NVIDIA GPU가있는 다른 Linux 버전에서도 작동해야한다고 확신합니다. 그러나 컴파일 된 SYCL 애플리케이션은 동시에 둘 다가 아닌 CUDA 또는 OpenCL 중 하나만 대상으로 할 수 있습니다.