고성능 컴퓨팅 (HPC)의 세계에서 성능 이식성은 많은 개발자들이 추구하는 목표입니다. 그러나 컴퓨팅 플랫폼의 다각화로 인해이 목적은 많은 어려움에 직면 해 있습니다. 성능 이식성은 애플리케이션이 다른 하드웨어 플랫폼에서 실행되도록하는 것이 아니라 성능을 손상시키지 않고 호환성을 유지하는 방법에 관한 것입니다. 현재까지 성능 이식성을 정량화하고 평가하기위한 보편적 표준은 없으므로 개발자가 소프트웨어를 설계하기가 어렵습니다.
성능 이식성은 개발자의 단일 코드베이스가 새로운 아키텍처에서 잘 수행 할 수 있고 아직 테스트되지 않은 다양한 현재 아키텍처에서 허용 가능한 성능 제한을 유지할 수 있다는 가정을 나타냅니다.
성능 이식성의 정의와 측정에 대해서는 뜨거운 논의가 이루어지고 있습니다. 어떤 사람들은 이것이 주로 애플리케이션 이식성이라고 주장하는 반면, 다른 사람들은 소스 코드 이식성이 핵심이라고 주장합니다. 특히 현재 하드웨어의 빠른 발전으로 개발자는 제품이 여러 플랫폼에서 계속 실행되는 방법을 고려해야합니다. 미국 에너지 부의 슈퍼 컴퓨팅 프로그램 (ECP)은 다양한 하드웨어 아키텍처를위한 호환 컴퓨팅 생태계를 만들어야하기 때문에이 점을 강조합니다.
일반적으로 "코드는 여러 아키텍처에서 잘 작동할 수 있으며, 이것이 바로 성능 이식성"이라고 믿어집니다.
성능 이식성을 평가할 때 개발자는 일반적으로 이식성과 성능이라는 두 가지 요소를 고려합니다. 다른 아키텍처에서 사용되는 코드 라인을 검사하여 휴대 성을 측정 할 수 있으며, 플랫폼에서 최적화 된 버전을 휴대용 버전과 비교하여 성능을 결정할 수 있습니다. 이러한 측정 방법에도 불구하고 업계에는 여전히 투명한 표준이 부족하여 개발자가 최적의 성능 이식성을 달성하는 방법을 명확하게 이해하지 못합니다.
2016년 DOE(미국 에너지부) 이식성 컨퍼런스에서 참가자들은 성능 이식성에 관해 열띤 논쟁을 벌였습니다. 많은 유명 개발자와 과학자들이 컨퍼런스에 참석하여 성능 이식성에 대한 새로운 통찰력과 요구 사항을 공유했습니다. 미래의 병렬 프로그래밍 모델이 응용 프로그램 자체가 제공 할 수있는 것보다 더 중요한 성능 이식성을 제공 할 것이라는 주장이 있다는 점은 주목할 가치가 있습니다.
회의에서 언급했듯이 "애플리케이션 팀이 코드가 성능 이식 가능하다고 믿을 때 코드는 성능 이식 가능입니다."
다양한 하드웨어 플랫폼에 직면한 개발자는 자신의 코드를 지원하는 데 적합한 프레임워크를 찾아야 합니다. OpenCL, SYCL 및 OpenMP와 같은 일부 잘 알려진 프레임워크는 기능적 이식성을 촉진한다고 주장합니다. 이러한 프레임워크는 다중 플랫폼 병렬 프로그래밍을 지원하므로 개발자는 여러 언어로 프로그래밍할 수 있습니다. 그러나 프레임워크 외에도 성능 이식성을 향상시키는 데 도움이 될 수 있는 자체 조정 및 도메인별 언어와 같은 비프레임워크 솔루션도 있습니다.
간단히 말하면 고성능 컴퓨팅에서 성능 이식성의 문제는 개발자의 업무 효율성과 애플리케이션의 지속 가능한 개발에 직접적인 영향을 미치기 때문에 점점 더 중요해지고 있습니다. 미래의 컴퓨팅 요구 사항이 변화하고 컴퓨팅 기술이 빠르게 발전함에 따라 개발자는 이러한 과제에 어떻게 적응하고 직면해야 합니까?