hardware-software codesign 개념

1. compression과 acceleration의 차이점

 

완전히 뜻이 달라보이는 두 단어는 보통 같이 따라다니는 단어라고???

 

compression같은 경우는 공간적으로 중요한 정보는 남기고 그렇지 않은 것은 제거하는 것으로 software level에서 하는 이야기

 

acceleration은 hardware level에서 시간적으로 속도 상승의 이야기

 

 

2. hardware의 성능이란

 

hardware는 보통 사람이 원하는 것을 수행해주는 도구의 역할을 함

 

사람이 무언가를 설계하여 software로 구현을 하면 compiler가 번역하여 그것을 hardware가 수행하여 output을 낸다

 

설계된 프로그램?에 사람이 input을 집어넣으면 algorithm에 의해 output이 나옴

 

사람이 이렇게 input을 집어 넣는 순간이 하나의 universal turing machine이 동작하여 output을 내놓는다

 

물론 hardware를 새롭게 구현하기도 하지만 많은 경우는 software를 구현 후 hardware는 그것을 더 빠르게 해줬으면 하는 도구

 

내가 원하는 것을 실행하는 것은 빨리하면 좋으니까 hardware의 성능을 이야기할 때 acceleration이야기를 많이 함

 

---------------------------------------------------------------------------------------------------------------------------------------------------------

 

universal turing machine

 

임의의 turing input을 넣으면 임의의 turing machine을 simulation하는 machine을 의미함

 

turing machine이란,

 

무한히 긴 ‘테이프’에 여러가지 숫자가 적혀 있는 모습을 상상해보자. 물론 아무런 숫자도 적혀있지 않을 수 있다.

 

‘입출력 헤드’가 가지는 어떤 상태에 따라 테이프에 적힌 숫자를 읽어들여가며 ‘제어장치’가 다음 행동을 진행함

 

하나의 수학적 문제를 추상화한 기계인데 엄청나게 기발한 프로그래밍에 의해

 

세상의 모든 문제를 풀 수 있는 turing machine이 있다면 튜링은 이를 ‘궁극의 기계’라 언급했고 이것이 현대의 컴퓨터

 

위에서 설명한 것은 튜링이 직접 설명한 방식이고

 

쉽게 생각하면 finite state machine인 어떤 input을 주면 다음 상태로 변화하는 그것이 사실 turing machine에 포함되는 개념임

 

 

---------------------------------------------------------------------------------------------------------------------------------------------------------

 

3. machine learning에서

 

machine learning도 하나의 software

 

architect를 설계하는 것이 하나의 hardware를 설계하는 것과 같고

 

programmer가 software로서 machine learning model을 구현하고

 

DL compiler가 그것을 번역하여

 

user가 입력하면 실행 후 출력을 내놓는다

 

이러한 과정에서 accelerator는 머신러닝용 hardware accelerator와 DL compiler에 작용??

 

하나의 universal turing machine? 뭐라고 써야할지 모르겠네

 

 

4. hardware-software codesign

 

software를 단순하게 compression하는 것보다 hardware의 지식에 기반하여, compression하는 것이 효율적이다.

 

단순하게 만든 software를 그냥 tensorflow로 compression해야지, tensorflow lite로 compression해야지가 아니라

 

이렇게 만든 software가 GPU 몇개짜리에 들어갈지

 

어떤 목적의 어떤 기계에 얼마나 capacity가 되는 edge device에 돌아갈지

 

여러방면으로 고려하고 compression을 하는 것은 분명한 차이가 있음

TAGS.

Comments