할라이드(프로그래밍 언어)

Halide (programming language)
할라이드
패러다임기능적, 병렬적
설계자조너선 라건 켈리 앤드류 애덤스
개발자MIT(Stanford, GoogleAdobe의 도움을 받아)
첫 등장2012
타이핑 규율정태의
구현 언어C++
OSMac OS, Linux 메인스트림 배포판, Windows
웹사이트http://halide-lang.org/

할라이드메모리 인접성, 벡터화된 연산, 멀티 코어 CPUGPU 등을 활용한 디지털 이미지 처리 코드 작성을 위해 고안된 컴퓨터 프로그래밍 언어다.[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]

참고 항목

참조

  1. ^ "Halide - New Language For Image Processing". 2012. Retrieved 20 September 2013.
  2. ^ "Google and Intel cook AI chips, neural network exchanges – and more". The Register. Situation Publishing.
  3. ^ "Photoshop freezing at startup on Halide Bottlenecks". 2020. Retrieved 27 April 2020.
  4. ^ "Learning to Optimize Halide with Tree Search and Random Programs" (PDF). 2019. Retrieved 1 July 2019.

외부 링크