오늘날 멀티코어 프로세서 세상은 이기종 컴퓨팅 환경이 대부분이라 해도 과언이 아니다.
병렬 컴퓨팅은 비약적인 속도 향상과 전력 소비 감소라는 장점이 있지만 사용하기가 까다롭고 특히 다양한 아키텍처로 이루어진 이기종 컴퓨팅 환경에서는 소프트웨어 개발이 더욱 어려워진다.
이 프리젠테이션에서는 이기종 컴퓨팅 환경에서의 병렬 처리를 위한 프로그래밍 언어를 소개하고 OpenCV와 같은 영상처리 라이브러리에서의 활용 예시를 보여준다
파이썬과 OpenCL을 함께 쓰는 방법을 안내 합니다.
this slides introduce how to use python with OpenCL.
unfortunately, I made this for korean readers only. however, if anyone wants to know this procedure in english, please contact me.
오늘날 멀티코어 프로세서 세상은 이기종 컴퓨팅 환경이 대부분이라 해도 과언이 아니다.
병렬 컴퓨팅은 비약적인 속도 향상과 전력 소비 감소라는 장점이 있지만 사용하기가 까다롭고 특히 다양한 아키텍처로 이루어진 이기종 컴퓨팅 환경에서는 소프트웨어 개발이 더욱 어려워진다.
이 프리젠테이션에서는 이기종 컴퓨팅 환경에서의 병렬 처리를 위한 프로그래밍 언어를 소개하고 OpenCV와 같은 영상처리 라이브러리에서의 활용 예시를 보여준다
파이썬과 OpenCL을 함께 쓰는 방법을 안내 합니다.
this slides introduce how to use python with OpenCL.
unfortunately, I made this for korean readers only. however, if anyone wants to know this procedure in english, please contact me.
NHN NEXT 게임 서버 프로그래밍 강의 자료입니다. 최소한의 필요한 이론 내용은 질문 위주로 구성되어 있고 (답은 학생들 개별로 고민해와서 피드백 받는 방식) 해당 내용에 맞는 실습(구현) 과제가 포함되어 있습니다.
참고로, 서버 아키텍처에 관한 과목은 따로 있어서 본 강의에는 포함되어 있지 않습니다.
OpenCV를 활용하는 영상처리 어플리케이션 개발자들은 항상 GPU 자원을 활용하고 싶을 것이다. 하지만 이기종 컴퓨팅 환경에서 CPU 이외의 다른 하드웨어 자원을 활용하는 것은 개발 환경 및 백그라운드 지식 등의 많은 어려움이 따른다.
GPGPU 활용에 가장 상용화로 성공한 대중적인 솔루션으로는 nVidia 사의 CUDA 기술이 있지만, 그 외에도 GPGPU 자원을 쉽게 활용할 수 있는 오픈 플랫폼이 있는데 이것이 OpenCL 표준이다.
최근 하드웨어와 소프트웨어 진영에서 모두 OpenCL의 지원 및 발전이 두드러지며 점점 더 확산되는 추세이다.
OpenCV 진영에서도, 3.0이 정식 릴리즈 면서 본격적으로 OpenCL을 활용하기가 한층 쉬워졌다.
NHN NEXT 게임 서버 프로그래밍 강의 자료입니다. 최소한의 필요한 이론 내용은 질문 위주로 구성되어 있고 (답은 학생들 개별로 고민해와서 피드백 받는 방식) 해당 내용에 맞는 실습(구현) 과제가 포함되어 있습니다.
참고로, 서버 아키텍처에 관한 과목은 따로 있어서 본 강의에는 포함되어 있지 않습니다.
OpenCV를 활용하는 영상처리 어플리케이션 개발자들은 항상 GPU 자원을 활용하고 싶을 것이다. 하지만 이기종 컴퓨팅 환경에서 CPU 이외의 다른 하드웨어 자원을 활용하는 것은 개발 환경 및 백그라운드 지식 등의 많은 어려움이 따른다.
GPGPU 활용에 가장 상용화로 성공한 대중적인 솔루션으로는 nVidia 사의 CUDA 기술이 있지만, 그 외에도 GPGPU 자원을 쉽게 활용할 수 있는 오픈 플랫폼이 있는데 이것이 OpenCL 표준이다.
최근 하드웨어와 소프트웨어 진영에서 모두 OpenCL의 지원 및 발전이 두드러지며 점점 더 확산되는 추세이다.
OpenCV 진영에서도, 3.0이 정식 릴리즈 면서 본격적으로 OpenCL을 활용하기가 한층 쉬워졌다.
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)Tae Young Lee
파이썬 데이터과학 - 기초 과정(1일차)
- 데이터분석, 데이터시각화
- jupyter notebook, numpy, pandas, matplotlib, seaborn
2차 과정은 따로 올리겠습니다.
문의 및 제안 : se2n@naver.com
데이터 소스 : https://github.com/sh2orc/datascience
모뉴먼트 밸리의 컨셉을 차용한 Ball travel 게임의 최종 구현
저작권 고지사항:
Pictograms from
Computer: By Alex Valdivia
IPhone: By Mr Robot
https://thenounproject.com/term/computer/6034/
https://thenounproject.com/term/iphone/13061
리눅스 스터디 1회차 in KOSMOS
VM에 설치하므로 이미지 부분은 건너뛰세요.
on Onedrive:
https://onedrive.live.com/redir?resid=c4dd3c6db99e8d1a!11192&authkey=!ALtcH-dt9PGfl58&ithint=file%2cpptx
16. 대중적인 API이니만큼 다양한 개발환경에서 지원됨
VSCC, Clang/LLVM, GCC, ICC/ICPC 등 다양한 컴파일러에 표준으로 선택
대개 –fopenmp 옵션이나(gcc, clang) –openmp(icc/icpc)
/openmp(VSCC) –framework OpenMP(OS X clang)로 컴파일 가능
OpenMP 의 장점3
33. Code
source.c:
#include <stdio.h>
#include <omp.h>
int main(int argc, char* argv[])
{
#pragma omp parallel
{
printf("Hello, World! From thread %dn“, omp_get_thread_num());
}
return 0;
}
변수 출력부 확인
변수 확인
중간 추론: 동일한 함수가 다른 값을 반환
43. 어떤 종류의 명령을
어떤 종류의 데이터에 대해 수행하는가
플린 분류에서 아키텍쳐는 크게 4가지로 분류
44. Single / Multi: 수(단수/복수)
Instruction / Data: 무엇에 대해(작업, 데이터)
결합해서 약어를 만들어 봅시다
45. SISD: 한 종류의 데이터에 대해 단일한 연산을 수행함(병렬과는 관계 없음)
SIMD: 여러 데이터에 대해 단일한 연산을 수행함(데이터를 분배)
MISD: 동일 데이터에 대해 다양한 연산을 수행함(작업을 분배)
MIMD: 여러 종류의 데이터에 대해 다양한 연산을 수행함(동시에 분배)
47. SISD: 한 종류의 데이터에 대해 단일한 연산을 수행함(병렬과는 관계 없음)
SIMD: 여러 데이터에 대해 단일한 연산을 수행함(데이터를 분배)
MISD: 동일 데이터에 대해 다양한 연산을 수행함(작업을 분배)
MIMD: 여러 종류의 데이터에 대해 다양한 연산을 수행함(동시에 분배)
48. 이는 컴퓨터 구조와,
연산이 실제로 하드웨어에 배분되는 모델을 생각하면
쉽게 이해할 수 있다.
가장 대중적인 모델 SIMD
59. 프로세스가 특정 지점에서 동시에 여러 스레드를 실행하며 코드가 분기
각각의 스레드가 끝나면 다시 메인 쓰레드가 프로세스의 흐름을 모은다
Fork-Join 모델
60. OpenMP는 pragma omp 절을 쓰레드로 인식
하드웨어가 최대로 수용 가능한 쓰레드 수, 혹은 환경변수를 인식해 쓰레드 생성
각 쓰레드는 고유 index를 가짐 이것이 omp_get_thread_num이 반환하는 값
소프트웨어 모델(스레드)를 하드웨어에 분배
61. 쓰레드를 만들어 둔다 해도 한번에 얼마나 실행 가능한지 알 수 없음
그렇다고 실행 가능시점까지 그냥 대기하면 성능제약 까다로운 부분은 느려짐
성능이 중요한 작업에서는 하드웨어만 봐도 성능 예측 가능한 SIMD가 안전
코드는 하나인데 실행하는 머신은 천차만별
69. Process Thread
만일 순서 의존성이 존재한다면…
Thread Thread Thread
Thread
Thread
Thread
시간상의 이점 없음
70. 쓰레드 작업 선행 오버헤드가 먼저 끝난 것을 그냥 먼저 실행
어떤 시점에 누가 먼저 끝날지도 알 수 없고, 수행시간도 매번 차이가 남
공학에서 이렇듯 통제 불가능한 상황에 의해 결과가 달라지는 것을
race condition이라 함
거기다 각 객체 실행 시점은 조금씩 차이남
71. 컴퓨팅은 데이터와 동작 / 단일과 다중에 따라 4가지로 분류
가장 대중적인 병렬 모델은 SIMD
OpenMP는 Fork-Join 모델을 따름
병렬화 되어야 하는 작업은 순서 의존성이 없어야 한다
오늘의 내용정리: