목록HPC (6)
Pioneer
single_layer_sim는 simulator 인스턴스의 run(..)(line 50:57) 메서드로부터 최초 생성된다.__init__(..) across line 13:6918-20: Systolic Array의 구성 요소 인스턴스(피연산자 매트릭스, OS dataflow systolic compute, 이중버퍼 스크래치패드 메모리) 24-64: 리포트에 작성될 수치 변수 생성 66-69: 동작 관련 플래그 초기화set_params(..) across line 71:97이것 역시 이전의 동일한 이름을 가진 메서드처럼 파라미터를 세팅한다. 대신 계산 유닛이나 피연산자 매트릭스에 설정 파일에 있는 파라미터를 매핑한다는 점이 다르다. 93-94: Systolic Array의 행과 열 크기를 가져와 num..
__init__(..) across line 9:22몇 가지 플래그 변수를 초기화하고 설정과 토폴로지에 대한 인스턴스 생성 특이하게 scale_sim에서도 생성했던 설정과 토폴로지 인스턴스를 여기서도 생성한다. 레이어 별로 동작하기 위한 빈 배열을 하나 생성한다.set_params(..) across line 25:43여기선 설정과 토폴로지에 대한 변수에 scale_sim에서 생성했던 것을 할당한다. 여러 사람이 개발하면서 코드가 꼬였나싶다. 그 외 시뮬레이터에 필요한 외부 파라미터를 설정한다.run(..) across line 46:10750-57: 실제로는 레이어 별로 시뮬레이션이 실행되기에 layer_sim(-) 인스턴스를 레이어 별로 생성하고 파라미터를 초기화한다. 71-103: 레이어 시뮬레이션..
이번에는 scale_config.py에 대해 분석할 것이다. 이 역시 scale_sim.py의 set_params(..)를 수행하는 과정에서 호출된다. 코드의 목적 자체는 시뮬레이터의 셋업 과정 중 설정 파일에 있는 요소들을 읽어 이후 시뮬레이션 수행에 사용하기 위함이다. 지난 코드 분석과 마찬가지로 읽고 저장하는 과정이 주를 이룬다. 특별히 구현된 로직이 없어서 각 메서드의 목적 정도만 서술함.read_conf_file(..)설정 파일을 읽어 각 파라미터를 클래스의 속성에 저장한다. get_toplogy_path(..)scale_config 인스턴스에 저장된 토폴로지 파일 경로를 반환 set_topology_file(..)scale_config 인스턴스의 속성값에 토폴로지 파일 경로 저장scale_si..
이번에는 topology_utils.py를 분석할 것이다. 이를 분석하는 이유는 메서드 호출 시퀀스가 아래와 같기 때문이다: scale.py: scalesim(-)↓scale_sim.py: __init__(..) → topologies(-) → set_params(..) → load_arrays(..)↓topology_utils.py: __init__(..) load_arrays(..) → load_arrays_conv(..) 그리고 웬만큼 중요한 코드 스니펫이 아니면 내용으로 넣지 않을 예정. 글이 너무 길어지고 가독성이 떨어진다는 게 내 생각이다.__init__(..) ac..
실행 진입점? 그냥 main(..) 함수라는 의미다. 이 역시 알만한 사람들일테니 명령행 인자가 어떻고, 파이썬은 조건문을 사용해서 어떻게 정의하고 이런 것은 생략한다. 코드 분석은 웬만하면 블록 단위(함수, 클래스, 반복문 등)으로 하되, 짧을 경우는 예외.1. 실행 진입점import argparsefrom scalesim.scale_sim import scalesimif __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument('-t', metavar='Topology file', type=str, default="../topologies/conv_nets/test..
SCALE-SIM이 뭔가요? SCALE-SIM은 Systolic CNN AcceLErator SIMulator의 약자이다. 쉽게 말해, CNN 연산을 가속하기 위해 Systolic array를 사용하는 것을 시뮬레이션 해볼 수 있는 도구다. 그럼 그 다음 질문으로,Systolic Array는 뭔데요? Systolic의 사전적 의미는 " 심장 수축의"이라고 하는데, 심장 박동이라고 생각하는 것이 편하다. 왜 그런 이름이 붙었나? 아래 그림에서 자홍색 유닛 내의 데이터가 사이클에 따라 인접한 유닛으로 퍼져나가기 때문. 그리고 인접 유닛으로 퍼져나가는 점이 SRAM read bandwidth 절약과 데이터 재사용에 도움이 된다. 여기까지 찾아와주신 분이라면 아마 이것 보다 더 많은 것을 이미 알고 계시리라 생..