>  기사  >  기술 주변기기  >  이 컴파일러는 Python을 C++만큼 빠르게 만들 수 있습니다. 최대 100배 더 빠르게(MIT에서 제작)

이 컴파일러는 Python을 C++만큼 빠르게 만들 수 있습니다. 최대 100배 더 빠르게(MIT에서 제작)

王林
王林앞으로
2023-04-07 17:50:471171검색

딥 러닝이 등장한 이후 Python은 가장 인기 있는 프로그래밍 언어 중 하나로 데이터 과학 및 기계 학습 분야를 장악하고 심지어 과학 및 수학 컴퓨팅 분야에서도 주연을 맡았습니다. 요즘에는 상상할 수 있는 거의 모든 프로젝트에 해당하는 Python 패키지를 찾을 수 있습니다.

그러나 고급 언어는 구문이 단순화되어 배우기 쉽고 사용하기 쉽지만 C나 C++와 같은 저급 언어에 비해 속도가 느립니다.

MIT 컴퓨터 과학 및 인공 지능 연구소(CSAIL)의 연구원들은 사용자가 C나 C++만큼 효율적으로 프로그램을 작성할 수 있게 해주는 Python 기반 컴파일러인 Codon을 통해 이러한 상황을 바꾸고자 합니다. 실행되는 Python 코드는 사용자 정의하고 다양한 요구와 환경에 맞게 조정됩니다.

본 연구의 최신 논문 "Codon: A Compiler for High Performance Pythonic Application and DSLs"는 지난 2월 제32회 ACM SIGPLAN 컴파일러 구축 국제 컨퍼런스에서 발표되었습니다.

이 컴파일러는 Python을 C++만큼 빠르게 만들 수 있습니다. 최대 100배 더 빠르게(MIT에서 제작)

  • 프로젝트 링크: https://github.com/exaloop/codon
  • 논문: https://dl.acm.org/doi/abs/10.1145/3578360.3580275

개발 작업에서 사람들은 소스 코드를 컴퓨터 프로세서에서 실행할 수 있는 기계 코드로 변환하기 위해 컴파일러를 사용해야 합니다. Codon은 개발자가 Python에서 새로운 도메인 특정 언어(DSL)를 만드는 데 도움을 줄 수 있습니다. 언어의 성능 이점.

"일반 Python은 소위 바이트코드로 컴파일되어 가상 머신에서 실행되므로 속도가 훨씬 느려집니다."라고 Codon 논문의 수석 저자인 Ariya Shajii는 말했습니다. "우리는 Codon을 사용하여 컴파일합니다. 기본적으로 중간 가상 머신이나 인터프리터를 거치지 않고 최종 결과를 CPU에서 직접 실행할 수 있습니다. Codon의 컴파일 파이프라인에는 유형 검사가 포함되어 있어 Python 코드를 보다 효율적으로 실행할 수 있습니다.

이 컴파일러는 Python을 C++만큼 빠르게 만들 수 있습니다. 최대 100배 더 빠르게(MIT에서 제작)

Python 기반 컴파일러는 Linux 및 macOS용으로 사전 빌드된 바이너리와 함께 제공되며, 소스에서 실행 파일을 빌드하거나 생성할 수도 있습니다. "Codon을 사용하면 Python과 같은 소스 코드를 배포하거나 바이너리로 컴파일할 수 있습니다."라고 Shajii는 말했습니다. "바이너리를 배포하려면 Linux 바이너리나 Mac 바이너리 등 C++와 같은 언어와 동일할 것입니다."

Codon을 더 빠르게 만들기 위해 연구원들은 컴파일 타임에 유형 검사를 수행하기로 결정했습니다. . 유형 검사에는 데이터 유형(예: 정수, 문자열, 문자 또는 부동 소수점 등)을 값에 할당하는 작업이 포함됩니다. 예를 들어, 숫자 5는 정수로 할당될 수 있고, 문자 c는 문자로 할당될 수 있으며, hello라는 단어는 문자열로 할당될 수 있으며, 십진수 3.14는 부동 소수점 숫자로 할당될 수 있습니다. "일반 Python에서는 모든 유형이 런타임에 제공됩니다."라고 Shajii는 말했습니다. "Codon을 사용하면 컴파일 중에 유형 검사를 수행하므로 런타임에 값비싼 유형 작업을 모두 피할 수 있습니다."

MIT CSAIL의 수석 연구원인 Saman Amarasinghe는 "동적 언어(예: Python)가 있는 경우 ), 데이터가 있을 때마다 런타임에 유형을 결정하기 위해 많은 추가 메타데이터를 유지해야 합니다. Codon은 이 메타데이터를 제거하므로 코드가 더 빨라지고 데이터가 더 작아집니다.

Shajii에 따르면 , Codon은 런타임 시 불필요한 데이터나 유형 검사가 없으므로 오버헤드가 없습니다. 성능 측면에서 "Codon은 일반적으로 C++와 동등합니다. 일반적으로 Python에 비해 속도가 10배~100배 향상됩니다."

반면 Codon의 접근 방식에는 장단점이 있습니다. Shajii는 "우리는 이러한 정적 유형 검사를 수행하며 런타임 시 유형을 동적으로 변경하는 것과 같은 Python의 일부 동적 기능 사용을 허용하지 않습니다."라고 말했습니다.

"아직 구현하지 않은 Python 라이브러리가 있습니다." Amarasinghe는 "Python은 실제로 수많은 사람들에 의해 테스트되었으며 Codon은 아직 그 수준에 도달하지 못했습니다. 더 많은 프로그램을 실행하고 더 많은 피드백을 받아야 합니다." . 연구원들은 Python으로 작성된 약 10개의 일반적인 유전체학 애플리케이션을 시도하고 Codon을 사용하여 컴파일하여 원래 수동으로 최적화된 구현에 비해 5~10배의 속도 향상을 달성했습니다.

"이 분야의 데이터 세트는 오늘날 매우 방대해졌으며 Python 및 R과 같은 고급 언어는 시퀀싱 세트당 테라바이트급 데이터를 처리하기에는 너무 느립니다."라고 Shajii는 말했습니다. "C 또는 C++ 코드를 작성하지 않고도 빅 데이터를 처리할 수 있는 방법을 구축하여 컴퓨터 과학이나 전문 개발자가 아닌 도메인 전문가의 역량을 강화함으로써 이것이 바로 우리가 메우고 싶은 격차입니다." 위 차트는 여러 벤치마크에서 Python(CPython 3), PyPy, Codon 및 C++의 성능을 비교합니다. y축은 CPython 구현에 비해 Codon 구현의 속도 향상을 보여줍니다. MIT/EXALOOP/UNIVERSITY OF VICTORIA/ACM

Codon은 유전체학 외에도 대규모 데이터 세트를 다루는 유사한 애플리케이션과 Python에서 지원하는 GPU 프로그래밍 및 병렬 프로그래밍과 같은 영역에도 적용할 수 있습니다. 기반 컴파일러. 실제로 Codon은 현재 Shajii가 Codon을 학술 프로젝트에서 산업 응용 프로그램으로 전환하기 위해 설립한 스타트업 Exaloop을 통해 생물정보학, 딥 러닝 및 양적 금융 분야에서 상업적으로 사용되고 있습니다.

이 컴파일러는 Python을 C++만큼 빠르게 만들 수 있습니다. 최대 100배 더 빠르게(MIT에서 제작)

코돈이 다양한 분야에 적응할 수 있도록 플러그인 시스템을 개발했습니다. Shajii는 "확장 가능한 컴파일러와 같습니다."라고 말했습니다. "유전체학 또는 기타 분야를 위한 플러그인을 작성할 수 있으며 이러한 플러그인에는 새로운 라이브러리와 새로운 컴파일러 최적화가 있을 수 있습니다." 또한 기업과 기관은 Codon을 사용하여 자체 애플리케이션을 프로토타입하고 개발할 수 있습니다. “우리가 보는 패턴 중 하나는 사람들이 Python을 사용하기 쉽기 때문에 프로토타이핑과 테스트에 사용한다는 것입니다. 하지만 중요한 일이 발생하면 애플리케이션을 다시 작성하거나 다른 사람이 C 또는 C++로 다시 작성하고 테스트하도록 해야 합니다. 더 큰 데이터 세트에 대해"라고 Shajii는 말했습니다. "Codon을 사용하면 Python을 완벽하게 사용할 수 있으며 두 세계의 장점을 모두 얻을 수 있습니다."

Codon의 미래와 관련하여 Shajii와 그의 팀은 현재 널리 사용되는 Python 라이브러리의 기본 구현과 라이브러리별 구현을 위해 노력하고 있습니다. 사람들이 이러한 라이브러리에서 더 나은 성능을 얻을 수 있도록 최적화합니다. 그들은 또한 웹 브라우저에서 코드 실행을 지원하는 Codon의 WebAssembly 백엔드라는 인기 있는 기능을 만들 계획입니다.

위 내용은 이 컴파일러는 Python을 C++만큼 빠르게 만들 수 있습니다. 최대 100배 더 빠르게(MIT에서 제작)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 51cto.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제