일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- Visual Leak Detector
- Queue
- 메모리 누수
- program
- OpenCL 초기화
- init
- Platform
- initialize
- Kernel
- OpenCL 2.0
- VLD
- OpenCL 설치
- OpenCL
- Intel OpenCL
- OpenCL 2.0 시작하기
- Memory Leak
- Device
- Today
- Total
목록분류 전체보기 (24)
후로링의 프로그래밍 이야기
OpenCL 에서 커널이란 GPU에서 동작하는 함수 입니다. 그리고 커널은 GPU에 할당 된 메모리를 이용해 작업을 수행합니다. 따라서 GPU에서 무언가 작업을 하기 위해서는 다음과 같은 작업 과정이 필요합니다. - 메모리 할당 및 데이터 쓰기 GPU메모리를 할당하고 할당한 메모리에 값을 적재하는 부분 까지가 bufferWrite()함수의 내용입니다. clCreateBuffer()함수로 이전 강의에서 생성한 context를 이용해 생성합니다. 인자로는 메모리를 Read용도로만 쓸 것인지, Write용도로만 쓸 것인지 둘다 사용할 것인지에 대한 인자와 사이즈 등이 들어있습니다. 버퍼를 내용을 변경하지 않는 constant버퍼로 사용할 경우 CL_MEM_READ_ONLY로 설정하면 읽는 속도가 더 빨라 진다..
OpenCL은 인터페이스입니다. 다시 말해 CPU와 GPU사이를 오가며 작업을 처리 해 줄 수 있게 도와주는 역활을 해줍니다. 아래 그림의 빨간색 선에 해당하는 것이 바로 OpenCL 인터페이스 입니다. GPU를 사용하기위해서는 platform, device 포인터와 device를 이용해서 만드는 context 포인터 정보를 가지고 있어야 합니다. 그리고 device와 context를 이용해 실제 CL코드를 실행하는 queue에 대한 포인터를 를 생성해야 합니다. 각각이 무엇인지 확실히 이해를 하고 넘어가야 OpenCL이 실행되는 방식을 이해 할 수 있습니다. Platform 만약 컴퓨터에 Interl CPU와 AMD GPU가 설치되어 있다면 선택 가능한 platform은 intel, amd입니다. 다시..
어느정도 규모 이상의 코드를 짜거나 실행 후 계속 동작하는 프로그램을 짤때 메모리 누수를 관리하는 것이 정말 중요합니다. Visual Studio에서 기본적으로 제공하는 프로파일러도 좋습니다. 하지만 프로파일러 만으로는 메모리 누수를 잡기가 매우 힘듭니다. 메모리 누수가 발생한 블록 정보를 이용해 메모리 누수가 발생하는 라인을 찾으려면 map파일과 cod파일등을 이용해 직접 검색해서 매치를 해나가는 아주 귀찮은 작업을 해야 합니다. Visual Leak Detector는 단순히 헤더파일을 하나 추가하는 것 만으로 쉽게 메모리 누수가 발생한 블록을 선언한 라인을 잡아줍니다. 아래는 Visual Leak Detector홈페이지의 실행 예시 입니다. 설치 방법은 다음과 같습니다. https://vld.code..
- 포스팅에 들어가며 최근 CPU 로 처리하던 이미지 프로세싱 코드를 OpenCL을 이용해 GPU로 옮기는 프로젝트를 하게 되면서 넷 상에 한글로 된 기초 자료가 너무 부실한 것이 너무 아쉬웠습니다. 또한 코딩을 하면서 겪은 시행착오들을 새로 시작하시는 분들이 겪지 않았으면 해서 앞으로 약 10회정도 OpenCL에 관련한 포스팅을 하며 블로그를 시작해 볼까 합니다. OpenCL(Open Computing Language)은 개방형 범용 병렬 컴퓨팅 프레임워크입니다. 이종 플랫폼이라는 말을 들어보셨나요? 여기서 얘기하는 이종플랫폼은 CPU, GPU, DSP등의 연산장치가 혼재되어있는 시스템을 말합니다. OpenCL은 이러한 시스템 내에서 여러 연산장치의 연산 유닛을 유저가 쉽게 사용 할 수 있도록 도와주는..