할라이드(프로그래밍 언어)
Halide (programming language)패러다임 | 기능적, 병렬적 |
---|---|
설계자 | 조너선 라건 켈리 앤드류 애덤스 |
개발자 | MIT(Stanford, Google 및 Adobe의 도움을 받아) |
첫 등장 | 2012 |
타이핑 규율 | 정태의 |
구현 언어 | C++ |
OS | Mac OS, Linux 메인스트림 배포판, Windows |
웹사이트 | http://halide-lang.org/ |
할라이드는 메모리 인접성, 벡터화된 연산, 멀티 코어 CPU와 GPU 등을 활용한 디지털 이미지 처리 코드 작성을 위해 고안된 컴퓨터 프로그래밍 언어다.[1]할라이드는 C++에서 내부 도메인 고유 언어(DSL)로 구현된다.
언어
할라이드가 가져오는 주요 혁신은 실행 일정에서 구현 중인 알고리즘의 분리, 즉 루프 내포, 병렬화, 루프 언롤링 및 벡터 지시 등을 지정하는 코드다.이 두 가지는 보통 함께 인터리빙되며, 일정 변경 실험은 프로그래머가 모든 변경사항으로 알고리즘의 많은 부분을 다시 작성하도록 요구한다.Halide를 사용하는 경우, 스케줄을 변경할 필요가 없으므로 프로그래머는 알고리즘을 변경하고 가장 효율적인 알고리즘을 찾는 실험을 할 수 있다.
샘플 소스 코드
다음 기능은 3×1 패스의 연속 3×3 박스 필터에 대한 일정을 정의하고 설정한다.
펑크 흐림_3x3(펑크 입력하다) { 펑크 흐릿_x, 흐릿한; VAR x, y, xi, 이; // 알고리즘 - 저장 또는 순서 없음 흐릿_x(x, y) = (입력하다(x-1, y) + 입력하다(x, y) + 입력하다(x+1, y))/3; 흐릿한(x, y) = (흐릿_x(x, y-1) + 흐릿_x(x, y) + 흐릿_x(x, y+1))/3; // 일정 - 순서, 위치 정의, 저장 의미 흐릿한.타일을 깔다(x, y, xi, 이, 256, 32) .벡터화하다(xi, 8).평행의(y); 흐릿_x.compute_at(흐릿한, x).벡터화하다(x, 8); 돌아오다 흐릿한; }
사용하다
구글은 픽셀 2 픽셀 비주얼 코어에 할라이드와 텐서플로우를 사용했다.[2]어도비 포토샵도 할라이드를 사용한다.[3]구글과 어도비 둘 다 할리드 연구에 관여해왔다.[4]
참고 항목
참조
- ^ "Halide - New Language For Image Processing". 2012. Retrieved 20 September 2013.
- ^ "Google and Intel cook AI chips, neural network exchanges – and more". The Register. Situation Publishing.
- ^ "Photoshop freezing at startup on Halide Bottlenecks". 2020. Retrieved 27 April 2020.
- ^ "Learning to Optimize Halide with Tree Search and Random Programs" (PDF). 2019. Retrieved 1 July 2019.