본문 바로가기

Parallel/OpenCL

GPU 아키텍처 렌더링3D모델로부터 이미지를 생성하는 과정3D모델링 - 객체의 삼차원 표현을 수학적 표현으로 생성하는 과정 - 폴리곤 또는 삼각 OpenGL2D와 3D 그레픽 라이브러리멀티플렛폼 APISGI가 1992년에 개발 셰이더 ( Shaders ) - GPU 상에서 동작하는 컴퓨터 프로그램- 렌더링 파이프라인의 프로그래밍 가능한 단계 중 하나를 수행 셰이더 코어 ( Shader Cores )- 매우 간단하고 프로그래밍 가능함- 단일 명령 스트림을 빠르게 수행하기 위한 하드췌어 구성요소가 없음- 논리 그레픽 파이프라인 (Logic graphics pipline ) 대규모 병렬 처리 이용 ( Exploiting Massive Parallelism )스트리밍 멀티 프로세서 ( Streaming multiprocesso.. 더보기
이종 컴퓨팅과 OpenCL 이종 컴퓨팅 ( Heterogeneous Computing )이종 아키텍처 - CPU + 성능 가속기( Accelerators ) - GPGPU, Intel Xeon Phi 등등... - 하이브리드 프로세서 - 인텔 샌디브릿지, AMD 퓨전 등등 - 모든 컴퓨팅 도메인에서 사용 - 모바일 디바이스 ~ 슈퍼 컴퓨터 - 하드웨어 가속기가 계산이 많은 코드의 성능을 향상 소프트웨어 개발자의 역활 - 성능을 높이기 위해 이종 하키텍처를 최대한 활용 왜 이종시스템이 좋은가?가정 - 실행시간의 40%를 차지하는 순차(sequential)코드는 하나의 가속기 코어에 의해 가속 가능 - 하나의 큰 코어는 순차 코드를 두 배 빠르게 실행 ( 8개의 작은 코어가 차지하는 트랜지스터를 소비 ) 이종 아키텍처동종 멀티코어 아.. 더보기
호스트 프로그램의 구조 int main(){cl_platform_id* cl_device_type cl_device_id cl_context cl_command_queue cl_programcl_kernelcl_mem cl_int err;cl_uint num_platforms;cl_uint num_dev=0; // 플랫폼 ID 얻기 (Device 확인, 정보 가져오기) cl_int clGetPlatformIDs( cl_uint num_entries, (플랫폼 수) cl_platform_id *platforms, (플랫폼 정보를 담을 구조체 리스트) cl_uint *num_platforms) (플랫폼 갯수를 담을 변수) // 플랫폼 정보 언기cl_int clGetPlatformInfo( cl_platform_id platform.. 더보기
Hello OpenCL // int val[2] = {1,2}를 입력으로 받아서 val = { 2,1 } 로 값을 변환하여 주는 예제프로그램이다.// test platform : Visual Studio 2008 + ati stream sdk beta2.0 #include #include #include // error check macro : utility#define CHECK_CL_ERROR(retcode, msg, exit_label) { \if (retcode != CL_SUCCESS) { \printf(msg); printf("\n"); \goto exit_label; \}\} int main(){cl_int input[2]= {1, 2}; cl_int output[2]= {}; cl_contextcontext = .. 더보기
데이터 형 OpenCL은 C언어를 기반으로 하는 기술이기 떄문에C언어에서 벡터화가 추가되는 정도이다.컴파일은 C99를 기반으로 하고있다. I. 스칼라 데이터형 OpenCL Type API Type Description bool true (1) or false (0) char cl_char 8-bit signed unsigned char, uchar cl_uchar 8-bit unsigned short cl_short 16-bit signed unsigned short, ushort cl_ushort 16-bit unsigned int cl_int 32-bit signed unsigned int, uint cl_uint 32-bit unsigned long cl_long 64-bit signed unsigned lo.. 더보기
OpenCL이란? 더보기