cuda 0번 강의를 보고 마음에 와닿아서
6개의 강의를 동시에 구매했어요!
제가 요즘 비전 프로그램을 개발 중인데 opencl을 이용하여 범용성 있게 프로그램을 구성하고 싶은데요.
혹시 opencl 강의도 찍어주시면 안될까요?
혹은 좋은 강의나 책이 시중에 이미 있다면 추천좀 부탁드려도 될까요? 구글에 너무 자료가 없어요...
SYCL 같은 경우는 MSVC와 호환도 안되구요..
선생님 안녕하세요!
igbtkd
작성일
23.06.06 14:12
조회수
438
CUDA 프로그래밍 (1) - C/C++/GPU 병렬 컴퓨팅 - CUDA 커널 kernel
실습환경 확보 - NVIDIA 그래픽 카드 필요 (파트 0 끝부분과 중복됨)
강의실 바로가기
댓글 1
안녕하세요. 🌞
우선 좋은 평가를 해주셔서 감사합니다.
OpenCL 쪽이 생각보다 강의나 교재를 구하기 힘드실 겁니다.
다른 이유가 있는건 아니고, CUDA 보다 늦게 나왔고, CUDA 보다 효율이 떨어진다는 점이 강합니다.
특히, NVIDIA 칩들이 CUDA 에 최적화되어 있고, OpenCL 쪽은 성능이 좀 떨어지게 나온다는 벤치마크 결과들이 좀 있습니다.
그래서, PC 플랫폼이나, 모바일 쪽에서도 칩을 선택할 수 있는 경우라면,
아예 NVIDIA 칩으로 고정시키고, OpenCL 대신 CUDA 로 프로젝트를 진행하는 경우도 있습니다.
또하나, OpenCL 을 택하시는 이유 중에, CPU, GPU 양쪽 모두를 동시에 병렬처리 해서,
CPU, GPU 모두가 미친듯이 일하게 만들어서, 최고의 성능을 노리자는 경우가 있는데,
이쪽은 load-balancing 이 생각보다 까다롭습니다.
처리 시간이나, 양쪽의 결과를 서로 공유해야 하는 문제 등등을 겪다 보면,
결국은 그냥 GPU 에 몰아서 처리 시키고, 대신 최적화나 더 시키자는 식으로 가게 되고,
그러다 보면, 어차피 GPU만 쓸거면, 쓰기도 어렵고 최적화도 까다로운 OpenCL 보다는
CUDA 로 가는 경우들이 많습니다.
SYCL 쪽은 다 좋은데, 말씀하신 대로, 컴파일러 이슈가 있습니다.
SYCL 이 C++ 11 이후의 template 기능을 활발하게 쓰고, LLVM 구조의 컴파일러에 적합하게 되어 있는데,
MSVC 는 사실... 최적화나 template 이슈 측면에서는 그다지 좋은 컴파일러는 아닙니다.
최적화 이슈를 겪는 프로젝트 들에서, 굳이 MSVC 대신, 더 비싼 컴파일러를 사는게 이유가 있는 셈이지요. 🍺
OpenCL 쪽 커뮤니티가 진입 장벽이 있는 또하나의 이유는 CUDA 가 먼저 만들어져서 일 겁니다.
OpenCL 이 나중에 나오면서, 그 시점에는 OpenCL을 사용하려는 사람의 대부분은 이미 CUDA를 쓰고 있어서,
OpenCL 표준을 만들던 사람들이나, 튜토리얼 만드는 사람들도 은연 중에, CUDA는 이미 공부하고 왔을 거니까,
이 정도는 알겠지, 내지는, 이거는 CUDA 에서 이렇게 했던 거를 여기서는 이렇게 하는 거야, 라는 식으로,
CUDA 기준으로 설명을 하다 보니까, OpenCL 부터 공부하시는 분들은 진입 장벽을 좀 느끼실 겁니다. 🍺
그래서, 일단 CUDA 부터 공부하신 후에, OpenCL 로 전환하면
대응되는 개념들이 용어만 바꿔서 그대로 나오게 됩니다.
사실상 같은 구조에서 같은 병렬처리 개념을 쓰고 있으니까요.
OpenCL 은 10시간 정도 분량의 단기 강의를 해 본 적은 있습니다만,
지금의 CUDA 강의처럼, 30시간 정도 분량으로 길게 강의를 해 보지는 않아서,
당장 강의를 개설하기는 힘들 것 같습니다만, 시간이 되는 대로, OpenCL 강의도 만들어 보겠습니다.
다만, 선생님의 열의와 학습속도로 보아서는, 제가 강의를 완성하기 전에,
선생님께서 먼저 OpenCL 전문가가 되어 있으실 것 같습니다. 🌞
즐거운 하루 보내세요. 👍
답글
igbtkd
2023.06.06정말 소중하고 도움이 되는 답변이었습니다.
감사히 강의 잘 듣겠습니다 :)