Prior Team Projects

This page shows the team-projects students did in our multi-core programming course (CSE 244, KOREATECH)

Final project - 적벽대전 / Spring, 2022

OpenMP Project  / Spring, 2022

Parallel DBSCAN (최우수 프로젝트)

Team member : 최원홍, 권창덕, 이상민 (Team Name: 2조)

(Abstract) DBSCAN 알고리즘은 밀도 기반 알고리즘 중 대표적인 비지도 학습 알고리즘입니다. 불특정한 형태의 군집이 가능하고, 이상치(outlier)의 영향을 받지 않는다는 장점이 있지만, 알고리즘의 수행 시간이 느리다는 큰 단점이 있습니다. 저희 팀은 이를 병렬처리를 통해 극복할 수 있도록 했습니다.

contents : slides / execution file 

lz77 병렬화 프로젝트

Team member : 김건용, 최진우, 이계림 (Team Name: 1조)

(Abstract) z77은 범용적으로 zip, pkzip등 많은 곳에서 쓰이는 기본 알고리즘이다. 이 알고리즘 이해하고 병렬화하여 속도와 압축률에 대해서 분석하고 향상시켜보자!

contents : slides / execution file 

OpenMP를 활용한 파싱과 데이터증강 병렬화

Team member : 이창환, 김태범, 송안명 (Team Name: 김송이)

(Abstract)  학습 모델 제작에 필요한 데이터들의 양이 적을 시, 다양한 방법으로 학습 데이터 셋을 늘리는 작업이 필요하다. OpenMP를 사용하여 이미지 파싱 작업과 데이터 증강 작업을 병렬처리하여 시간을 줄이도록 해보자.

contents : slides / execution file 

차량 번호판 부분 검출 병렬화

Team member : 김백진, 정성욱, 홍준기 (Team Name: 4조)

(Abstract) 단순한 영상처리로 번호판을 검출할 때는 OpenCV에서 지원하는 가우시안 블러, 이진화, 윤곽선 찾기를 활용한다. 이 과정을 OpenCV 제공 함수로 하지 않고 직접 작성하여 병렬화 해보자.

contents : slides / execution file 

Turret mechanics

Team member : 남선식, 이현규 (Team Name: 5조)

(Abstract) 비행기가 이동할 때 가장 최적의 확률을 찾아서 발사 할 수 있는 사격통제장치를 만들어보자.

contents : slides / execution file 

A* 알고리즘 병렬화

Team member : 김지우, 박회종, 우상범 (Team Name: 6조)

(Abstract) A* 알고리즘은 휴리스틱을 이용한 최단 경로를 찾아내는 그래프 탐색 알고리즘 중 하나 이다. A*알고리즘을 이용해 미로에서 최단 거리로 탈출해보자.

contents : slides / execution file 

Making new image for adversarial attack in black box

Team member : 김경민, 임우열, 배수빈 (Team Name: 광기의 Nested)

(Abstract) 현재 인공지능 시장에서 딥러닝 모델들이 활발히 개발되고 있다. 적대적 공격(Adversarial Attack)은 이러한 딥러닝 모델의 내부적 취약점을 이용하여 만든 특정 노이즈값으로 모델을 의도적으로 속이는 방법이다. 병렬처리 기법들을 통해 노이즈를 빠르게 생성해보자.

contents : slides / execution file 

OpenMP를 이용한 번호판 검출

Team member : 김시훈, 김유진, 황인호 (Team Name: 8조)

(Abstract) 서울 전역 주요도로 최고속도를 50km 이하로 조정함에 따라 일시적으로 과속 차량이 급증하고 있다. 이에 따라 CCTV 이미지 속에 잡힌 차량의 번호판을 찾는 알고리즘을 구현하고, 병렬처리를 통해 빠른 속도로 결과를 도출할 수 있는지 확인하자.

contents : slides / execution file 

CUDA/GPGPU Project  / Spring, 2021

Monte-Carlo 방법을 사용한 주식 시뮬레이터

Team member : 석영준, 손강명, 유연휘(Team Name: 십만전자)

(Abstract) 산업 및 금융 분야의 불확실성 중대에 따라, 시뮬레이션을 통한 현상 해석 및 예측의 중요성이 증대하고 있다. 다양한 분야의 문제에 활용할 수 있는 풀이 방법인 몬테카를로 방법을 사용하여 금융 시뮬레이션을 구현하고, 병렬처리를 통해 이를 빠른 속도로 결과를 도출하도록 하자.

contents : slides / execution file 

CUDA_ADFinder

Team member : 김성현, 김연상, 송주헌(Team Name: Coreatech)

(Abstract) 유튜브에서는 업로드한 사람이 광고를 넣지 않아도 어느 정도 조회수가 되면 임의의 광고를 삽입한다. 광고는 많은 사람이 볼 때 재생해야 많은 이익을 볼 수 있기 때문에 시청자 수가 많을 때를 알아야 한다. 따라서 동영상의 최적의 위치에 광고를 삽입하는 프로그램을 PrefixSum 알고리즘과 CUDA를 이용하여 만들어보자.

contents : slides / execution file 

Template Matching

Team member : 김도은, 김병록, 김통일(Team Name: 3김)

(Abstract) 템플릿 매칭(Template Matching)은 블록 매칭 알고리즘으로도 불리며, 원본 이미지에서 템플릿 이미지(부분 영상)와 일치하는 영역을 찾고 표시하는 알고리즘이다. 그러나 사이즈가 큰 데이터를 처리하기에는 굉장히 느린 알고리즘이기에 CUDA Device를 이용하여 해당 알고리즘을 구현하고, 성능을 개선해 본다.

contents : slides / execution file 

ICP algorithm with CUDA

Team member : 이상현, 조성재, 최대준(Team Name: 사람이 있는 조)

(Abstract) icp알고리즘을 cuda와 openmp를 이용하여 병렬화를 하고 최적화를 하여 성능을 높여보자.

contents : slides / execution file 

Canny Edge Detection

Team member : 김현재, 송영근, 황경선(Team Name: 타조)

(Abstract) CUDA를 활용하여 Canny Edge Detection Algorithms을 구현해보자.

contents : slides / execution file 

OpenMP Project  / Spring, 2021

K-means Clustering Algorithm (최우수 프로젝트)

Team member : 김도은, 김병록, 김통일(Team Name: 3조)

(Abstract) k-means clustering 알고리즘은 레이블이 없는 데이터들을 비슷한 값끼리 묶어주는 군집화 알고리즘에서 가장 대표적인 비지도 학습 알고리즘입니다. 이러한 k-means clustering을 많은 데이터를 사용할 때 병렬처리를 통해 빠르게 군집화해보자.

contents : slides / execution file 

Monte-Carlo 방법을 사용한 주식 시뮬레이터

Team member : 석영준, 손강명, 유연휘(Team Name: 1팀)

(Abstract) 산업 및 금융 분야의 불확실성 중대에 따라, 시뮬레이션을 통한 현상 해석 및 예측의 중요성이 증대하고 있다. 다양한 분야의 문제에 활용할 수 있는 풀이 방법인 몬테카를로 방법을 사용하여 금융 시뮬레이션을 구현하고, 병렬처리를 통해 이를 빠른 속도로 결과를 도출하도록 하자.

contents : slides / execution file 

원주율 계산 프로그램(Calc Pi)

Team member :김연상, 김성현, 송주헌(Team Name: Coreatech)

(Abstract) π를 구하는 방법은 매우 많다. 범우주적인 계산으로 인해 많은 파이 자릿수가 요구되는데 다양한 파이 구하는 알고리즘을 이용하여 병렬화를 통해 빠르게 연산을 하며 어느 정도 값까지 표현이 가능한지 확인하자.

contents : slides / execution file 

차선 인식 프로그램 병렬화

Team member : 최대준, 조성재, 이상현 (Team Name: 사람이 있는 조)

(Abstract) RANSAC 알고리즘은 반복적인 가정과 집계가 특징인 모델 예측 알고리즘이다. RANSAC 알고리즘이 사용된 차선인식 프로그램을 병렬화해서 실행시간을 단축시켜보자.

contents : slides / execution file 

Maze solving algorithm with parallel computing

Team member : 사종현, 이태원, 조권호 (Team Name: 5팀)

(Abstract) 미로는 우리가 미로 속에 갇히었다고 생각해보았을 때, 한 사람이 출구를 찾는 것보다 여러 사람이 출구를 찾는 것이 더욱 빠를 것이다. 우리가 일반적으로 알고 있는 미로 탐색 알고리즘, 예를 들어 DFS나 BFS는 직렬 처리로 이루어진다. 마찬가지로 이 알고리즘도 병렬처리를 이용해 다수의 스레드가 동시에 출구를 찾도록 한다면 더욱 빠를 것이라 생각하였다.

contents : slides / execution file 

Dice Coefficient 기법을 활용한 코드 유사도 분석

Team member : 김현재, 송영근, 황경선 (Team Name: 6팀)

(Abstract) 서로 다른 N개의 코드를 비교하여 각 코드들이 얼마나 유사한지 측정하는 알고리즘을 작성하고 이를 병렬화해서 퍼포먼스를 향상시켜보자.

contents : slides / execution file 

CUDA/GPGPU Project  / Spring, 2020

Multiple Regression Parallelization with CUDA (최우수 프로젝트)

Team member : 김기백, 노유찬, 유지훈 (Team Name: 도토리 삼형제)

(Abstract) 다중 회귀를 이용하면 게임 초반 데이터를 이용하여 게임의 예상 결과를 예측할 수 있다. CUDA를 사용하여 병렬화를 극대화해보자. 데이터 자체의 크기가 아닌 독립 변수의 개수에 의존하는 최소한의 추가 공간과 Reduction으로 최대 174배의 성능 향상을 확인할 수 있었다.

contents : slides / execution file / presentation video

Image Mosaic Generator with CUDA

Team member : 나윤재, 박준석, 윤대승 (Team Name: 99마스터)


contents : slides / execution file / presentation video

병렬처리를 이용한 생명게임 구현

Team member : 김민기,김태휘, 박권규 (Team Name: 히말라야)

(Abstract) 수학자 John Conway가 제안한 생명 게임(Game of Life)은 세포들의 삶과 죽음을 통해 오토마톤 내에서 생성되는 다양한 패턴을 관찰하는 시뮬레이션이다. 넓은 필드에 있는 수많은 세포의 삶과 죽음을 GPU를 이용한 병렬 처리를 통해 계산해서 더 많은 패턴을 더 빨리 보도록 해보자.

contents : slides / execution file / presentation video

Deep Neural Network using CUDA

Team member : 권영서, 손성빈, 변대웅 (Team Name: 코린이)

(Abstract)  MNIST Database는 딥러닝 분야의 트레이닝 및 테스트에 널리 사용되는 숫자 0~9사이의 손글씨 이미지의 집합이다. MNIST Database의 학습과정을 CUDA를 이용한 병렬처리를 통해 OpenMP대비 더 높은 성능을 얻을 수 있도록 학습을 시켜보자.

contents : slides / execution file / presentation video

Canny Edge

Team member : 최상원, 김형준, 김대건 (Team Name: 오지조)

(Abstract) Canny Edge Detection은 다른 edge detection 알고리즘에 비해 낮은 에러율을 보여 그래픽 분야에서 가장 인기 있는 에지 찾기 알고리즘 중 하나이다. 이 알고리즘의 각 단계를 CUDA를 사용하여 빠르게 해보자.

contents : slides / execution file / presentation video

CUDA Page Rank Algorithm

Team member : 김동완, 신진경, 오지원

(Abstract) Page Rank는 구글을 세계 최고의 검색 사이트로 만든 요인 중 하나이다. 병렬처리를 통해 빠른 속도로 Page Rank를 연산해보자.

contents : slides / execution file / presentation video

High resolution Video Filtering

Team member : 박종호, 김재훈, 조성웅 (Team Name: 호루라기)

(Abstract) 모든 이미지 처리의 기본 작업 중 하나인 필터링 기술은 픽셀 기반 작업이다. 최근 해상도가 높은 고 화질 이미지 및 영상이 많아져 위 작업에도 병렬화의 필요성이 대두되고 있다.

contents : slides / execution file / presentation video

RSA 암호 알고리즘

Team member : 이강현, 소형섭, 김형종 

(Abstract) 

contents : slides / execution file / presentation video

Image Interpolation

Team member : 한동곤, 우소연, 이서영 (Team Name: 3K UHD)

(Abstract) 이미지 보간법은 기존 이미지의 픽셀값을 이용하여 이미지를 확대하는 방법이다. 그 중에 3가지(Nearest Neighborhood Iterpolation, Bilinear Iterpolation, Bicubic Iterpolation) 방법을 각각 구현해보고 CUDA를 통해 병럴처리 해보자! 

contents : slides / execution file / presentation video

OpenMP Project  / Spring, 2020

Multiple Regression Parallelization (최우수 프로젝트)

Team member : 김기백, 노유찬, 유지훈   (Team Name: 도토리 삼형제)

(Abstract)  다중 회귀를 이용하면 게임 초반 데이터를 이용하여 게임의 예상 결과를 예측할 수 있다. 병렬화를 이용하여 이 과정을 최적화해보자.  데이터 자체의 크기가 아닌 독립 변수의 개수에 의존하는 최소한의 추가 공간으로 최대 10배의 성능 향상을 확인할 수 있었다.

contents : slides / execution file / presentation video

OpenMP를 이용한 큰 수 곱 계산 속도 최적화 게임   

Team member :  나윤재, 박준석, 윤대승 (Team Name: 99마스터)

(Abstract) 여러가지 알고리즘을 직렬 및 병렬 처리로 구현하고 두 수를 곱하는 게임을 진행해보자. 제한 시간 내로 계산할 수 없다면 해당 알고리즘은 탈락된다. 어떤 알고리즘이 가장 효율적으로 진행될까? 

  contents : slides / execution file / presentation video

Multi-threaded Text Crawler

Team member : 박종호, 김재훈, 조성웅  (Team Name: 호루라기)

(Abstract)  웹 크롤링 기술은 인터넷 상에 수많은 자료들을 가져와 데이터 분석 하기 쉬운 형태로 가공하는 작업이다. 수많은 자료들을 보다 빠른 시간에 가져올 수 있도록 multi-threaded 처리를 해보자.

contents : slides / execution file / presentation video

병렬처리를 이용한 생명게임 구현

Team member : 김민기,김태휘, 박권규 (Team Name: 히말라야)

(Abstract)  수학자 John Conway가 제안한 생명 게임(Game of Life)은 세포들의 삶과 죽음을 통해 오토마톤 내에서 생성되는 다양한 패턴을 관찰하는 시뮬레이션이다. 넓은 필드에 있는 수많은 세포의 삶과 죽음을 병렬 처리를 통해 계산해서 더 많은 패턴을 더 빨리 보도록 해보자.

contents : slides / execution file / presentation video

Parallel Deep Learning

Team member :  권영서, 변대웅, 손성빈 (Team Name: 코린이)

(Abstract)  MNIST Database는 딥러닝 분야의 트레이닝 및 테스트에 널리 사용되는 숫자 0~9사이의 손글씨 이미지의 집합이다. MNIST Database의 학습과정을 OpenMP를 이용한 병렬처리를 통해 빠른 속도로 학습을 시켜보자.

contents : slides / execution file / presentation video

Parallel Bounding Volume Hierarchy

Team member : 최상원, 김형준, 김대건  (Team Name: 오지조)

(Abstract)  BVH는 컴퓨터 그래픽 분야에서 Collision detection을 하는데 중요한 역할을 하는 알고리즘 중 하나입니다. BVH tree를 생성하는 알고리즘을 병렬처리하여 빠르게 해보자

contents : slides / execution file / presentation video

Morphological Operations

Team member :  이강현, 소형섭, 신진경 (Team Name: 양념치킨)

(Abstract)  모폴로지 연산은 특정한 형태를 띠는 필터를 만들고 이 필터를 영상에 씌워 새로운 영상을 얻어내는 기법이다.

그 중 하나인 열기(Opening)과 닫기(Closing) 연산을 구현하고, 병렬처리를 통해 성능을 올려보자.

contents : slides / execution file / presentation video

Sorting Algorithm

Team member :  김동완, 우소현  (Team Name:8리8리)

(Abstract)  Merge, Bubble, Heap Sort를 병렬처리 해보자. 배열의 크기에 따른 Merge, Bubble, Heap Sort의 효율성을 알아볼 수 있다. 

contents : slides / execution file / presentation video

Feature Mapping Algorithm

Team member :  이서영, 한동곤, 김형종, 오지원 (Team Name: Four threads)

(Abstract)  두 이미지의 특징점을 가지고 일치하는 부분을 찾아내는 Feature Matching 알고리즘을 병렬처리한다. Feature Matching 알고리즘의 3가지 과정 KeyPoint Detection, Descriptor Production, Descriptor Matching을 각각 병렬처리하여 보다 빠르게 Matching을 해보자!

contents : slides / execution file / presentation video

CUDA/GPGPU Project  / Spring, 2019

Parallelization of Making Intersection List 

(최우수 프로젝트상 수상)

Team member : 이지훈, 배민천, 이재홍 (팀명: slave threads(3))

(Abstract)  볼륨 렌더링을 위한 전처리 과정을 CUDA + OpenMP 병렬화를 통해 빠르게 처리한다. 기존 알고리즘과 거의 비슷한 메모리를 사용해 최대 11배의 성능 효과를 얻는다.

download : slides

패스워드 해킹 (CUDA Ver)

Team member : 김수빈, 신우진 (팀명: 밥사조)

(Abstract) 당신의 패스워드를 해킹하는데 시간이 얼마나 걸릴까? 패스워드의 조합이 늘어날 수 록 해킹시간은 기하급수적으로 늘어날 것이다. 간단한 해킹프로그램을 정의하고 CUDA를 이용한 병렬처리로 패스워드 탐색속도를 향상시켜보자.

download : slides

OpenMP Project  / Spring, 2019

Parallelism of Volume Rendering Pre-processing

(최우수 프로젝트상 수상)

Team member : 이지훈, 배민천, 이재홍 (팀명: slave threads(3))

(Abstract) 볼륨 렌더링을 위한 전처리 과정을 OpenMP 병렬화를 통해 빠르게 처리한다. 기존 알고리즘보다 메모리를 2배정도 더 사용해 최대 50배의 성능효과를 얻는다.

download : slides

Parallel Canny Algorithm (우수 프로젝트상 수상)

Team member : 김영우, 양현석 (팀명: 3팀)

(Abstract) 엣지 검출 알고리즘은 영상 처리에 있어서 굉장히 중요한 알고리즘 중 하나이다. 그 중에 가장 많이 쓰이는 알고리즘 중 하나는 캐니 엣지 디텍션 알고리즘을 구현하고, 병렬처리를 통해 이를 빠른 속도로 영상처리 해보자.

download : slides / execution file

패스워드 해킹 (우수 프로젝트상 수상)

Team member : 김수빈, 신우진 (팀명: 밥사조)

(Abstract) 당신의 패스워드를 해킹하는데 시간이 얼마나 걸릴까? 패스워드의 조합이 늘어날 수 록 해킹시간은 기하급수적으로 늘어날 것이다. 간단한 해킹프로그램을 정의하고 openMP를 이용한 병렬처리로 패스워드 탐색속도를 향상시켜보자. 

download : slides / execution file

CUDA/GPGPU Project  / Spring, 2018

The better matrix multiplication with Strassen (최우수 프로젝트상 수상)

Team member : 강호민 권혁찬 조성우 (팀명 : DS_Child)

(Abstract) 기존의 일반적인 행렬 곱셈을 스트라센 방법을 사용하여 속도를 향상시킨다. 추가적으로 Heterogeneous 방식과 Stream 방식을 차례로 적용해서 수행시간을 더 줄여본다. 

download : (slides) / (execution files)

OpenMP Project  / Spring, 2018

Do you like sorting? (최우수 프로젝트상 수상)

Team member : 김대영, 김영규 (팀명: able)

(Abstract) 우리 주변에 있을 수 있는 일로 시작해서 실제 문제에 적용하기까지 짧지만 길었던 좌충우돌 정렬 알고리즘 이야기. 지금부터 시작합니다.

download : (slides) (execution files)

Penigma (parallel + enigma)

Team member : 최호빈, 허용해 (팀명: 공부는 내일부터)

(Abstract) 2차 세계대전에서 사용된 에니그마의 암호 알고리즘에 병렬처리를 적용하는 프로젝트. 여러개의 회전자를 동시에 사용함으로서, 암호의 강도를 한층 높임과 동시에 효율적인 병렬처리 알고리즘을 제시함.

download : (Slides) (execution files)

Parallage (Parallel + Image)

Team member : 이석한, 백윤기, 최호준 (팀명: 상중고민)

(Abstract) 다수의 이미지세트에서 가장 유사한 이미지 쌍을 찾는 프로그램을 병렬화한 프로젝트로 큰 픽셀의 이미지를 상호비교하는 과정에서 가장 많은 연산이 수행된다고 판단하여 이 과정을 병렬화했다. 

download : (slides) (execution files)

너와 나의 연결고리

Team member : 정보혁, 김찬기, 김영재 (팀명: 덕수궁 돌담길)

(Abstract) 저 친구와 사귀고 싶다.. 그런데 나는 소심한데 어떻게 하지.. 친구야 도와줘!! 친목을 위한 친구 네트워크 망의 최적 경로를 구해서 효율적으로 친구를 사귀어보자! (단, 약간의 용기가 필요함)

download : (slides) (execution files)

The Best Sorting & Searching

Team member : 강호민 권혁찬 조성우 (팀명 : DS_Child)

(Abstract) 무작위로 배열된 수들을 정렬해보고 지정된 구간에 있는 숫자의 갯수를 찾아본다. 정렬하는 데 있어 삽입, 쉘, 머지, 퀵 정렬을 써보고 어떤 것이 효율이 좋은지도 알아본다. 또, openmp를 사용한 다양한 병렬 방법을 시도해보고 수행시간을 줄여본다.

download : (slides) (execution files)