오늘날 고도로 상호 연결된 디지털 시대에 성능 이식성은 소프트웨어 개발에서 중요한 문제가 되었습니다. 성능 이식성은 다양한 하드웨어 플랫폼에서 효과적으로 실행되는 애플리케이션의 능력을 의미합니다. 개발자가 성능 지원 및 이식 가능한 애플리케이션을 설계할 때 이상적으로는 플랫폼별 코드를 최소화하면서 성능 저하 없이 여러 플랫폼을 지원해야 합니다.
성능 이식성은 고성능 컴퓨팅(HPC) 커뮤니티에서 매우 중요한 기능으로 간주되지만 현재 보편적이거나 일관된 측정 표준은 없습니다.
성능은 두 가지 방법으로 측정됩니다. 하나는 최적화된 애플리케이션 버전의 성능을 이식 가능한 버전과 비교하는 것이고, 다른 하나는 수행된 부동 소수점 연산(FLOP) 수를 기반으로 하며 실행 중에 기본 메모리에서 이동하는 것입니다. . 애플리케이션의 이론적 최고 성능을 비교하기 위한 프로세서 주파수 데이터입니다. 하드웨어의 다양성이 증가함에 따라 광범위한 시스템에서 실행될 수 있는 소프트웨어를 개발하는 것이 점점 더 중요해지고 있으며 이는 애플리케이션의 장기간 사용과 업데이트 가능성에 영향을 미칩니다.
성능 이식성은 업계에서 널리 언급되며 일반적으로 다음을 의미합니다. 첫째, 여러 하드웨어 플랫폼에서 동일한 애플리케이션을 실행하는 능력, 둘째, 이러한 플랫폼에서 특정 성능 목표를 달성하는 것입니다. 2016년 미국 에너지부(DOE)가 개최한 성능 이식성 컨퍼런스에서 한 전문가는 "가장 잘 알려진 구현과 비교하여 각 플랫폼에서 일관된 수준의 성능을 달성할 수 있는 애플리케이션은 애플리케이션으로 간주될 수 있다"고 말했습니다. 효율성과 휴대성을 위해.”
Jeff Larkin(NVIDIA)은 성능 이식성이 "동일한 소스 코드가 여러 다른 아키텍처에서 생산적으로 실행될 수 있다"고 직접적으로 지적했습니다.
따라서 성능 이식성은 고성능 컴퓨팅 커뮤니티에서 중요한 논의 주제가 되었습니다. 산학계, DOE 국립 연구소의 파트너들은 성능 이식성에 대한 연구 개발을 촉진하기 위해 2016년부터 정기적으로 "성능, 이식성 및 고효율 컴퓨팅 생산성 포럼"을 개최해 왔습니다.
컴퓨팅 아키텍처가 계속 발전함에 따라 성능 이식성은 여전히 중요합니다. 개발자는 단일 코드 기반이 최신 아키텍처는 물론 아직 테스트되지 않은 다양한 현재 아키텍처에서도 허용 가능한 성능을 달성할 것이라고 가정합니다. 하드웨어 다양성이 증가함에 따라 여러 플랫폼에서 실행될 수 있는 소프트웨어를 개발하는 것이 필요해졌습니다. 이는 애플리케이션의 활력 및 지속적인 관련성과 관련이 있습니다.
미국 에너지부의 엑사스케일 컴퓨팅 프로젝트(ECP)는 성능 이식성이 특히 다중 플랫폼 환경에서 지속적인 관심사임을 강조합니다.
2016년부터 DOE는 성능 이식성의 중요성이 커지고 있음을 논의하기 위해 여러 차례 워크숍을 개최했습니다. 2017년 컨퍼런스에는 NERSC(National Energy Research Scientific Computing Center) 및 LANL(Los Alamos National Laboratory)을 비롯한 많은 유명 기관이 참여했습니다.
프로그램이 성능 이식성을 달성한 시기를 정량화하려면 두 가지 요소를 고려해야 합니다. 첫째, 성능 이식성은 아키텍처 전체에 사용되는 코드 줄 수와 단일 아키텍처에만 사용되는 코드 줄 수를 비교하여 측정할 수 있습니다. 둘째, 성과는 다양한 방식으로 측정될 수 있습니다. 예를 들어, 플랫폼에 최적화된 애플리케이션 버전과 휴대용 버전의 성능을 비교하기 위해 효과적인 측정 방법은 애플리케이션의 이론적 최고 성능을 얻을 수 있는 지붕 성능 모델을 사용하는 것입니다.
2016년 컨퍼런스에서 한 참가자는 "애플리케이션 팀이 성능 이식성이 있다고 주장할 때 이 코드는 성능 이식성이 있는 것으로 간주됩니다."라고 언급했습니다.
최근 몇 년간 연구에 따르면 다양한 병렬 컴퓨팅 아키텍처용으로 작성된 이식 가능한 코드는 개방형 표준 프로그래밍 모델을 준수해야 하며 코드는 여러 플랫폼에서 동시에 개발 및 개선되어야 합니다. 이러한 전략은 개발자가 다양한 플랫폼에 적합한 매개변수를 찾는 데 도움이 될 수 있습니다.
개발자가 성능 이식성을 달성하는 데 도움이 되도록 설계된 다양한 프로그래밍 애플리케이션과 시스템이 시장에 나와 있습니다. 일부 일반적인 프레임워크에는 OpenCL, SYCL, Kokkos, RAJA 등이 포함됩니다. 이러한 프로그래밍 인터페이스는 다중 플랫폼 다중 프로세스 프로그래밍을 지원합니다. 일부 비프레임워크 솔루션에는 자체 조정 및 도메인별 언어가 포함됩니다.
기술이 발전함에 따라 성능 이식성의 가능성을 새로운 차원으로 끌어올리는 새로운 프로그래밍 시대를 맞이할 준비가 되어 있습니까?