카테고리Dev

#7 OpenCL 튜토리얼. Convolution Filter와 Local Memory. 최적화 기법

루프 언롤링(Loop Unrolling)   이전 포스트에서 루프 언롤링을 통해 최적화 하는 코드를 잠깐 보았습니다. 루프언롤링이란 for문이나 while문과같은 루프문을 직접적인 명령어의 나열로 바꾸는 기법입니다. 루프를 코드의 나열로 바꾸게 되면 루프 제어를 위한 증가연산, 비교연산이 생략되어 연산량을 감소 시킬 수 있습니다. 또한, GPU에서 실행하는 코드를 컴파일하게 되면 명령어를 묶어 덩어리로 실행하게 되는데, 루프를 ...

더보기

#6 OpenCL 튜토리얼. Convolution Filter와 Local Memory 실습

전체 CL 코드   Local Memory를 이요한 Convolution Filter의 CL 코드 전부 입니다. 복잡해 보이지만 크게 두부분으로 나눌 수 있습니다.  barrier(CLK_LOCAL_MEM_FENCE); 를 기준으로 Local Memory에 이미지를 쪼개 넣고 실제로 필터 연산을 수행하는 부분으로 나누어져 있다는 것만 기억하신 후 세부적인 코드로 넘어가도록 하겠습니다. 1 2 3 4 5 6 7 8 9 10 ...

더보기

#5 OpenCL 튜토리얼. Convolution Filter와 Local Memory 이론

Convolution Filter란?   출력화소를 만들기 위해서 주변의 화소값을 이용하여 계산하는 작업을 말합니다. 블러링, 샤프닝, 미분처리, 미디언필터, 평균값필터 등등이 convolution filter에 포함됩니다. 픽셀값을 결정하기위해서 픽셀 주변에 필터에 적용하는 NxN크기의 배열을 convolution kernel이라고 합니다. 예를들어 9개 픽셀의 평균값으로 픽셀의 값을 정하는 연산을 하고싶다면 이 연산에 적용되는 커널은 각 1의 원소를 가진 3X3 ...

더보기

#4 OpenCL 튜토리얼. 이미지 프로세싱에 들어가기 전, 전체 워크플로우 학습

 아마 OpenCL의 전체적인 워크 플로우가 머릿 속에 들어오지 않아 세부적인 이해가 되지 않는 분이 있으리라 생각됩니다. 전체적인 작업의 흐름이 머릿속에 들어오는 것이 무엇보다 중요하므로 확실히 알 수 있도록 정리를 하고 이미지 프로세싱에 들어가려 합니다. Initialization initialization 부분은 GPU에서 병렬처리 작업을 할 수 있도록 CPU와 GPU간의 인터페이스를 정의하고 GPU에서 실행할 함수를 ...

더보기

#3 OpenCL 튜토리얼. 버퍼의생성과 커널의실행.

OpenCL 에서 커널이란 GPU에서 동작하는 함수 입니다. 그리고 커널은 GPU에 할당 된 메모리를 이용해 작업을 수행합니다. 따라서 GPU에서 무언가 작업을 하기 위해서는 다음과 같은 작업 과정이 필요합니다. – 메모리 할당 및 데이터 쓰기 GPU메모리를 할당하고 할당한 메모리에 값을 적재하는 부분 까지가 bufferWrite()함수의 내용입니다. clCreateBuffer()함수로 이전 강의에서 생성한 context를 이용해 생성합니다. 인자로는 메모리를 ...

더보기

#2 OpenCL 튜토리얼. OpenCL 인터페이스의 생성.

 OpenCL은 인터페이스입니다. 다시 말해 CPU와 GPU사이를 오가며 작업을 처리 해 줄 수 있게 도와주는 역활을 해줍니다. 아래 그림의 빨간색 선에 해당하는 것이 바로 OpenCL 인터페이스 입니다. GPU를 사용하기위해서는 platform, device 포인터와 device를 이용해서 만드는 context 포인터 정보를 가지고 있어야 합니다.  그리고 device와 context를 이용해 실제 CL코드를 실행하는 queue에 대한 포인터를 를 생성해야 ...

더보기

#1 OpenCL 설치하기. 간단한 설명.

– 포스팅에 들어가며    최근 CPU 로 처리하던 이미지 프로세싱 코드를 OpenCL을 이용해 GPU로 옮기는 프로젝트를 하게 되면서 넷 상에 한글로 된 기초 자료가 너무 부실한 것이 너무 아쉬웠습니다. 또한 코딩을 하면서 겪은 시행착오들을 새로 시작하시는 분들이 겪지 않았으면 해서 앞으로 약 10회정도 OpenCL에 관련한 포스팅을 하며 블로그를 시작해 볼까 합니다. ...

더보기

mongoDB join

$lookup (aggregation) On this page Definition Syntax Consideration Examples Definition $lookup New in version 3.2. Performs a left outer join to an unsharded collection in the same database to filter in documents from the “joined” collection for processing. To each input document, the $lookup stage adds a new array field whose elements are the ...

더보기

MongoDB 스키마 디자인을 위한 6가지 규칙 요약

MongoDB 스키마 디자인을 위한 6가지 규칙 요약 MongoDB에서의 관계 구성, 비정규화 전략을 6가지 규칙으로 정리. MongoDB를 개인 프로젝트에서 자주 사용하긴 하는데 항상 쓰던 방식대로만 사용하고 있어서 스키마를 제대로 구성하고 있는지 검색하다가 이 글을 찾게 되었다. MongoDB 블로그에 올라온 포스트인 6 Rules of Thumb for MongoDB Schema Design을 읽고 나서 SQL과 어떻게 ...

더보기

c# cbschool control

control/schoolMongoSearch   schoolMongoSearch control: -found cbSchool.ShowPopup() cbSchool.BringToFront(); -notFound, -selectionChanged event cbSchool.Hide() cbSchool.SendToBack();   cbSchool.contained control -> schoolMongoSearch    

더보기

This is a unique website which will require a more modern browser to work!

Please upgrade today!