분류 전체보기(48)
-
C와 Python에서의 음수 나눗셈에 관하여
C에서는 -7 / 3 == -2이고, -7 % 3 == -1이다. 반면 Python에서는 -7 // 3 == -3이고, -7 % 3 == 2이다. 일반적으로 대수에서는 유클리드 나눗셈(Python 방식)을 따르는데, C와 Python에서 각기 다른 연산 방식을 따르는 이유가 궁금해졌다. C와 같이 나눗셈을 구현하려면 다음과 같은 추가적인 과정을 거쳐야한다. (둘 중 하나) shift right 연산 이후에 shift 되어 사라진 부분에 1이 하나라도 있으면 shift 이후의 결과값에 1을 더한다. shift right k 연산(>> k) 이전에 k개 자리만큼 1을 더해준다. Python에서는 아무래도 Python 용도의 특성상 modulo 연산을 대수에서 사용하는 것과 동일하게 구현을 한 것 같다. 반면..
2020.05.05 -
[ASPLOS 2020] PatDNN: Achieving Real-Time DNN Execution on Mobile Devices with Pattern-based Weight Pruning
Paper Link: https://arxiv.org/pdf/2001.00138.pdf 높은 성능의 모바일 기기들이 등장함에 따라서 데스크탑에서만 동작하던 딥러닝 어플리케이션들을 모바일에서 서빙할 수 있는 가능성이 열렸다. 이에 따라 모바일 딥러닝 inference를 위한 여러 연구들이 진행되고 있는데 이 논문 역시 그와 관련한 내용을 다룬다. 비록 모바일 기기의 computing power가 상당히 올라가긴 했으나, real-time inference를 가능케 하는 정도의 성능을 내긴 쉽지 않다. 그래서 weight pruning, quantization과 같은 경량화 방식을 적용하여 서빙하는 것이 일반적이다. 이 논문에서는 quantization은 다루지 않고 있고, pruning에만 초점을 두고 있..
2020.05.03 -
TensorFlow source 빌드 방법
텐서플로 internal source를 수정하고 컴파일하여 사용하고 싶은 경우엔 pip install을 통해서 설치하는 것이 아니라 source를 통해 빌드를 해서 사용해야 한다. https://www.tensorflow.org/install/source에 자세한 설명이 있지만 없는 내용을 포함해서 따로 정리를 해두려한다. # bazel 설치파일 다운로드 $ wget https://github.com/bazelbuild/bazel/releases/download/2.0.0/bazel-2.0.0-installer-linux-x86_64.sh # bazel 바이너리 파일이 설치될 폴더 생성 $ mkdir ~/bin $ echo export PATH=$HOME/bin:$PATH >> .zshrc # 패키지 종..
2020.04.14 -
AVX (Advanced Vector Extensions)의 개념과 사용법
2008년 인텔은 AVX (Advanced Vector Extensions)라는 새로운 고성능 ISA를 발표한다. 이는 기존의 SSE (Streaming SIMD Extensions)에 포함된 많은 operation들을 지원함과 동시에 더 빠른 속도로 더 큰 덩어리(chunk)의 데이터를 처리할 수 있는 혁신적인 기술이었다. 이 글에서는 intrinsic functions라고 불리는 특별한 C 함수들을 통해서 어떻게 AVX, AVX2를 이용할 수 있는지에 대해서 다룰 것이다. AVX 명령은 mov, add와 같이 어셈블리 명령어에 해당한다. 예를 들어 vaddps라는 AVX 명령은 두 operand를 더해서 그 결과를 세번째 레지스터에 저장한다. 그렇다면 AVX 명령을 사용하기 위해선 어셈블리어로 코딩을..
2020.04.07 -
Root 권한 없이 local에 CUDA 설치하기
Reference: https://stackoverflow.com/questions/39379792/install-cuda-without-root/51035145 공용 클러스터에서 작업을 하는 경우 system root에 설치된 CUDA와 현재 내가 필요한 버전의 CUDA가 일치하지 않을 수 있다. 이럴 경우에는 다음과 같이 로컬에 CUDA를 설치하고 환경변수 지정만 해주면 간단하게 해결할 수 있다. 1. 원하는 버전의 CUDA 다운로드 - CUDA 10.2: https://developer.nvidia.com/cuda-downloads CUDA Toolkit 10.2 Download × Join us for GTC Digital on Thursday, March 26th, where we will ho..
2020.04.06 -
PyTorch IR에 관하여
PyTorch IR Reference Link: https://github.com/pytorch/pytorch/wiki/PyTorch-IR PyTorch는 SSA 기반의 IR을 사용한다. In compiler design, static single assignment form (often abbreviated as SSA form or simply SSA) is a property of an intermediate representation (IR), which requires that each variable is assigned exactly once, and every variable is defined before it is used. Graph는 일반적으로 프로그램 representation에 ..
2020.03.05