인텔 oneAPI

여러 아키텍처에 걸친 통합 프로그래밍 모델

개요

이기종 아키텍처를 활용하고자 하는 고객층이 증가함에 따라 하이레벨 소프트웨어 도구 흐름을 지원하는 것은 매우 중요합니다. 인텔의 새로운 oneAPI는 다른 고급 도구와 유사한 성능을 제공하면서 코드 재사용을 중심으로 설계되었습니다. 인텔의 oneAPI 프로그래밍 모델과 이 모델이 여러 아키텍처에서 가속화를 위한 개발을 보다 쉽게 지원하여 프로그래밍 문제를 해결하는 방법에 대해 알아보세요.

일부 비트웨어 제품에서 오늘부터 지원됩니다.

프로그래밍 과제

여러 아키텍처의 경우

오늘날의 HPC 환경에서는 워크로드를 실행하는 데 CPU, GPU, FPGA 및 특수 가속기 등 여러 하드웨어 아키텍처를 사용할 수 있습니다. 모든 워크로드에 가장 적합한 단일 아키텍처는 없으므로 여러 아키텍처를 혼합하여 사용하면 대부분의 시나리오에서 최상의 성능을 얻을 수 있습니다. 하지만 이러한 아키텍처의 다양성은 몇 가지 과제로 이어집니다:

각 아키텍처에는 별도의 프로그래밍 모델과 툴체인이 필요합니다:

  • 필수 교육 및 라이선스 - 컴파일러, IDE, 디버거, 분석/모니터링 도구, 배포 도구 - 아키텍처별로 제공됩니다.
  • 교차 아키텍처 소스 코드 디버그, 모니터링 및 유지 관리의 어려움
  • 독점 IP 및 아키텍처 간 통합이 어렵고 코드 재사용이 불가능합니다.

소프트웨어 개발의 복잡성은 아키텍처 선택의 자유를 제한합니다.

  • 진입 장벽을 극복하기 위한 기술 전문성에 필요한 단독 투자

oneAPI의 지원 방법

OneAPI는 다양한 아키텍처에서 개발을 간소화하는 통합 프로그래밍 모델을 제공합니다. 개발자는 oneAPI 프로그래밍 모델을 사용하여 동일한 언어와 라이브러리로 다양한 하드웨어 플랫폼을 타겟팅할 수 있으며, 동일한 디버그 및 성능 분석 도구 세트를 사용하여 다양한 플랫폼에서 코드를 개발하고 최적화할 수 있습니다(예: Vtune 프로파일러를 통해 호스트 및 가속기에서 런타임 데이터를 가져오는 것).

여러 플랫폼과 하드웨어 아키텍처에서 동일한 언어를 사용하면 소스 코드를 더 쉽게 재사용할 수 있으며, 코드를 다른 하드웨어 아키텍처로 옮길 때 플랫폼별 최적화가 필요한 경우에도 더 이상 코드 번역이 필요하지 않습니다. 또한 공통 언어와 도구 세트를 사용하면 신규 개발자를 더 빠르게 교육하고, 디버그를 더 빠르게 수행하며, 생산성을 높일 수 있습니다.

인텔 오나피 혜택.png
  • 에뮬레이션보고서를 통한 성능 튜닝 및 타이밍 종료
  • VTune™ 프로파일러를 통한 런타임 분석
  • 기본 제공 언어 기능을 통해 구현된 복잡한 하드웨어 패턴: 매크로, 프라그마, 헤더
  • 아키텍처 및 공급업체 전반에서 코드 재사용
  • 기존 고성능 언어와 호환
  • 익숙한 순차적 프로그래밍 언어 활용: 램프업디버그 시간 개선
  • IDE 통합: Eclipse, VS, VS Code

oneAPI를 사용한 2D FFT 데모

이 소프트웨어 지향 도구 흐름에서 더 빠르게 개발하고 코드를 재사용하세요.

HBM2가 탑재된 520N-MX 카드가 아닌 2D FFT 데모에서 oneAPI를 사용해 보세요. 페이지 하단에서 코드 다운로드를 요청하세요!

데이터 병렬 C++

표준 기반 교차 아키텍처 언어

oneAPI 언어는 병렬 프로그래밍 생산성을 위해 설계되고 광범위한 호환성을 위해 C++ 언어에 기반한 고급 언어인 데이터 병렬 C++입니다. DPC++는 독점 언어가 아니며, 개방형 업계 간 이니셔티브에 의해 개발이 주도되고 있습니다.

CPU와 가속기 전반에서 탁월한 병렬 프로그래밍 생산성과 성능을 제공하는 언어입니다:

  • 특정 가속기에 대한 커스텀 튜닝을 허용하면서 하드웨어 타겟 간에 코드 재사용을 허용합니다.
  • 단일 아키텍처 독점 언어를 대체하는 개방형, 업계 전반의 대안

C++ 기반:

  • 일반적이고 친숙한 C 및 C++ 구조를 사용하여 C++ 생산성 이점 제공
  • 데이터 병렬 처리 및 이기종 프로그래밍을 지원하기 위해 크로노스 그룹의 SYCL*을 통합합니다.

언어 개선을 위한 커뮤니티 프로젝트:

  • 데이터 병렬 프로그래밍을 간소화하는 확장 기능
  • 지속적인 진화를 위한 개방적이고 협력적인 개발 

oneAPI용 FPGA 개발 흐름

FPGA용 코드를 컴파일할 때 가장 큰 문제 중 하나는 컴파일 시간입니다. DPC++ 코드를 해당 코드에 지정된 하드웨어 아키텍처를 구현하는 타이밍 폐쇄형 FPGA 설계로 변환하는 데 필요한 백엔드 컴파일 프로세스는 완료하는 데 몇 시간이 걸릴 수 있습니다. 따라서 전체 컴파일 실행을 최소화하도록 FPGA 개발 흐름이 조정되었습니다.

  1. 첫 번째 단계는 기능 검증으로, 테스트 벤치를 사용하여 코드의 정확성을 검사합니다. 이는 개발 플랫폼에서 에뮬레이션을 사용하여 이루어지며, FPGA를 대상으로 하는 코드가 CPU에서 컴파일 및 실행됩니다. 따라서 버그를 발견하고 수정해야 할 때 훨씬 더 빠른 처리 시간을 확보할 수 있습니다. 이를 위해 표준 CPU 디버거(예: GDB용 인텔® 디스트리뷰션)를 사용할 수 있습니다.
  2. 기능 검증이 완료되면 컴파일러에서 생성된 보고서를 통해 정적 성능 분석이 수행됩니다. 보고서에는 설계의 메모리, 성능, 데이터 흐름 병목 현상을 식별하는 데 필요한 모든 정보와 병목 현상을 해결하기 위한 최적화 기법에 대한 제안이 포함됩니다. 또한 대상 FPGA에 대한 설계의 면적 및 타이밍 추정치도 제공합니다.
  3. 정적 분석 결과가 만족스러우면 전체 컴파일이 수행됩니다. 컴파일러는 요청 시 프로파일링 로직을 생성된 하드웨어에 삽입할 수 있으며, 프로파일링 로직은 메모리 및 파이프 액세스에 대한 동적 프로파일링 데이터를 생성하여 나중에 다른 방법으로는 발견할 수 없는 데이터 패턴 의존적 병목 현상을 식별하는 데 Vtune 성능 분석기에서 사용할 수 있습니다.
 

무료 온디맨드 웨비나

인텔® oneAPI™를 사용하여 FPGA를 통한 고성능 컴퓨팅 가속화 달성

등록 후 바로 시청하세요!

oneAPI에 대해 자세히 알아보기

oneAPI란 무엇인가요?

oneAPI는 가속기 아키텍처 전반에 걸쳐 공통된 개발자 경험을 제공하여 애플리케이션 성능, 생산성, 혁신을 향상시키는 업계 전반의 개방형 표준 기반 통합 프로그래밍 모델입니다. oneAPI 업계 이니셔티브는 생태계 전반에 걸쳐 oneAPI 사양 및 호환 가능한 oneAPI 구현에 대한 협업을 장려합니다.

라이브러리

oneAPI는 컴퓨팅 및 데이터 집약적인 도메인을 위한 라이브러리를 제공합니다. 여기에는 딥 러닝, 과학 컴퓨팅, 비디오 분석 및 미디어 처리가 포함됩니다.

하드웨어 추상화 레이어

로우레벨 하드웨어 인터페이스는 언어 런타임이 하드웨어 가속기를 활용할 수 있도록 하는 기능 및 서비스 집합을 정의합니다.

사양

oneAPI 사양은 기존 개발자 프로그래밍 모델을 확장하여 크로스 아키텍처 프로그래밍을 지원하는 언어, 라이브러리 API 세트, 로우 레벨 하드웨어 인터페이스를 통해 다양한 하드웨어 세트를 지원합니다. 호환성을 촉진하고 개발자의 생산성과 혁신을 지원하기 위해 oneAPI 사양은 업계 표준을 기반으로 하며 개방형 크로스 플랫폼 개발자 스택을 제공합니다.

520N-MX에서 oneAPI를 사용하여 바로 시작할 수 있습니다.

FPGA에서 oneAPI 시작하기

oneAPI로 개발을 시작하려면 세 가지 구성 요소가 필요합니다. oneAPI 기본 툴킷과 FPGA 애드온은 모두 인텔에서 제공됩니다. BittWare FPGA 카드용 BSP는 BittWare의 개발자 사이트에서 구할 수 있습니다. 

인텔의 oneAPI 기본 툴킷

oneAPI 기본 툴킷용 인텔 FPGA 애드온

BittWare의 FPGA 카드 BSP

비디오

크레이그 페트리가 말하는 비트웨어의 oneAPI 지원에 대한 이야기

 

가격이나 자세한 정보가 궁금하신가요?

기술 영업팀에서 가용성 및 구성 정보를 제공하거나 기술 관련 질문에 답변해 드립니다.