후하하핫
5k
2021-12-28 15:48:41
11
2526

밥 먹다 나온 얘기: 새로운 기술, 찍먹이라도 해볼걸!


오늘 친한 개발자 분들과 점심을 먹으며, CUDA에 대한 이야기를 하게 되었습니다. CUDA를 잘 모르시는 분들을 위해 설명 드리면, NVIDIA 그래픽카드의 연산 가속 기능을 이용할 수 있는 프로그래밍 언어 및 라이브러리라고 얘기할 수 있겠네요.


처음 CUDA가 나왔을 때를 저랑 그분이 기억하는데, 저희 둘 다 굉장히 그 기술에 비관적이고 비판적이었습니다. 당시는 DirectX 라는 기술을 통해 게임을 만들었는데, DirectX만 있으면 아래에 GPU 공급사가 인텔이든, 엔당이든, 라디온이든 상관이 없는데에 반해 CUDA를 쓸 이유가 없었거든요. 둘 다 저딴 기술은 어디다 쓰려고 만든걸까, 엔당 야욕이 너무 크네, 하고 비웃고 말았죠.


모바일 시대가 됩니다. DirectX는 버려졌지만, Unity 3D라는 게임 저작툴이 나오면서 로우 레벨의 그래픽 카드 API를 쓰지 않아도 되게 되었죠. 그럼에도 역시 CUDA를 할 이유는 없어 보였습니다. 정확히 CUDA의 역할을 하는 OpenCL이라는 공개 표준이 나왔고, 앞으로는 모바일 시대이기 때문에 CL이 모든걸 다 씹어먹을 거라고 생각했거든요.


인공지능 시대가 됩니다. 와우. 구글이 알파고를 만들었네요. TensorFlow를 썼다는데, CUDA로 짰답니다. 여기저기 오픈소스 회사와 회사들에서 CUDA 개발자를 찾습니다. 저랑 그분은 게임 프로그래밍을 많이 해서 GPU 구조는 알지만, CUDA는 할줄 몰랐기 때문에 참 애매한 신세가 되었습니다.


결국 저는 다시 CUDA를 공부해야 했습니다. 버전 8로 시작했는데, 얘도 역사가 있다보니 훑는데 시간이 길어집니다. 이때 한 후회는 두가지 였습니다.


1. 버전 1.0 나왔을 때 찍먹이라도 할걸: 원래 첫 버전은 완벽하지 않은 만큼 배울 요소도 적고, 발전 방향을 보며 전체적으로 파악하기가 좋은데, 버전이 너무 올라간 후에 접하다 보니 공부할게 많더군요.

2. 최소한 분산 프로그래밍 실습을 많이 할걸: 결국 CUDA 자체보다 그 아래의 근본적인 이론과 본질은 분산 병렬 프로그래밍인데, 이 분야에 대해서라도 공부와 실습을 많이 해놓았으면 좋았을걸, 이라는 생각이 들더군요.


어떤 사람이, 부정적으로 생각하는건 논리력만 있으면 되지만 긍정적으로 생각하는건 상상력도 필요한 작업이라 더 고되다고 하더군요. 그래서 대부분의 사람들은 긍정적으로 생각하기보다, 부정적으로 생각하고 끝내버린다고요.


혹자는 변화가 빠르고 새로운게 쏟아지는 기술업계에서는 에너지가 한정되어 있기 때문에 버릴걸 버려야 한다는 얘길 합니다. 일정부분 동의하지만, 최소한 기술 업계에서 좋은 기술은 대박이 날 수 있고, 못난 기술에서도 배울게 있기 때문에, 저는 저 깨달음 이후로 새로운 기술이면 일단 뭔지 찾아라도 보고 튜토리얼까지는 해보는 습관은 가지게 되었습니다.


도움이 되시길!

16
3
  • 댓글 11

  • 유니파
    688
    2021-12-28 16:17:19

    부정적으로 생각하는건 논리력만 있으면 되지만

    긍정적으로 생각하는건 상상력도 필요한 작업이라 더 고되다

    좋은말 하나 또 배워갑니다...

  • dudgh107
    1k
    2021-12-28 16:45:04

    쿠다고모고 비코를 샀어야했는데

  • 후하하핫
    5k
    2021-12-28 17:05:16

     dudgh107: 전 제가 두배 되는 순간 팔았을거라는 것을 알기 때문에 아쉽진 않습니다 ㅎ

  • 네입티브
    118
    2021-12-28 18:37:57

    CUDA 자체 Api와 문법 보다는 개인적으론 OpenCV와 같이 GPU 행렬연산을 가능케 하도록 한번 wrapping 해주고 기본적인 threshold나 bitwise elementwise 연산을 지원하는 오픈소스 라이브러리를 사용하는것을 선호합니다.


     어차피 GPU까지 가야하는 연산 태반이 행렬이고. 연산이 얼마나 빠를지는 그 이하의 로우레벨단에서 자잘한 로드를 최적화하기보다는 얼마나 계산식을 벡터화 잘 했냐에 달렸다고 보거든요

  • 후하하핫
    5k
    2021-12-28 18:41:48

    @네입티브: 그게 안되는 경우가 많습니다. 특히 분산 시스템 레벨로 넘어가서 streaming이나 zero-copy 같은걸 고려하면서 코딩 하는 경우에 결국에는 CUDA API 수준으로 내려가서 코딩해야 합니다.

    또한, 정말 optimal한 속도를 내려면 그래픽 카드 그 자체의 스펙도 고려해야 합니다. 경우에 따라선 heterogeneous 한 그래픽카드들을 고려해야 할 수도 있고요.

    한대의 서버를 사용하고 구체적인 application이 정해져 있다면 말씀하신게 가능할 수도 있지만, 사실 그 상황에서도 접근 순서를 고려한다거나 shared memory를 optimal 하게 사용하려면 어쨌든 가장 낮은 레벨로 가야합니다. 극한의 퍼포먼스 향상을 노릴게 아니면 CUDA를 쓸 필요가 없고, CUDA를 쓴 이상 성능을 짜내야 하거든요.

  • 트밀
    7
    2021-12-29 18:26:51

    이런 살아있는 고민을 접할 수있어서 너무 좋네요. 후하핫님 글 매일 접할 수 있어서 특히 너무 좋습니다. 귀한글 써주셔서 감사합니다. 

  • 제타건담
    8k
    2021-12-31 11:19:50

    쓰신 글의 내용이 아주 틀린 말은 아니지만..현실적인 것도 생각해볼 필요가 있습니다..

    지금 이 순간에도 컴퓨터에 사용되는 언어와 기술은 여러가지가 있습니다만 그 중 대세라고 여겨질 기술은 손꼽을 정도입니다..

    그리고 여기서 더 문제가 되는 것은 그 대세라고 여겨지는 기술이 계속 바뀌어 가고 있다는거죠..

    찍먹이라도 하면 좋다 하시지만 그렇다고 찍먹을 하기엔 그럴 시간이 부족한것도 사실입니다..

    왜냐면 지금 대세인 기술들도 그 대세의 위치를 유지하기 위해 계속 발전하고 있고 우리는 그 대세에 뒤쳐지지 않기 위해 또 공부해야 하니까요..

    결국 어찌보면 이것도 선택과 집중의 문제입니다..누군가는 CUDA가 장래에 대세가 될 꺼란 생각에서 그걸 밀었을꺼고(TensorFlow 를 만든사람은 CUDA 가 대세가 될 수 있다..라는 생각하에 그걸로 만들었겠죠..아니면 접근하는데 있어서 CUDA 가 편해서 그럴수도 있겠지만..) 또 그 결과로 이러한 현상이 나타났겠죠..


    사실 이것이 대세가 될꺼야 라고 생각하며 접근할 수 있는 사람은 흔치 않을겁니다..왜냐면 그건 미래를 알아야 가능한거니까요..다만 우리가 할 수 있는건 현재의 여러 기술들 중에 이슈로 올라오고 있는 것들을 빠르게 잡아야 합니다..그러기에 귀를 넓혀야죠..귀를 넓히되 가볍게 들어야지..어느 하나만 꽃혀서 들으면 안됩니다..그리고 자신이 판단해야겠죠..가장 베스트는 귀를 넓히면서 꽃혀서 들어야 하지만 그럴 여력이 없습니다..그리고 거기에서 긍정과 부정으로 판단하겠죠..


    살면서 느끼지만..스티븐잡스 가 세상에 본격적으로 뜨면서 나왔던 선택과 집중..이 문구가 우리 인생의 여러 분야에 그대로 적용되는 것을 느끼네요..

  • 후하하핫
    5k
    2021-12-31 11:35:24

    @제타건담: 말씀 하신 부분에 동감하면서도, 그래도 저의 경우에는 시간을 많이 투입해 찍먹은 합니다. 다만 모든 기술을 하진 않고, 최소한 입에 오르내리는 기술들에 대해서 해봅니다. (사실 더 정확하게 제가 해보는 시점은 Linkedin에 올라오는 북미 베이스 회사들의 채용 공고에 그 기술이 오르락 내리락 할 때 입니다. 이때부터가 현실적으로 사용되는 것이라고 보거든요)


    예를 들어서, 쿠버네티스라는 단어를 참 많이 듣는데, 이 정도로 화제가 되는 것의 튜토리얼을 돌려 보는 것은, 특히 요새 같은 때는 튜토리얼도 잘 되어 있어서, 아무리 길어도 1시간을 넘기지 않습니다. 저는 이 정도 시간을 투입하는 건 아깝지 않다고 생각하는 입장이고 (물론 이것을 위해 기술에 절대시간을 많이 투입하긴 합니다만), 특히 익숙해지면 찍먹하는 속도는 빨라지기 때문에 부담이 되진 않더라고요.


    입장 차가 있을 순 있을 것 같습니다.

  • HJOW
    4k
    2021-12-31 13:33:00

    나중에 엔비디아가 일반그카 또한 가격을 뒤에 0을 두개 붙여버려도 울며 겨자먹기로 사야되는 시대가 올 수도 있겠다 싶네요. 경쟁사 AMD GPU에서는 CUDA가 동작하지 않거든요.

  • OKKY
    3k
    2022-01-01 02:37:15
    해당 게시물은 관리자에 의해 사는얘기에서 칼럼로 이동 되었습니다.
  • hoon Cli
    100
    2022-01-03 09:13:42

    엔비디아는 추천입니다. gpgpu를 만든 황회장 찬양해

  • 로그인을 하시면 댓글을 등록할 수 있습니다.