목록분류 전체보기 (9)
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..

게재 정보성격: 저널저널명: IEEE TRANSACTIONS ON NEURAL NETWORKS AND LEARNING SYSTEMS, VOL. 33, NO.5, MAY 2022저자: Malu Zhang 외 10인요약Spiking Neural Network(SNN)은 생물학적으로 타당하고, 스파이크 활용 특성 덕분에 초저전력 이벤트 기반 처리에 유용SNN 역시 Artificial Neural Network(ANN)처럼 심층 구조를 통한 성능 향상을 기대할 수 있으나, 실제 훈련은 ANN이 하는 것을 그대로 적용할 수 없음본 연구에서는 이에 착안하여 다음과 같은 기여를 하였음:왜 기존 error Backpropagation(BP)는 DeepSNNs에서 잘 동작하지 않는가에 대한 탐구해당 문제를 해결하기 위한..

__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 절약과 데이터 재사용에 도움이 된다. 여기까지 찾아와주신 분이라면 아마 이것 보다 더 많은 것을 이미 알고 계시리라 생..

ABSTRACT 요약Systolic Arrays는 현재(2018년 기준) 밀집 행렬 곱셈 실행에 제공하는 효율성으로 인기가 높은 연산 기질(substrates) 중 하나이다.그러나 이에 대해 원리에 입각한 인사이트를 제공하기 위한 도구가 부족하다.본 연구는 SCALE-SIM을 제안하며, 이는 조작 가능하며 다양한 기능을 제공한다.I. INTRODUCTION(생략)II. MOTIVATION AND BACKGROUNDDNN이 다양한 분야에 적용되면서, 그에 따른 설계의 선택폭도 넓어졌다(e.g. 엣지 디바이스부터 데이터센터까지).중요한 것은 실용성으로, 각 설계에는 목적과 제약이 존재한다.CNN을 예로 들면, CNN의 레이어는 multi-dimensional kernel이기 때문에 이를 하드웨어에 매핑하는 ..

ABSTRACTSpiking Neural Networks(SNNs)은 에너지 효율성으로 각광받고 있으며, 다양한 훈련 방법이 연구됨훈련 과정은 기존 ANN 보다 연산 비용이 요구되지만, 이는 멀티프로세서를 통한 하드웨어 가속으로 해결 가능본 논문은 systolic array-based processors와 multiprocessor shceduling을 활용하여 inter-layer pipelining을 SNN 훈련 시 적용하는 것에 대해 제안한 최초의 논문임delayed gradients를 사용한 훈련은 예측 정확도에 약간의 영향을 줌반면, 훈련 시 가속 효과는 1.6 ~ 2배에 달하고 communication overhead는 0.5 미만이었음I. IntroductionSNN은 생물학적 뉴런을 모방하..