전체 글

전체 글

    Dijkstra Algorithm

    다익스트라 알고리즘(Dijkstra Algorithm)은 어떤 변도 음수 가중치를 갖지 않는 유향 그래프에서 주어진 출발점과 도착점 사이의 최단 경로 문제를 푸는 알고리즘이다. 기본 로직은 출발점을 기준으로 연결되어 있는 정점들을 추가해가며, 최단 거리를 갱신하는 것이다. 위와 같은 그래프가 있다고 가정하며 출발점은 1번 정점이다. 이 중에서 경로가 가장 짧은 정점을 고르면 2, 3번 점이 된다. 2번 점부터 확인해보면, 2번 점의 최단 거리를 가지고 있는 현재 최단거리 (INF)와 1번 점의 최단거리(0) + 1~2번의 가중치(4) 값 중 가장작은 값으로 갱신한다. 코드로 만들면 다음과 같다. --> dist[2] = min(dist[2],dist[1]+adj[1][2]) 따라서 min(INF, 4)이..

    추가 HDD 마운트하는 방법

    음... 필자는 최근에 블록체인 네트워크에 관해 공부를 하고 있는데 Geth라는 Ethereum client가 있다. 이 클라이언트는 Go 언어로 작성된 Ethereum client 로서 ethereum network에 있는 블록들을 가져오는 역할을 수행하기도 한다. 참고로 그 블록이 현재 2019년 08월 기준 70GB 가 초과하고 있는 실정이라 C 드라이브에 저장하기엔 다소 한계가 있었다. 따라서 오늘은 기존 사용하고 있던 서버 컴퓨터에 추가로 HDD (1TB) 를 장착하고 Ubuntu 환경에서 마운트 해주는 방법에 대해 포스팅을 해볼까 한다. 1. 하드디스크 확인 먼저 하드디스크를 서버에 부착하고 시동을 거는 과정은 생략한다. sudo fdisk -l fdisk 명령어로 현재 시스템에 연결되어 있는..

    CNN, Convolutional Neural Network에 관하여 (1)

    이번 포스팅은 CNN의 개념에 대해 정리해보았다. 포스팅에 앞서, 아래 참고문헌이 상당히 요약이 잘 되어 있어서 해당 참고문헌을 토대로 내가 이해한 개념대로 작성해보려고 한다. 참고문헌 : http://taewan.kim/post/cnn/ CNN, Convolutional Neural Network 요약 Convolutional Neural Network, CNN을 정리합니다. taewan.kim Input 값 (숫자 3) 은 한장의 컬러 사진이며 이는 3차원 데이터다. 하지만 Fully Connected Layer 만으로 구성된 인공 신경망의 입력데이터는 1차원 (배열) 형태로 한정된다. ※ Fully Connected Layer : 이전 레이어의 모든 노드가 다음 레이어의 모든 노드에 연결된 레이어를..

    ipTime 공유기에서 포트포워딩하는 방법

    오늘은 ipTime 공유기에서 포트포워딩하는 방법에 대해 포스팅 해보겠다. 필자는 집에 서버용 PC를 놔두고 원격 데스크톱을 자주 쓰는 사람이기 때문에 포트포워딩이 절실하다. 먼저 포트포워딩에 앞서 자신의 PC ip부터 알아야 하는데, 요새는 웹 브라우저에서도 쉽게 확인할 수 있다. 네이버에서 "내 ip" 치면 쉽게 나온다. 근데 포트포워딩을 하기전에 외부 ip와 내부 ip의 개념을 이해하고 있어야 한다. 외부 ip라는 것은 말그대로 외부에서 내 pc로 접속하기 위한 주소. 내부 ip는 공유기 또는 스위치에서 발생하여 설정된 ip주소다. 따라서, 저기 보이는 ip 주소가 정말 외부에서 내 pc로 접속하는 주소일까? 반드시 그런 것은 아니다. 만약에 자신의 현재 PC가 공유기나 스위치와 맞물려있는 PC라면..

    Ubuntu에 원격 데스크톱(Xrdp) 설치하기

    일단 포스팅에 앞서 Ubuntu는 xrdp의 접속 시에 원격 데스크톱 환경을 바로 지원해 주지 않는다. 따라서 추가적으로 데스크톱 환경을 지원해주는 xfce4 라는 것을 설치해주어야 한다. ※ 추가적으로 외부에서 접속하고 싶으시면 공유기 포트포워딩이 꼭 필요하니 아래 포스팅을 참고해주세요. ipTime 공유기에서 포트포워딩하는 방법 1. xrdp 패키지 설치 sudo apt-get install xrdp -y 위처럼 최초 접속을 한다고 해도 아마 튕길 것이다. 그렇기 때문에 xfce4를 추가적으로 설치해줘야 한다. 2. xfce4 설치 sudo apt-get install xfce4 -y 3. startwm.sh 변경 sudo nano /etc/xrdp/startwm.sh 맨 아래와 같이 /etc/X11..

    Scalability Issue를 해결하기 위한 Off-chain 솔루션 - Raiden Network (1) Geth 설치/운영

    가상 환경에서 실행해도 되나 본 포스팅은 개인 노트북에 멀티 부팅 (Linux & Windows) 환경을 구축하고 Linux 환경에서 진행하였다. OS는 Ubuntu 18.04.LTS. 자세한 것은 go-ethereum git을 참고 사양은 크게 요구되지 않으나 추후 실습이 진행되면 Geth 클라우드 서비스인 Infura나 Ganache를 사용할 예정. 1. git 설치 후 go-ethereum 소스 가져오기 sudo apt-get install git -y mkdir ethereum cd ethereum git clone https://github.com/ethereum/go-ethereum.git ll cd go-ethereum sudo apt-get install -y build-essential ..

    Deep Learning 프레임워크의 종류

    Machine Learning 및 예측 분석은 현대 비즈니스에 수립되고 필수적인 요소이지만, AI 분야에서 그 규모를 가능한 최대로 확장한다. 즉, 다시말하여 Deep Learning이 가능하도록 구성하는 것이다. Deep Learning이 매우 복잡한 문제를 해결함과 동시에 정교한 기술을 필요로 하는 작업을 수행할 수 있다면 이러한 Deep Learning이 보다 원활하게 작업이 수행될 수 있는 환경을 구축하는 것이 데이터 과학자와 해당 분야 엔지니어들에게 큰 과제가 된다. 따라서 이 Deep Learning을 지원하는 프레임 워크는 모두 다른 목적으로 제작이 되었지만 그 고유한 기능은 같게 제공한다. 1. TensorFlow Google 팀에서 개발했으며 2015년 오픈소스로 공개되었다. AI 분야 ..

    Xilinx Benchmark 예제 코드 실행해보기

    Download the Imagenet Validation Set (약 6.3 GB 인데 6시간 이상 걸리니 미리 다운로드 요망) wget -c http://www.image-net.org/challenges/LSVRC/2012/nnoupb/ILSVRC2012_img_val.tar Running Caffe Classification Benchmark Models # Make sure to untar your downloaded validation set: cd //// mkdir imagenet_val tar -xvf ILSVRC2012_img_val.tar -C imagenet_val # Make a copy of the data set for manipulation cp -rf imagenet_val..

    AVX (Advanced Vector eXtensions) 란?

    AVX는 Advanced Vector eXtensions의 약자로 2008년 4월 인텔 개발자 포럼에서 x86 SIMD Instruction Set로 SSE Instruction Set series의 후속작이다. 2011년에 출시된 Intel SandyBridge microarchitecture 부터 최초로 지원된다. AVX2는 Intel Haswell Microarchitecture (2013년 6월 출시) 부터 지원이 된다. 대부분 벡터 정수 SSE와 256비트 AVX 명령어가 확장되었고, AVX에서 지원하지 않았던 범용 레지스터에서의 3 피연산자 덧셈/곱셈 연산을 지원하며, FMA 3과도 호환된다. 또한 벡터 주소 방식을 지원하고 벡터 요소의 비 연속 메모리 위치의 로드를 지원하며 벡터 시프트도 가..

    Xrdp를 사용한 원격 데스크톱 설정 (Windows에서 CENT OS로)

    이번 포스팅은 Xrdp를 사용하여 원격 데스크톱을 설정하고자 한다. 먼저 EPEL repository를 설치하고 xrdp와 vnc 서버를 설치한다. yum install epel-release -y yum –y install xrdp tigervnc-server 이후 xrdp를 서비스로 등록 (재부팅될 때마다 꺼지면 안되기 때문에 enable로 사용) 만약, 한번만 실행하고 싶다면 enable 대신 start를 사용하면 된다. systemctl enable xrdp.service 자, 이제 포트를 변경해보자. 기본포트는 3389로 잡혀있는데, 회사에서 사용하거나 연구실에서 사용하면 분명 방화벽 문제가 존재할 수 있다. sudo nano /etc/xrdp/xrdp.ini # port=3389 --> 533..

    FPGA 기반의 Xilinx Alveo Card U200 장착 및 드라이버 설치과정

    ※ 글쓰기에 앞서 Dell PowerEdge R720 모델에서 Xilinx Example을 돌리려고 하면 오류가 많이 발생합니다. 오류가 발생하는 원인에 대한 포스팅은 아래 글들을 참고해주세요.) 참고 1 - AVX (Advanced Vecter eXtension) 란? AVX (Advanced Vector eXtensions) 란? AVX는 Advanced Vector eXtensions의 약자로 2008년 4월 인텔 개발자 포럼에서 x86 SIMD Instruction Set로 SSE Instruction Set series의 후속작이다. 2011년에 출시된 Intel SandyBridge microarchitecture 부.. corona-world.tistory.com 으어어 오늘은 Xilinx ..

    Hdf5 형식 파일이란 ?

    Xilinx ML Suite의 Benchmark 예제를 돌리던 중 Hdf5 형식의 파일들이 빈번하게 보여서 이번에 한번 제대로 알아보고자 한다. 먼저 자세한 사항은 아래 링크를 참고하면 이해하는데 도움이 될 것이다. https://www.hdfgroup.org/hdf5/ 그럼 이제 Hdf5 형식에 대해 알아보자. Hdf5 파일 형식은 계층적 데이터 형식 (Hierarchical Data Format, HDF)는 HDF Group에 의해 관리되고 있는 대용량의 데이터를 저장하기 위한 파일 형식을 일컫는다. HDF5 is a data model, library, and file format for storing and managing data. It supports an unlimited variety of..

    Floating Point Precision (부동 소수점) 과 Fixed-point Precision (고정 소수점)

    오늘은 Machine Learning와 관련된 포스트다. Floating Point Precision과 Fixed-point Precision의 차이에 대해 알아보고자 한다. 먼저, Pascal GPU (and CUDA 8)에선 16bit FP (Floating Point)와 8/16bit INT (Integer) 연산이 가능하다. 특히 AI와같은 HPC (High-Performance Computing) 계열 어플리케이션에선 높은 정밀도가 요구되는 연산이 필요하기 때문에 32bit (FP16, Single Float) 또는 64-bit (FP64, Double Float) FP 연산을 사용한다. 일부 어플리케이션에선 128bit, 256bit FP연산을 사용하기도 한다. 하지만, Machine Lear..

    디카페인 커피란 ? 디카페인 추출 방식을 중심으로

    오늘은 IT 기술 블로그와는 걸맞지 않게 디카페인이라는 새로운 주제로 글을 쓰고자 한다. 음...그 이유는 내가 요즘들어 커피를 하루에 3잔 이상 마시기 때문이지 (아침 1잔, 점심 1잔, 오후 4시쯤 1잔) 그덕에 매일 밤마다 피곤해도 불면증에 시달려서 커피를 끊고자 했으나 커피없이는 내 일상생활은 너무 무기력했기에 새로운 방안을 모색하였다. 그것은 바로 "디카페인 커피 (Decaffeineated Coffee)" 가난한 대학원생인 나는 인턴십하는 기관 내에서 네스프레소 머신이 있지만 네스프레소 당사의 캡슐은 나에겐 너무나 비싸서 저렴한 가격에 네스프레소 호환 캡슐을 구매했다. 그 이름 하여 탐앤탐스 캡슐 벨루타토, 소아베 위메프에서 한 박스당 5,800원에 판매해서 얼른 구매했다. 요렇게 생긴 녀석이..

    Cuda (쿠다) 란? 사용 이유를 중심으로

    Computed Unified Device Architecture (CUDA) 는 NVIDIA 사에서 개발한 Graphic Processing Unit (GPU) 개발 툴이다. 역사를 거슬러 올라가자면 2006년부터 시작된다. 2006년 NVIDIA가 처음으로 Fermi Architecture를 발표하면서 CUDA가 출현하게 되었다. 따라서 이로인해, GPU 프로그래밍이 어려웠던 기존 상황에 대비하여 CUDA의 등장 후엔 대다수의 프로그래머들이 GPU 프로그래밍을 시작하게 되었다. 이 CUDA를 그럼 왜 쓰는 걸까? 이유는 이렇다. 많은 양의 연산을 동시에 처리하기 위해. 기존 컴퓨터 연산은 CPU을 사용했다. 이 말인 즉슨, RAM (Random Access Memory)에 있는 데이터를 연산했다. 그..

    Docker란 ? VM과 차이, Docker 설치 및 기본 명령어를 중심으로

    Docker는 컨테이너 기반의 오픈소스 가상화 플랫폼이다. 이 Docker라는 것은 상당히 특이한데, 기존의 VM (Virtual Machine)은 특정 Hardware의 Resource를 할당하여 동작시켰지만 Docker는 VM과 다르게 OS (Operating System; 운영체제)를 가상화하여 동작한다는 것이다. 이게 대체 무슨 말이냐... 일단 가상화 기술에 대해서 먼저 알아봐야겠지? 가상화 기술이란 것은 물리적인 하드웨어 자원(CPU, Memory 등)을 논리적인 리소스로 제공하기 위한 기술이라고 일컫는다. 말그대로 물리적인 Machine에 실제 Machine처럼 보이게 만드는 기술, 즉 논리적인 Machine이라고도 하는데 이 가상화 기술도 크게 3종류로 나눌 수 있다. 호스트 OS형 호스트..

    Raspberry pi 3와 Camera Module & Arduino DHT-11 Module을 사용한 실시간 실내 환경 스트리밍 서비스 구현 (1)

    본 포스팅은 총 세 단계로 구분되어 포스팅 하였습니다. 참고하세요 Raspberry pi 3와 Camera Module & Arduino DHT-11 Module을 사용한 실시간 실내 환경 스트리밍 서비스 구현 (1) Raspberry pi 3와 Camera Module & Arduino DHT-11 Module을 사용한 실시간 실내 환경 스트리밍 서비스 구현 (2) Raspberry pi 3와 Camera Module & Arduino DHT-11 Module을 사용한 실시간 실내 환경 스트리밍 서비스 구현 (3) I introduced our lab to the students of Daesan High School on July 11th. I needed something to demonstrate..