제목
End-to-End Deep Learning of Optimization Heuristics
For Efficient AI
대학원 컴파일러 수업에서 ML을 이용하여 unroll and jam을 판별하는 모델을 학습을 하는 term project를 진행하였다. unroll and jam pass는 이름에서 알 수 있듯이 loop 최적화에 관련된 pass로 unroll 과 jam을 수행하여 innermost loop body의 병렬성을 증가시켜서 제한된 resource의 utilization을 증가시키는 최적화이다. 내 기억이 맞다면 O2 이상의 최적화 부터 적용되는데 opt의 debug를 통하여 볼때 생각보다 잘? 사용이 안된다. LLVM code를 보면 대부분 loop unroll과 loop fusion pass를 재활용하며 검사 정도만 하는데 이 때문에 da,lcssa,loop simplify가 조건을 만족하여도 unroll and jam pass가 동작되지 않는 경우가 많다.
git clone -b llvmorg-10.0.0 https://github.com/llvm/llvm-project.git llvm10
Ninja를 사용하면 컴파일 시간을 많이 단축할 수 있다.
cd llvm9
mkdir build
cmake -DLLVM_ENABLE_PROJECTS="clang;" -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=ON -G "Ninja" ../llvm
ninja
Logitech 마우스는 options 라는 소프트웨어를 기본적으로 제공하여 키맵변경 logitech flow 등 많은 기능을 사용할 수 있다. 그러나 options 가 mac과 windows에서만 제공하는 바람에 9만원이나 하는 마우스가 그냥 돌덩이가 되어버렸다. 그러나 역시 리눅스에서 사용할 수 있는 방법이 있었다.
최근 많은 디바이스가 멀티코어를 사용하며 많은 프로그램이 멀티코어, 멀티프로세서를 이용하도록 작성되고있다. 이러한 흐름에 맞추어 압축프로그램인 gzip
을 멀티코어를 사용하도록 개발하는 프로젝트인 pigz
를 이용하면 빠른 압축을 진행 할 수 있다.
Pdf 를 이미지로 변환해야할 일이 종종 있어 구글에서 검색되는 사이트를 이용하곤 하지만 많은 양의 pdf 를 변환해야 하거나 개인정보가 있는 데이터를 서버에 올리기 꺼림직 한 경우가 있다 이럴때 터미널에서 직접 pdf 를 변환해보자. pdftoppm 를 이용할 것이며 다음과 같이 변환 하면 된다.
pdftoppm filename.pdf output_name options
jupyter notebook에서 python3 를 실행하였는데 python2 커널이 계속 실행되었는데 아래외 같이 해결하면 된다.
ipython3 kernel install
references
void inplace_swap(int *x,int *y)
{
*y=*x^*y;
*x=*x^*y;
*y=*x^*y;
}
도커에서 이미지를 검색할시는 아래처럼 도커의 내장명령어를 사용하면 된다
docker search images
그런데 tag검색은 당연히 있을줄 알았는데 존재하지 않아서 당황스러웠다. 다행히도 찾는 방법이 존재하였다.
우분투 저장소 한국 미러(kr.archive.ubuntu.com)가 한번씩 죽는 경우가 있어서 다른곳으로 source를 바꾸어 보았다.
최근 많은 어플리케이션등은 컨테이너(container)를 통하여 관리 되고 있습니다. 컨테이너에는 코드와 실행에 필요한 소프트웨어 패키지가 담겨져 있으며 어떠한 환경이든 빠르고 안전하게(격리를 통하여) 실행할 수 있습니다.
지금것 wordpress를 이용하여 블로그를 운영했으나, 2021년 부터 Github blog로 이전을 합니다. 글을 쓰는 빈도가 높지 않았는데 열심히 써보도록 하곘습니다.