본문 바로가기

전체 글

(37)
MAPS Multi-agent Reinforcement Learning-based Portfolio Management System 리뷰 MAPS Multi-agent Reinforcement Learning-based Portfolio Management System Deutsche Bank 보고서에 따르면 주식 시장에서 자동화된 초단타 거래의 점유율이 미국에서 총 50%를 차지하고 있다고 합니다. 이러한 거래에는 알고리즘 트레이딩 시스템에 많은 거래들이 결정됩니다. 데이터 분석을 기반으로 decision-making과정을 quantitative trading 전략이라고 합니다. 양적 거래 전략은 두가지로 나누어집니다. 펀더멘탈 분석 방법과, 기술적 분석 방법으로나뉩니다. 펀더멘탈 분석은 회사의 재무제표, 경영, 경쟁적 우위, 경쟁자, 시장 등을 분석합니다. 기술적 분석은 과거 가격, 차트 및 거래량과 같은 기술적 신호를 기반으로 합니다..
Ubuntu 16.04 Server에서 CUDA 9.0 + CUDNN 7.1 + Anaconda 설치 Ubuntu 16.04 Server에서 CUDA 9.0 + CUDNN 7.1 _ Anaconda 설치 설치순서 1. CUDA 2. CUDNN 3. Anaconda 설치하시기 전에 버전확인 먼저 하시고 설치 최신버전 추가 1. CUDA 9.0 설치 https://developer.nvidia.com/cuda-90-download-archive?target_os=Linux&target_arch=x86_64&target_distro=Ubuntu&target_version=1604&target_type=deblocal local version 파일을 다운받아서 하는 방법이다. patch 파일도 cuBLAS관련해서 세개나 있어서 각각 업데이트 해줘야 한다. #본 파일 cuda-repo-ubuntu1604-9-0-..
Ubuntu 16.04 Server 에서 NVIDIA Driver 설치 Ubuntu 16.04 Server 에서 NVIDIA Driver 설치 # cat /proc/driver/nvidia/version cat: /proc/driver/nvidia/version: No such file or directory # lspci -k01:00.1 Audio device: NVIDIA Corporation Device 10f0 (rev a1)Subsystem: Gigabyte Technology Co., Ltd Device 377eKernel driver in use: snd_hda_intelKernel modules: snd_hda_intel # apt-get update && apt-get install -y dialog language-pack-en # export LANGU..
Mecab-ko 설치하기 mecab-ko소개 mecab-ko은 오픈 소스 형태소 분석 엔진인 MeCab을 사용하여, 한국어 형태소 분석을 하기 위한 프로젝트입니다. 말뭉치 학습과 사전 목록 일부는 21세기 세종계획의 성과물을 사용하였습니다. mecab-ko-dic은 21세기 세종계획 모든 현대 말뭉치에서 50문장씩을 추출하여 학습에 이용하였습니다. (총 23,615 문장) mecab-ko은 아파치 라이센스 2.0에 따라 소프트웨어를 사용, 재배포 할 수 있습니다. 설치 및 사용 Anaconda 환경상에서 설치하는 과정입니다. $ pip install konlpy $ sudo apt-get install curl $ bash >> from konlpy.tag import Mecab >>> mecab = Mecab() Traceba..
OpenMP 동기제어 지시어 OpenMP 동기제어 멀티스레딩으로 프로그램을 제작할 때, 자주 발생하면서도 찾기 어려운 것이 동기화로 인해 발생하는 문제이다. OpenMP는 병렬영역에서 데이터 액세스 동기나 코드 실행의 동기를 제어하는 지시어를 지원한다.master, atomic, critical, barrier, taskwait, flush, ordered 지시어가 있는데 각각 지시어들의 사용법과 특징을 알아본다. 1. master 지시어스레드 팀에서 마스터 스레드에 의해서만 해당 코드가 실행되도록 한다.#pragma omp master 지시어는 암시적 동기화를 지원하지 않기 때문에, 다른 스레드들은 이후에 나오는 코드를 수행하게 된다. 마스터 스레드의 처리 완료때 까지 대기하려면 barrier 지시어를 사용해야 한다. 2. bar..
OpenMP 작업 분할(Work Sharing) 지시어 작업 분할(Work Sharing) 지시어 수행해야 할 작업들을 생성된 스레드 팀에 적절하게 배분하여, 병렬 수행하도록 지정하는 지시어를 작업 분할 지시어라고 한다. for 지시어, sections 지시어, single 지시어, task 지시어가 있다. 1. for 지시어for 지시어는 #pragma omp parallel 영역 안에서 사용되며, #pragma omp for 지시어 다음에 오는 for루프 문을 병렬화 한다.for 루프 문을 수행할 때 작업을 배분해주는 양이나 방법을 정하는 규칙을 스케줄(schedule)이라고 한다. for 루프 문의 디폴트 스케줄은 static으로 반복 루프 수행할 총 횟수를 스레드에 개수로 나누어 스레드 별로 동일하게 배분해준다. 문법#pragma omp for [보조..
OpenMP 지시어(Directive) OpenMP 지시어 OpenMP지시어의 사용법을 익히면 생성된 멀티 스레드를 더 자유롭게 제어하고 순차 프로그램보다 훨씬 뛰어난 성능을 얻을 수 있다.OpenMP 지시어는 #pragma omp 구문 이후에 단독으로 지시어를 사용하여 병렬처리에 대한 주된 활용을 지정할 때 사용한다. 스레드의 병렬영역, 작업 분할, 실행 순서, 동기화와 같은 큰 흐름을 정의한다. (1) 병렬처리 제어OpenMP에 의한 병렬 영역을 정의한다. - 병렬영역(Parallel Regions) 지시어#pragma omp parallel 지시어 - 작업분할(Worksharing) 지시어#pragma omp for 지시어 #pragma omp sections 지시어#pragma omp single 지시어#pragma omp task 지..
OpenMP 스레드 메모리 공간 이해하기 스레드 메모리 공간 각각의 객체는 고유한 메모리 영역을 가지게 된다. 클래스, 글로벌, 정적변수, 동적 메모리와 같이 다양한 객체들이 자신들 변수를 소유한다. OpenMP가 지원하는 스레드들도 각각의 고유한 메모리 영역을 가지게 되는데, 이것을 잘 구분해야만 병렬처리를 하면서 작업을 배분하거나 결과를 얻어낼 때 데이터 경쟁 같은 오류를 막을 수 있다. 공유 메모리 영역#pragma omp parallel 지시어 영역 밖에 있는 메모리 변수는 생성된 스레드가 공유할 수 있다. 모든 스레드가 읽고 쓰기를 할 수 있다고 하여 공유 메모리(shared)변수라고 한다. 만일 2개의 스레드가 하나의 변수의 값을 수정하면 어떻게 동작하게 될지 살펴보자. 0으로 초기화 된 공유 메모리 변수 x가 있다. 0번 스레드가 ..