|
그런데, IT는 대단히 넓고, 다양한 분야를 포함하는 의미를 가지고 있습니다.
스마트폰과는 직접적으로 큰 연관성이 없을 수도 있습니다. OpenCL 이라고 하는 것이 병렬 프로그래밍과 관련이 있고, 여기서 말하는 병렬프로그래밍은 -나중에 스마트폰에서 구현될 수도 있지만- 최소한 현재까지는 PC혹은 노트북 이상의 컴퓨터나 아니면 그 보다 규모가 큰 컴퓨터에서 돌아가는 것을 의미합니다. 이 책은 OpenCL 에 대해서 소개하고 이를 어떻게 이용할 수 있는지에 대한 기본적인 사항을 정리해준 일종의 OpenCL 입문서라고 할 수 있습니다. 멀티코어 프로세서가 일반화된 요즘에는, 멀티코어 프로세서의 성능을 제대로 이용하기 위해서 병렬프로그래밍을 해야할 필요가 있습니다. 그런데 병렬프로그래밍은 프로세서의 종류나 사용자의 편의 등 다양한 환경이나 조건에 따라서, 그에 맞는 라이브러리를 각각 사용하는 경우가 대부분입니다.
그리고 OpenCL 에 대한 역사적인 배경과 필요성을 알려줍니다. 다음으로 다양한 환경에서 OpenCL 을 사용할 수 있는 개발 환경을 소개하고 OpenCL 의 기본적인 설명과 응용의 예를 들어 주어서 실제 OpenCL 을 사용하는 방법까지 알려줍니다.
400여쪽의 책에서 8장의 내용이 100쪽이 넘는데요 함수 레퍼런스 보다는 응용 가능한 예시나 실제 프로젝트에 적용하는 예를 추가해 주는 것이 더 좋지 않았을까 생각합니다.
우선 이 책은 C 언어를 사용할 수 있어야 보기 쉽습니다. 예제 코드가 C 언어로 되어 있어서 C언어를 모르면 책에서 전달하는 내용을 제대로 이해하기 어렵습니다. 그리고 프로세스와 스레드에 대한 개념을 미리 확인하시고 보는 것이 좋을 듯 합니다. 병렬 프로그래밍을 효과적으로 하기 위한 OpenCL 프레임워크를 소개하는 것이기 때문에, 이와 관련있는 기초적인 사항들을 미리 확인하시는 것이 이해에 도움이 될 듯 합니다. 기존에 병렬프로그래밍을 해보셨던 분들이라면, 더 쉽게 접근하실 수 있으리라 생각됩니다. 특정 라이브러리 보다는 일반화된 병렬 프로그래밍이 궁금하신 분에게 권해드립니다.
|
|
OpenCL 프로그래밍 Open CL이 무엇인가? OpenCL(Open Computing Language)은 개방형 범용 병렬 컴퓨팅 프레임워크입니다. 이기종 간의 효율적인 프로그래밍을 위해 만들어진 프레임워크라고 할수 있겠죠. Open CL은 애플이 최초로 개발했으며 상표권도 애플이 가지고 있습니다. 그후에 AMD, Intel, nVidia 등과 함께 애플은 문서를 다듬어서 최초로 크로노스 그룹에 제출하게 되었지요. 그 후 2008년에 공식적인 발표를 하게 되었습니다. 책의 구성 이책은 크게 두파트로 나뉘어져 있습니다. 1장부터 5장은 병렬처리 프로그래밍과 OpenCL에 대한 소개를 6장부터 8장은 실제로 OpenCL을 사용할 때 유용하게 사용할 수 있는 비결에 대해 소개해 주고 있습니다. 상세 목차 CHAPTER 1 병렬 프로그래밍 CHAPTER 2 OPENCL CHAPTER 3 OPENCL 개발 환경 CHAPTER 4 호스트와 디바이스 CHAPTER 5 OPENCL C 언어 CHAPTER 6 고속 푸리에 변환과 난수 생성 프로그램 만들기 CHAPTER 7 OPENCL의 변화 CHAPTER 8 OPENCL 함수 레퍼런스 이 책의 장점 1. 이해도 높은 설명 책의 초반부에서 Open CL에 대한 기본 개념과 Intel, AMD, nVidia등의 경쟁회사들의 제품을 예로 들면서 Open CL이 왜 필요한지에 대해서 충분히 설명하고 있습니다. 본격적으로 본문에 들어가게 되면 함수, 벡터, 메모리 할당 방법등에 대해 아주 잘 설명된 책입니다. 특히나 주요 부분마다 부가 설명을 달아 놓아 저자의 섬세함까지 엿볼수 있는 책이 아닌가 생각됩니다. 2. 낯선 내용을 위해 충분한 예제코드 개인적으로 개발자라면 글자보다 코드가 좀더 이해가 쉬울거라 생각합니다. (다분히 저만의 생각입니다.^^) 책을 읽어가며 난해한 내용들은 책에서 그에 대한 알뜰한 예제코드를 통해 한번더 이해를 높여주고 있습니다. 예제코드는 각 구문마다 주석처리가 되어 있어 읽는사람이 전체적인 흐름을 쉽게 파악할 수 있도록 해놓았습니다. 3. 기본 내용전달을 위한 상세한 그림들 저는 새로운 언어나 기술들을 배울때 기본 설치 방법, 사용법등이 가장 어려웠습니다. 하지만 이책은 그부분에 대해 글뿐만이 아니라 상세한 그림들을 통해 설명을 하고 있어 초보자가 따라하기에 충분히 가능하리라는 생각이 들 정도로 잘 설명해 놓았습니다. Open Cl의 개발환경 뿐만아니라 하나의 OS가 아닌 많이 사용되는 OS별로 설치하는 방법까지 잘 설명되어 있습니다. 4. 부담서럽지 않은 번역 많은 개발자 분들이 생각하시듯 번역본의 가장 큰 단점이 우리나라 정서나 어법에 잘 맞지 않는다는 단점이 있습니다. 하지만 이책은 그러한 불편함이 거의 없을 정도로 잘 번역된 책입니다. 5. 나에게 있어서 또하나의 레퍼런스 서적 개인적으로 OpenCL에 대한 Object Api 함수들을 하나하나 상세히 설명해 주고 있고 Document마냥 기능, 리턴값등을 상세히 작성해 놓아 필요할 때마다 참고할 만한 아주 좋은 책이라 생각됩니다. 아쉬운점 1. 마냥 초보자는 어려운 책! 책의 서두에 "OpenCL 프로그래밍은 C언어를 이해한다는 전제 아래에 쓰였습니다." 라는 문구가 있습니다. 저도 나름 C언어에 대해 이해한다고 생각하고 있었지만 그렇다고 쉽게 이해되는 책은 아니었습니다. 어느정도의 난이도 있는 이해도가 필요한것 같습니다. 2. 칼라 그림이 아쉽다. 언제나 책을 읽을때마다 아쉬운 부분입니다. 그림만이라도 칼라가 되었으면 하는 생각은 아직도 변함이 없네요. ㅎㅎ 마무리 OpenCL에 대해 비록 잘알지 못하지만 책을 읽어나가면서 아!, 이런거구나! 라는 감탄사를 내뱉으면서 책을 읽어 나갔습니다. 쉬운 내용이 아니기에 다소 어려운 내용들이지만 저자의 꼼꼼함과 상세한 설명으로 그나마 이해는 쉽게쉽게 해나갈수 있는 좋은 책이었습니다. CPU, GPU에 대한 병렬프로그래밍이 궁금하신 분들은 "OpenCL 프로그래밍" 이책을 강력히 추천합니다.
|
|
Intel과 AMD, 그리고 nVidia와 AMD의 CPU, GPU 분야에서의 싸움은 CPU는 지금 현재 Intel이 AMD를 압도하고 있고 GPU는 세대에 따라 업치락 뒤치락하지만 현재는 nVidia다...
차이의 핵심은 CPU는 코어당 성능, 전력소모, 멀티코어 성능이고 GPU는 멀티코어와 전력소모 부분으로 볼 수 있는데..
이 두가지 모두가 핵심은 병렬처리에 있다고 볼 수 있다. 특히 CPU 분야는 4GHz의 벽을 넘지 못하고 결국 발열과 전력 소모에 손을 들고 코어당 효율성과 멀티 코어에 좀 더 집중할 수 밖에 없게 되었다.
이 책을 보면 초반부에 아주 이해가 가기 쉽게 위에서 언급한 경쟁 회사들의 제품을 예로 들면서 Open CL이 왜 필요한지를 분명하게 명시하고 있으며, 100% 병렬처리는 불가능하겠지만 순차처리와의 비율을 좀 더 크게해서 멀티코어를 최대한 활용할 수 있게 순차처리 부분을 최소화 하는 것이 그 목적이라고 할 수 있다.
Open CL의 개발환경에 대해서도 OS의 종류에 따라 설치하는 방법과 초반에 기초적인 병렬 프로그래밍의 간단한 소스와 함께 각각의 주요 구문에 대한 주석처리도 되어 있어서 쉽게 코드의 전체적인 흐름을 파악할 수 있다. 또한 친절하게 각각의 헤더파일의 역할까지 소개되어 있고 본격적으로 본문으로 들어가면 OpenCL에서 주로 사용되는 수식자나 함수들, 벡터 데이터, 메모리 할당 방법 등이 잘 소개되어 있다.
중요한 부분에서는 꼭 부가 설명을 해놓은 부분에서 이 책을 만들기 위해 세심한 배려를 기울인 흔적이 돋보인다. 후반부로 갈 수록 점점더 난이도를 높인 병렬처리 프로그램이 소개되며 OpenCL의 최근 변화된 부분과 OpenCL의 오브젝트 API함수들을 하나하나씩 소개하고 구문, 기능, 반환 값까지 상세하게 설명되어 있다. 마치 잘 정리된 OpenCL 라이브러리를 보는 듯 한 느낌마저 들었다.
아쉬운 점이 있다면 병렬화 시킬 수 없는 구조를 많이 언급해서 그 이유와 개선점을 찾아볼 수 있는 부분이 있었으면 좋을거 같다. |
|
이번에는 Open CL 프로그래밍에 대해서 리뷰를 작성하겠습니다.
먼저 Open CL은 병렬처리와 관련된 open code입니다.
Introduction 내용은 병렬 처리와 관련된 내용이 주를 이루고 있습니다. 이는 컴퓨터 아키텍쳐
과목에서 확인할 수 있는 부분입니다.
이 책의 장점은
Open Source를 이용하는 만큼 직접 코드를 사용해 볼 수 있는 내용입니다. 3장의 내용을 통해
직접 Code에 접근 할 수 있습니다.
또한 Open CL을 통한 예제 코드로 FFT를 구현하는 것과 난수 생성 프로그램을 만드는 내용이
있습니다. 이를 통해서 Open CL을 직접적으로 이용해 볼 수 있습니다. 따라서 이 부분을 통해서
Open CL을 사용하는 것에 익숙해 질 수 있을 것이라 생각합니다.
또한 책의 구성이 좋습니다. 확실히 Open CL에 독자를 잘 접근시켜 주고 있습니다.
책의 후반부에는 Open CL의 Ver의 변화와 함수 레퍼런스가 있습니다.
다만 이 책의 접근 장벽은 높은 수준입니다.
먼저 C언어에 대한 기본적인 이해가 필요합니다. 또한 기본적인 CPU에 대한
이해가 있어야 이 책을 보기 편할 것입니다.
Open Source에 대한 중요성이 커지고 있는 만큼 이 책이 Open CL에 대해서
큰 역할을 했으면 좋겠습니다.
이상 리뷰를 마치겠습니다. |