본문 바로가기

Master

(35)
[MS] TVM 들어가기 앞서, 딥러닝 모델을 특정 디바이스 상에서 효율적으로 동작시키기 위해서는, 동작시킬 딥러닝 모델을, 타겟 디바이스에서 최적의 속도와 정확도를 낼 수 있는 머신 코드로 변환해야합니다. 이러한 코드 변환 작업을 자동으로 지원해주는 도구를, ‘딥러닝 컴파일러’라고 합니다. 딥러닝 컴파일러 개념도 딥러닝 컴파일러는, 다양한 딥러닝 플랫폼에서 학습된 딥러닝 모델을 입력으로 받아, 특정 하드웨어에서 동작 가능한 머신 코드(또는, 백엔드 코드)를 자동으로 생성합니다. 최근 제안된 XLA, TVM, Glow 와 같은 딥러닝 컴파일러들은, TensorFlow, Pytorch, MxNet, ONNX 등의 프레임워크로 작성된 모델을 입력으로 하여, CPU 및 GPU 용 백엔드 코드를 생성하고 있습니다. CPU 용 ..
[MS] RISC-V 란 무엇인가 RISC-V는 확립 된 축소 명령 세트 컴퓨터 (RISC) 원칙을 기반으로하는 개방형 표준 명령 세트 아키텍처 (ISA)입니다. 대부분의 다른 ISA 디자인과 달리 RISC-V ISA는 사용 비용이 필요없는 오픈 소스 라이센스로 제공됩니다. 많은 회사에서 RISC-V 하드웨어를 제공하거나 발표했으며 공개 소스 운영 체제를 사용할 수 있으며 명령 세트는 널리 사용되는 여러 소프트웨어 툴체인에서 지원됩니다. 명령 집합 아키텍처가 중요한 이유 ISA는 어떻게 든 응용 프로그램을 결정합니다. 세계에서 가장 유명한 2 ISA는 X86과 ARM이라는 것이 상식입니다. 그들의 응용 분야는 완전히 다릅니다. 랩톱, 데스크톱 및 서버의 99 % 이상이 X86 또는 AMD64 ISA를 기반으로합니다. IP는 Intel 및..
Midtread Quantization 2. 균일 양자화 (Uniform Quantization), 선형 양자화 (Linear Quantization) ㅇ 특징 - 양자화 스텝 크기가 균일 함 - 대표값이 같은 개수의 양수와 음수로된 대칭적 레벨 구조를 갖음 - 라운드오프 에러(Round-off Error) = 양자화 스텝 크기의 절반 ㅇ 구분 - Midrise 양자화 (중앙 상승) . 짝수개 스텝으로 양자화 . 2(스텝수) 개의 서로 다른 코드를 갖게됨 . 출력 대표값 레벨에 0 없음 - Midtread 양자화 (중앙 억제) . 홀수개 스텝으로 양자화 (음수 및 양수 부분이 대칭적 구조를 갖음) . 2(스텝수)-1 개의 서로다른 코드를 갖게됨 . 출력 대표값 레벨에 0 있음 스칼라 양자화 [정보통신기술용어해설] www.ktword.co.kr
HCLK, FCLK, PCLK [이론] FCLK, HCLK, PCLK란? ​우선 공통적으로 포함되는 CLK는 Clock을 의미한다.일정 주기마다 발생하는 클럭에 따라인의적인 신... blog.naver.com
UART 통신 이론, stop, start bit NONE Parity bit, 8 Data bit, 1 Stop bit N,8,1의 의미는 패리티 비트는 없고 데이터 비트는 8, 스톱 비트는 1로 총 9개의 비트가 한문자를 표현한다는 뜻이다. 여기에 표시는 안 하지만 시작 비트 1개를 더해 총 10개의 비트가 한문자를 표현하게 된다. 한문자가 10개의 비트로 구성되면 초당 960 문자를 주고받을 수 있다는 뜻이다. 장치에서는 104 µs 시간 간격으로 전압을 10회 측정하여 시작 비트(Start bit), 종료 비트(1 Stop bit)를 버리고 8개의 비트로 ASCII 테이블에 대입해 문자를 확인하게 된다. "A" ASCII 테이블에서 보면 숫자 65이며 이를 16진수로 변환하면 41이고 이를 이진수로 환산하면 0100 0001 이 된다. 여기에 시..
시리얼 통신 기초 (Serial Communication) Hardware Implementation앞선 내용들은 시리얼의 개념에 대한 내용이었습니다. 여기서는 시리얼의 하드웨어 구현, signal level 에서 살펴봅니다. (RS-232, logic-level (TTL)) 마이크로 컨트롤러나 low-level IC 의 경우 TTL (transistor-transistor logic) level 에서 시리얼 통신을 구현합니다. TTL serial signal 은 마이크로 컨트롤러의 동작 전압에 의해 변화하는데 보통 0V ~ 3.3V 또는 5V 입니다. VCC level (3.3V, 5V, etc.)의 signal의 경우 idle 상태를 의미하며 bit 값으로는 1로 표현됩니다. 이 값은 stop bit 의 값(1)과 같습니다. 0V (GND) signal 은 ..
Quantization Quantization (signal processing) - Wikipedia From Wikipedia, the free encyclopedia Jump to navigation Jump to search Process of mapping a continuous set to a countable set The simplest way to quantize a signal is to choose the digital amplitude value closest to the original analog amplitude. This exa en.wikipedia.org Introduction to quantify neural network - Programmer Sought Originally appeared..
im2col thumbs.gfycat.com/AshamedSkinnyAndalusianhorse-mobile.mp4
MSP와 PSP You are correct in a way, in the cortex m (which your stm32 is, though I can't say which variant unless you specify a part) there is one active stack pointer r13, this can however be either the MSP or PSP. The reason for two is to enable the user to easily implement a multi tasking 'operating system'. The idea is that the PSP or process stack pointer is used by the individual tasks, and the kern..
ISR(Interrupt Service Routine) 폴링이 대상을 주기적으로 감시하여 상황이 발생하면 해당처리 루틴을 실행해 처리한다면, 인터럽트는 상대가 마이크로프로세서에게 일을 처리해 달라고 요청하는 수단이다. 따라서 폴링과 대비되는 개념이다.[4][5] 폴링은 주기적으로 마이크로프로세서가 상태를 파악하기 위해 장치의 레지스터를 읽어야 한다. 이 작업이 진행되는 동안은 다른 장치는 체크가 힘들다. 그리고 이런 작업은 장치의 상태를 읽는데 마이크로프로세서의 자원이 낭비된다.[6] 마이크로프로세서의 다른일과 겹쳐 폴링이 고속의 하드웨어에서 데이터 손실될 여지가 있다면, 인터럽트는 해당 하드웨어가 CPU에게 요청하므로 빨리만 처리된다면 데이터 손실 위험이 작아진다. 폴링은 리얼타임에 문제의 소지가 있다면, 인터럽트는 필요할 때 처리되는 경향이 있어서 폴링보..
Interrupt (인터럽트), Exception (예외) Interrupt (인터럽트) : 제어 흐름에서 예상치 못한, 외부에서 전달되는 사건. Exception (예외) : 프로세서 내부에서 발생하는 예상치 못한 사건. 일부 architecture 에서는 exception과 interrupt를 interrupt 로 통합하여 용어를 사용하기도 하는 반면, 다른 architecture에서는 구분하여 사용하기도 한다. 구분할 경우 외부 인터럽트는 인터럽트로, 내부 인터럽트는 예외로 생각하면 된다. - 내부 인터럽트 (Internal interrupt) - exception . SVC (SuperVisor Call) 인터럽트 : 외부의 프로그램이 의도적으로 호출. 예를 들어 다른 프로세스 수행 중 새로운 프로세스를 실행하면 자원 할당 등의 동작을 수행 . 산술 오버..
HAL 라이브러리 HAL 라이브러리 구성 소스파일은 단순히 cubeMX에서 PG13(Green LED)을 Output으로 TrueSTUDIO로 Generate한 코드다. TrueSTUDIO의 첫화면은 다음과 같다. HAL 라이브러리를 사용하면서, main.c에서는 단순히 main.h 헤더를 불러오게.. noel-embedded.tistory.com
Pull up, Pull down 풀업(Pull-up), 풀다운(Pull-down)장치 개요 아두이노를 사용하다 보면 전류를 제어하는 기능을 사용하거나 버튼을 만들때 스위치를 사용해야 할 경우가 많이 생깁니다. 버튼식 스위치는 버튼 상태에 따라 다르게 출력되는 값을 통해 kocoafab.cc
GPIO [STM32 HAL] GPIO Referencehttps://leanpub.com/mastering-stm32https://github.com/eziya/STM32F4_HAL_EXAMP... blog.naver.com
keil 프로젝트 생성 KEIL uVision 5 에서 프로젝트 생성. 타겟칩의 예로 STM32를 사용함. 개요. 본 글은 KEIL uVision 5 (KEIL MDK-ARM)에서 프로젝트 생성하는법과 main.c 를 만들어 두는 것까지 정리한다. 예로 사용되는 대상칩은 STM32F407Z로 한다. 1. KEIL uVision 5 에서 프로젝트 생성하기. 단계.. igotit.tistory.com
lhs, rhs 연산자 함수를 만들 경우 함수의 매개변수를 적어줄때 변수 이름으로 lhs(Left Hand Side) 와 rhs(Right Hand Side) 를 많이 사용한다. 매개변수가 두개일 경우 첫번째 매개변수에 lhs, 두번째 매개변수는 rhs 로 사용하고 매개변수가 하나일 경우 rhs 로 대부분의 개발자들이 많이 쓰고있다. 여기서 궁금한 것 한가지 나라면 매개변수가 하나일땐 lhs 로 사용할것 같다는것이다. 왜냐하면 사람이 글을 쓸때 왼쪽부터 오른쪽으로 쓴다. 코드도 한줄만 보면 왼쪽에서 오른쪽으로 짠다. class CBase 이것만 봐도 시작은 맨 왼쪽의 c 이다. 그렇다면 첫번째 매개변수는 lhs 로 사용 하는게 더 맞는것이 아닐까 ? 왜 대부분의 사람들은 rhs 로 사용을 하고있을까 그 이유가 궁금해졌다..
ARM assembly ARM 명령어 공부 ipad2에는 A5라는 CPU가 탑제되어 있습니다 ARM 회사에서 만들었기 때문에 리버싱을 하려면 당연히 ARM CPU에 대해서 적당한 지식이 있어야합니다. 여기선 조금씩 알아보고 더욱 자세한 내용은 ARM CPU ezbeat.tistory.com
ARM Neon ISA 카이제곱 vision0814.tistory.com ARM NEON 优化 原贴:ARM NEON Optimization. An Example将RGB图像转为灰度图,作者运用NEON优化,速度大幅提升。这里来学习一下如何使用NEON。 Since there is so little information about NEON optimizations out there I tho… zhuanlan.zhihu.com
UART 와 USART의 차이 UART (Universal Asynchronous Receiver Transmit) : 비동기 모드로서 사용되는 시리얼통신 USART (Universal Synchronus Receiver Transmit) : 동기 모드로서 사용되는 시리얼통신 # UART 와 USART의 차이 = 동기와 비동기 모드의 차이 동기 모드는 데이터 동기화를 위해 별도의 클록 신호를 전송한다. AVR에서 데이터 동기화를 위한 클록 신호는 XCK 핀을 통해 전달된다. 동기 모드에서는 비동기 모드에서 데이터 동기화를 위해 사용하는 시작 비트(start bit)와 정지 비트(stop bit)는 필요하지 않으므로 데이터 전송 효율을 높일 수 있는 장점이 있지만, 클록 핀을 필요로 하는 단점이 있다. 비동기 모드는 별도의 클록을 사용..
UART, USART 실습 kangssu.com/wed07/post/2016-10-14-7%EC%A1%B0-6%EC%A3%BC%EC%B0%A8-%EC%8B%A4%ED%97%98.html 7조 6주차 실험 개요 비동기(UART) 통신에 대해서 알아보는 실험이다. 다른것으로 USART 가 있는데 이것은 동기화 통신이라고 UART, 즉 비동기까지 지원하는 통신방법이다. 이번 실험에서는 UART 를 이용하여 테스트 kangssu.com
Baud Rate, Bit Rate란? 1. Bit Rate Bit Rate는 초당 데이터 비트(0 or 1)를 얼마만큼 전송할 수 있는지 나타내는 값. BPS(Bit Per Second)로도 나타냄. PCIe나 버스의 데이터 전송 속도를 나타낼 때 주로 사용 2. Baud Rate 전기통신 및 전자공학에서 보(baud, 단위 기호 "Bd")는 초당 펄스 수 또는 초당 심볼 수를 뜻한다. Baud Rate는 초당 많은 심볼(Symbol, 의미 있는 데이터 묶음)을 얼마만큼 전송할 수 있는지 나타내는 값. Teraterm 같은 시리얼 통신에서 115200과 같은 수치로 사용 1 킬로 보(kBd)=1,000Bd 의 전송 속도는 초당 1,000심볼의 심볼 속도와 같다. 심볼이 ascii code 라면, 1 baud는 8bit이다. ※ 보오는 1초당..
NCHW, NHWC, CHWN By default, TensorFlow uses NHWC format, and most of the image loading APIs, such as OpenCV, are using HWC format. It is naturally compatible with TensorFlow to most of the image loading APIs, so I have been using NHWC format brainlessly for a long while. I believe I had also seen that NCHW is more efficient compared to NHWC when cuDNN is used somewhere. Tensor Physical Layouts on Memory Hello U..
Darknet YOLO를 실행시키기 위해서는 Darknet이 필요하다. Darknet은 Joseph Redmon이 독자적으로 개발한 신경망 프레임워크(neural network framework)로서 dnn(deep neural network)들을 학습시키고 실행시킬 수 있는 틀(framework)이다. 그리고 yolo는 학습된 신경망(결과물) 중 하나이다. Darknet을 이용하면 yolo 뿐만 아니라 AlexNet, VGG-16, Resnet, Densenet 등 기존의 정통 주류의 dnn(deep neural network)들도 돌려 볼 수 있다. 위 과정까지 마무리 되었다면 Darknet 및 YOLO의 설치는 끝났다. git에서 다운받은 Darknet에는 예제로 주어진 딥러닝 모델과 weight들이 제공되고 있..
VTA(Versatile Tensor Accelerator ) §The Versatile Tensor Accelerator (VTA) is an extension of the Apache(incubating) TVM framework designed to advance deep learning and hardware innovation. §VTA is a programmable accelerator that exposes a RISC-like programming abstraction to describe compute and memory operations at the tensor level. §VTA to expose the most salient and common characteristics of mainstream deep learning accelerat..
FPGA ( field programmable gate array ) FPGA(field programmable gate array, 필드 프로그래머블 게이트 어레이)는 설계 가능 논리 소자와 프로그래밍이 가능한 내부 회로가 포함된 반도체 소자이다. 설계 가능 논리 소자는 AND, OR, XOR, NOT, 더 복잡한 디코더나 계산기능의 조합 기능같은 기본적인 논리 게이트의 기능을 복제하여 프로그래밍할 수 있다. 대부분의 FPGA는 프로그래밍 가능 논리 요소 (FPGA 식으로는 논리 블록이라고도 함)에 간단한 플립플롭이나 더 완벽한 메모리 블록으로 된 메모리 요소를 포함하고 있다. 프로그램이 가능한 내부선 계층구조는 FPGA의 논리블록을 시스템 설계자가 요구하는 대로 단일 칩 프로그래밍가능 브레드보드처럼 내부연결을 할 수 있다. 이 논리블록과 내부선은 제조공정 이후에 소비자..
프로세서 기술 마이크로 오퍼레이션 - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전. ko.wikipedia.org
micro-operations, micro-ops, μops, 마이크로 조작, 마이크로 연산 컴퓨터 중앙 처리 장치에서 마이크로 오퍼레이션(micro-operations, micro-ops, μops, 마이크로 조작, 마이크로 연산)은 일부 디자인에서 복잡한 기계어를 구현하기 위해 사용되는 세세한 저급 명령어이다. (이 문맥에서 매크로 명령이라고 부르기도 한다)[2]:8–9 일반적으로 마이크로 오퍼레이션은 하나 이상의 레지스터에 저장된 데이터의 기초적인 오퍼레이션을 수행하며, 여기에는 CPU 레지스터 간 또는 레지스터와 외부 버스 간 데이터 전송, 그리고 레지스터의 산술 또는 노리 오퍼레이션 수행이 포함된다. 일반 페치-디코드 실행 주기에서 매크로 명령의 각 단계는 실행 중에 분해되므로 CPU는 일련의 마이크로 오퍼레이션을 통해 결정하고 진행한다. 마이크로 오퍼레이션의 실행은 CPU의 제어 장치..
ILP( instruction level parallelism ), TLP( thread level parallelism ) - Thread Level Parallelism (TLP): Multi-Threading => 프로그램 전체에서, 수행하는 기능에 따라 쓰레드를 구분하고, 그 중 서로 independent한 쓰레드들을 병렬적으로 수행하는 것을 의미한다.​ => TLP explicitly represented by the use of multiple threads of execution that are inherently parallel => Use multiple instruction streams to improve Throughput of computers that run many programs Execution time of multi-threaded programs (Latency가 향상되는 것은 아니다) ※ ..
tiling, blocking, batching A survey of techniques for optimizing deep learning on GPUs The rise of deep-learning (DL) has been fuelled by the improvements in accelerators. Due to its unique features, the GPU continues to remain the most … www.sciencedirect.com
sudo 사용 문제점 응? sudo 쓰지 말라고? sudo를 통해 문제를 해결했지만, 올바른 해결책인가 싶은 느낌이 들기 시작했습니다. 그래서 디버깅을 시작해보았습니다. 가장 먼저, PermissionError가 왜 발생하는지 살펴보는 것으로 시작했습니다. 문제: admin은 /usr/local/…에 파일을 쓸 권리가 없다. pip3 install의 default 설치 경로는 다음과 같습니다. /usr/local/bin/python3.6 문제는, 해당 경로에 파일을 쓰거나(write) 변경할(edit) 권리(privilege)가 저에게는 없다는 점입니다. 이 때의 저는 administrator(이하 admin으로 쓰겠습니다)입니다. admin이 무엇이고, 왜 일반 admin에게는 읽고 변경할 권리가 없는 지에 대해서는 잠시 ..