Showing posts with label GPU. Show all posts
Showing posts with label GPU. Show all posts

Tuesday, April 25, 2017

전문가 대담: 눈 앞으로 다가온 기계학습의 시대와 GPU 컴퓨팅

한국 IBM의 유부선 상무를 만나 Machine Learning/Deep Learning의 연산 플랫폼으로 새로이 관심이 집중되고 있는 GPU 컴퓨팅과 인공지능의 현재와 미래에 대하여 전반적인 이야기를 나누었다. 그 중에 GPU 컴퓨팅을 바탕으로 co-processor 그리고 시장에 새로이 소개된 기술과 이를 기반하는 시장의 전망까지의 인터뷰를 정리하여 여기에 싣는다. 대화 중에 등장한 전문용어는 이해를 돕기 위해 설명을 겯뜨렸다.

유부선 상무는 1996년 한국IBM에 입사했다. 이후 현재까지 기술영업 최일선에서 일하고 있으며, IBM Power Systems를 바탕으로 UNIX, Linux 그리고 Big Data 및 GPU 컴퓨팅을 지원하고 있다. 한국IBM에서 최고 엔지니어로 평가받고 있으며, 두터운 고객의 신뢰는 그 증거이다.

X X X X X

– GPU computing이란 무엇인가요?

> GPU를 이용한 컴퓨팅을 말합니다. 여러가지 병렬단순계산 작업을 GPU를 이용해서 가속화하는 컴퓨팅, 대표적인 것으로는 과기연산용 HPC 업무 및 금융 관련 위험 관리 업무 등에서의 대규모 계산 등이 있습니다. 최근에는 Machine Learning/Deep Learning (기계학습(機械學習)/심층학습(深層學習), 이하 ML/DL) 쪽이 각광받고 있습니다.

본 대화에서 언급되는 GPU는 GPGPU(General Purpose Graphic Processing Unit)를 말한다. 영상 출력을 담보하지 않는 일반연산용 GPU이다. 이에 대한 일반적인 설명은 이전 글을 참조하면 좋겠다.

– GPU 컴퓨팅을 말할 때 '병렬'과 '가속'이라는 표현이 항상 함께 등장합니다. 그렇다면, GPU 컴퓨팅에서 이 두가지에 대하여 특별한 능력을 발휘한다는 뜻으로 해석도 가능하다고 보는데요, 이런 '병렬'과 '가속'을 목적으로 하는 연산에서 반드시 GPU를 사용해야 할 이유가 있나요? 혹은 다른 유용한 방식 또한 존재하나요?

> 일단 GPU가 하는 일을 모조리 CPU가 해도 되고, 어떤 경우에는 CPU가 할 때 더 빠른 경우도 꽤 많습니다. 단지 계산이 단순한데, 굉장히 많이 병렬화 할 수 있다면, GPU를 활용하는 것이 더 빠르고 더 저렴하게 할 수 있겠습니다. 하여 GPU가 주목받게 된 이유이고, 병렬화 할 수 있는 것이 많지 않다면 CPU로 연산하는 것이 더 좋은 결과를 가져올 때도 있습니다.

– 그럼에도 불구하고 GPU를 많이 언급하는 것은 아무래도 효율이 더 좋아서 그런 것인가요?

> 결국 효율의 문제이고, 더 빠르게 더 적은 비용으로 할 수 있다면 어떤 방식의 하드웨어를 선택하든 문제는 없습니다.

– 일반적으로 GPU의 스펙을 보면, core 수가 엄청나게 많은 걸 알 수 있습니다, 앞서 말씀하신 업무의 특성과 관계를 보면, 어떤 설계의 방식이 반영되었기 때문에 그런 효율을 내고, 이렇게 많은 core를 집적화 활 수 있는 것인가요? 그리고 CPU의 core와 GPU의 core는 결정적으로 다른 점이 무엇일까요?

> 현대적인 CPU는 막연히 clock speed가 높다 cache가 많다 – 그런 것 뿐만 아니라, core내에서 병렬화를 통합 성능 향상을 위해 CPU의 하드웨어 instruction set을 설계할 때 branching이라든가 predication이라든가 여러가지가 구현되어 있습니다. 그에 비해 GPU는 그런 것들이 생략된, SIMD같은 '단순연산'을 하는데 최적화된 core를 가지고 있어요.

Branch: 브랜치(branch)는 컴퓨터가 다른 명령 시퀀스를 실행하기 시작하게 하여 명령을 순서대로 실행하는 기본 동작에서 벗어나는 컴퓨터 프로그램의 명령이다. 브랜치(또는 분기 된 브랜치)는 또한 분기 명령을 실행 한 결과로서 실행을 다른 명령 시퀀스로 전환하는 단계를 포함한다. 분기 명령어는 조건부에 따라 분기를 수행하는 무조건 부 분기 또는 분기를 유발할 수도 있고, 하지 않을 수도 있는 조건 분기일 수 있습니다. 분기 명령은 프로그램 루프 및 조건(즉, 특정 조건이 충족되는 경우에만 특정 명령 시퀀스를 실행)에서 제어 흐름을 구현하는 데 사용된다. https://en.wikipedia.org/wiki/Branch_(computer_science)

Predication: 컴퓨터 과학에서 프레디케이션(Predication)은 조건부 분기 명령어의 대안을 제공하는 아키텍처 기능이다. 프레디케이션은 브랜치의 두 경로 모두에서 명령을 실행하고 취해진 경로의 명령 만 아키텍처 상태를 수정할 수 있게 한다. 취해진 경로의 명령어는 명령어가 아키텍처 상태를 수정할 수 있는지 여부를 제어하기 위해 명령어가 사용하는 부울 값 인 술어로 연결 (예측)되어 있기 때문에 아키텍처 상태를 수정할 수 있다. https://en.wikipedia.org/wiki/Branch_predication

SIMD: Single Instruction, Multiple Data를 의미한다. 마이클 플린이 분류(Flynn's Taxonomy)한 컴퓨터 아키텍처의 한 종류로, 단수의 명령어로 다수의 값을 동시에 계산하는 병렬연산의 한 방식이다. https://en.wikipedia.org/wiki/SIMD

SIMD2.svg
By Vadikus - Own work, CC BY-SA 4.0, Link

– 그렇다면, '단순연산'과 그렇지 않은 연산, 즉 '복잡연산'의 차이를 어떻게 구분할 수 있을까요?

> 가장 쉬운 건 if/then 즉, 조건문이 들어 가느냐? 아니냐? 로 구분하는 것이 제일 좋을 듯 합니다. 만약 새로 들어온 값이 10보다 크냐? 작으냐? 에 따라서 연산하는 것은 복잡한 연산으로 GPU에 적합하지 않구요, 그냥 테이블이 100만개 칸이 있는 행렬이 두 개 있는데, 같은 칸 끼리 동시에 더하거나 곱하거나 빼거나 나누거나 하는 게 단순연산이고, GPU에 맞죠.

– GPU에 대해서 찾아보면 co-processor라는 말이 항상 따라오고, 부동소수점연산이라는 말도 함께 쓰이는 것을 알 수 있었습니다, 그럼 GPU는 co-processor이고, 하는 일은 부동소수점연산이다 – 라고 봐도 무관할까요?

> 반드시 그런 것은 아닙니다. 지금까지 GPU가 주로 한 일이 과학기술에 관련된 연산이나 금융업에서 크고 작은 숫자를 계산하는데 사용되었기 때문에 부동소수점계산이 언급되는데, 주로 쓰임이 그렇다 보니 그 방향으로 개발되어 왔고 현재 그렇게 널리 사용될 뿐입니다.

초기 microprocessor는 부동소수점 연산을 위한 능력을 따로 갖추고 있지 않았다. 이를 위해 다른 하드웨어 장치를 사용하기도 했다. Co-processor가 바로 그것이다. PC 수준에서 이와 같은 이야기는 아마도, Intel의 오래된 CPU를 기억해 낸다면, 바로 그것이다. 486DX, 486SX등의 이름으로 시장에 나왔다. 이 중 SX가 부동소수점 연산을 위한 설계가 반영되지 않은 제품이었고, DX가 이를 반영한 제품이었다. 상대적으로 SX가 저렴 했으며, 일반 PC 사용자에게 부동소수점연산의 이점이 크게 없었음으로 많은 판매가 이루어졌다. 또한 Intel은 487SX과 같은 co-processor를 따로 판매하기도 하였는데, 'Math CoProcessor'라는 이름으로 시장에 알렸다. 486SX를 사용하다가 나중에 이를 추가할 수 있었다. 이를 위한 소켓도 마더보드에 위치해 있었다.

KL Intel i487SX.jpg
By Konstantin Lanzet (with permission) - CPU collection Konstantin Lanzet, received per EMail, CC BY-SA 3.0, Link

– co-processor 시장을 보면, Nvidia의 Tesla, Intel의 Xeon-Phi가 눈에 띕니다. Tesla와 Xeon-Phi은 어떤 점에서 차이를 설명할 수 있을까요?

> 같은 역할을 수행한다는 점에서는 비슷하다고 말할 수 있겠습니다. 하지만, 전혀 다른 제품입니다. 차이점은 소프트웨어 쪽에서 쉽게 찾을 수 있는데요, Nvidia는 CUDA라는 개발환경이 제공되고 현재는 산업표준처럼 시장에서 인식하고 있습니다, Nvdia의 GPU는 CUDA에 '당연히' 최적화 되어 있습니다. 그에 비해, Xeon-Phi는CUDA과 비견할 만한 에코-시스템이 없는 형편입니다. 그리고 Xeo-Phi는 Intel CPU의 기존 core들을 굉장히 단순화하여 집적화 시킨, 그러니까 기존 x86 CPU에서 크게 변화하지 않은 점을 들 수 있겠습니다.
대신 Xeon-Phi는 특이하게, co-processor mode로만 쓰이는 것이 아니라, host mode로도 사용할 수 있습니다. 기존의 x86 플랫폼의 OS를 그대로 사용할 수도 있다는 뜻입니다. 물론 성능은 대단히 좋지 않다고 들었습니다.

– 하나의 co-processor card를 co-processor mode와 host mode로 전환해서 사용할 수 있다는 이야기인가요?

> co-processor로 쓸 수 있는 하드웨어와 host로 쓸 수 있는 하드웨어는 서로 다릅니다. 상호 전환해서 쓸 수 있는 건 아닙니다. 재미있는 점은, Xeon-Phi 이야기를 많이 들어보기는 했지만, 지금까지 만나온 여러 고객들 중에 Xeon-Phi를 ML/DL에 사용하는 경우를 보지 못 했다는 것입니다.

Intel의 Xeon-Phi는 자사의 Atom 프로세서와 같은 core 기반으로 만든다고 한다. Intel Xeon Phi는 processor와 Coprocessor로 명명된 제품이 있다. 공식 명칭에서 이렇게 구분하는 것처럼, Xeon Phi Processor는 운영체제를 직접 동작시킬 수 있는 host로 사용되고, Xeon Phi Coprocessor는 co-processor로 컴퓨팅 시스템의 PCIe Slot에 장착된다.

Intel Xeon Phi Coprocessor © Intel

Intel Xeon Phi Processor로 구성된 compute server © Intel

– ML/DL에 관한 글을 찾아보면 GPU에 대한 언급이 아주 많습니다. 세계적인 ML/DL 권위자인 Andrew Ng[吳恩達]의 강의를 봐도 GPU의 역할에 대하여 언급하고 있습니다. 이 둘의 관계는 앞서 말씀해 주신 '단순연산' 영역에서 GPU가 탁월하고 ML/DL은 그러한 '단순연산'의 영역에 있는 컴퓨팅이기 때문이라고 이해하도 될까요?

> ML/DL에 반드시 GPU를 사용해야 하는 건 아닙니다. 어떤 대규모 neural network을 운영하는 곳에서 CPU를 더 많이 사용한다는 이야기도 있습니다. 아시다시피 Google 같은 곳은 TPU를 자체 제작하여 쓰고 있기도 합니다. 다만, GPU를 널리 언급하는 것은 그것이 비용효율적이기 때문이라고 전 이해하고 있습니다.

– 결국 하드웨어 중심의 특별한 기술적인 장점보다는 어떤 기술의 도입이든 성능대비 비용효율이면 ML/DL에서 좋은 시스템이라고 판단할 수 있겠군요. 그렇다면, 최근 IBM이 시장에 선보이고 있는 GPU 시스템인, S822LC for HPC는 어떤 제품입니까?

> 기술적인 장점 뿐만 아니라, 비용효율적인 운영면에서도 좋은 시스템입니다. 특히, 다른 제품에서는 해결하지 못 하고 있는 문제, GPU와 CPU 간의 병목문제를 해결한 점에서는 높은 가치가 있는 시스템이라고 할 수 있습니다.

IBM S822LC for HPC는 ML/DL을 위해 디자인 되어 있다. 2U form factor 크기인 이 시스템은 표준 19인치 랙 마운트 형식으로, GPU로는 Nvidia Tesla P100이 탑재되고 총 수량은 4개까지 수용된다. CPU는 Power8 2 소켓으로 구성되며 총 20개 혹은 24개 core 구성이 가능하고 core 당 8개 threads를 제공한다. 메모리는 32GB 구성에서 1024GB 구성까지 가능하다. 또한, 대규모 구성을 위한 수냉식 옵션도 제공한다.

운영체제로는 현재 Ubuntu가 공식 지원되며 곧 RHEL도 그 목록에 들어올 것이다.
S822LC for HP, 이 제품은 무엇보다 Nvidia가 설계한 NVLink가 최초로 반영된 시스템이다. 이 NVLink는 기존 PCIe 3.0 x16 대비 5배 넓은 대역폭을 자랑하며 CPU와 GPU 그리고 GPU와 GPU를 직접(Peer-to-Peer)연결한다. 이를 통하여 ML/DL에서 항상 하드웨어의 제약으로 생각되던 PCIe 버스의 I/O 병목현상을 획기적으로 해결할 수 있다.


– 이런 제품을 고객과 이야기를 해 보면, 실제로 IBM 왓슨으로 대표되는 클라우드 컴퓨팅 기반의 intelligence services와 비교를 많이 한다고 합니다. S822LC for HPC와 클라우드 기반의 intelligence services를 단적인 차이점을 말씀해 주신다면?

> 내가 고기를 사서 고기를 구워 먹느냐? 음식점에 가서 스테이크를 시켜 먹느냐? 와 정확히 일치한다고 할 수 있습니다. 호수산 와규든 국내산 한우든 내 기호와 예산에 맞추어 직접 고기를 고를 수 있고, 무엇보다 중요한 건 굽는 방법 등을 스스로 채득하여 지적자산으로 보유할 수 있다는 것이 있겠죠. 그게 아니고, 고급 레스토랑에 가서 사 먹으면 확실히 빠른 시간 내에 더 좋은 것을 먹을 수 있긴 한데, 돈도 많이 들고 자신에게 (경험과 지식이) 쌓이는 건 훨씬 더 적겠죠.

– 가까운 미래에, GPU 혹은 GPU와 같은 co-processor가 보편적인 컴퓨팅 시스템에 전반적으로 탑재될 가능성은 있을까요?

> 그럴 가능성은 없다고 봅니다. 보편적인 컴퓨팅 유형과 co-processor가 필요한 영역은 확연히 구분됩니다. ML/DL 혹은 유사한 분야에 참여하는 기업 ⋅ 연구소⋅ 개인은 지금보다 확실히 늘어나겠죠, 그에 따른 시장도 확대되는 건 예상할 수 있겠습니다.

– Power Systems의 로드맵을 보면, 차세대 POWER CPU, POWER9에서 OpenCAPI(CAPI 3.0)와 NVLink 2.0를 동시에 사용하는 것으로 보이는데요, 이 두가지가 하나의 버스인가요? 아니면 각자의 독립된 버스를 사용하는 것인가요?

> POWER9에 사용하는 OpenCAPI와 NVLink의 차세대 2.0 버전은 같은 버스를 씁니다. 25GB/s 링크입니다. 이는 PCIe와는 관계가 없고, PCIe도 4.0으로 소개될 것입니다.

IBM 서버 컴퓨팅 플랫폼의 차세대 CPU인 POWER9은 2017년 말에 시장에 소개될 예정이다. CAPI 3.0 즉, OpenCAPI라는 IBM의 버스 기술과 Nvidia의 NVLink 2.0을 동시에 사용할 수 있을 뿐만 아니라, PCIe Gen 4도 탑재될 것으로 알려져 있다. CPU와 I/O 모두 새로운 세대로 본격 진입하게 된다. Nvidia는 NVLink 2.0을 POWER9을 통해 처음 세상에 선보이게 되고, 이 때 현재 Tesla Pascal의 다음 세대인, Tesla Volta가 시장에 나올 것으로 알려지고 있다. 이에 대한 상세한 정보는 IBM developerWorks에 소개되고 있다. CAPI에 대한 정보는 Wikipedia에 잘 정리되어 있다.

X X X X X

---
이 글은  developer.ibm.com/kr 에 cross posting 됩니다.
관련 글: https://developer.ibm.com/kr/author/jhin/
같은 글: https://developer.ibm.com/kr/systems/gpu/2017/04/25/ask-a-professional-what-is-gpu-computing-and-machine-learning-around-us/

Monday, October 24, 2016

S822LC for HPC를 만나다! GTCx Korea 2016에서

최근 하드웨어 관련 컨퍼런스에서 이렇게 사람이 많이 모여 있는 것을 본 적이 없다. 하드웨어는 이제 어셈블리나 코볼이나 포트란처럼 존재하기는 하지만 거의 잊힌, 그런 모습이었다. 하지만, GTCx Korea 2016에서는 완전히 다른 분위기였다.


IBM Power Systems S822LC for High Performance Computing. 개발 코드 이름은 Minsky. 인공지능학계에 위대한 업적을 남기신 Marvin Lee Minksy 박사님의 이름을 따서 썼다. 그 분의 별세 소식을 접한 당시 개발팀에서 애도 표하고 업적을 기리는 의미로 Minsky라는 이름을 '감히' 따서 섰다.

S822LC for HPC는 세계 최초로 NVLink가 탑재된 서버이다. 잠깐만! DGX-1이라는 Nvidia의 레퍼런스 시스템에도 NVLink가 있지 않는가? 그렇다 맞다, 하지만 S822LC for HPC는 DGX-1과는 달리 GPU to GPU NVLink가 있는 것 뿐만 아니라, 최초의 설계 사상에 따른, CPU to GPU NVLink도 탑재되어 있다. 진정한 NVLink가 동작하는 최초의 하드웨어이다.


그렇다면, NVLink라는 것이 GPU 간의 버스로 동작하면 그만이지 굳이 CPU와 GPU간의 연결 버스로 설계되어야 하는가? 그렇다. 큰 차이를 만든다. GPU를 통한 연산을 할 때 가장 큰 병목이 발생하는 구간이 CPU와 GPU 간이다. 종례의 3세대 PCIe x16를 사용할 경우 사용할 수 있는 최대 I/O 대역폭은 32GB/s, 그러나 NVLink는 80GB/s의 대역폭을 지니고 있다. NVLink는 또한, 다른 모든 I/O가 사용하는 PCIe와는 달리, CPU - GPU - GPU만을 위한 독립 버스이다. 만약 당신의 GPU 기반의 병렬연산이 그렇게 빠르지 않은 것 같은 느낌이 있다면, 바로 제대로 된 NVLink가 필요하다는 뜻이고, S822LC for HPC를 지금 써 봐야 한다는 이야기가 된다.


S822LC for HPC는 이렇게 생겼다. 사진 하단이 정면이고, 전시를 위해 상부 덮개는 제거해 두었다. 아, 전면 덮개도 떼어 놓았다. 사진에서 보이는 것과 같이 공기 흐름는 메모리 > CPU + GPU > GPU + PCIe 를 단계로 거치게 된다. 메모리 모듈이 가장 먼저 '찬 공기'를 만나는 설계이다.

앞 쪽에 4개의 팬이 있다. 우측에 검은색으로 보이는 부분은 디스크 혹은 SSD가 장착되는 SFF 베이이며, 사진 속 전시 제품은 960GB SSD 두 개가 있었다. 우측에 전원 스위치와 USB 3.0 포트도 나란히 있다.



가운데 부분은 메모리 모듈이며, DIMM 4개가 한 보드에 장착되어 시스템과 연결된다. 전시 제품은 16GB DIMM이 장착되어 있었으며, 하나의 메모리 모듈 당 4개의 DIMM이 설치 될 수 있다. 그리고 메모리 모듈은 총 8개가 시스템에 연결된다. 16GB * 4 * 8 = 512GB 메모리가 장착되어 있었다. 이 제품은 4GB · 8GB · 16GB · 32GB DDR4 DIMM을 지원하니, 최대 1TB 메모리를 장착하여 사용할 수 있다. 전시제품의 DIMM 제조사는 삼성전자.


구리색 방열판 아래에 있는 칩이 Nvidia의 Tesla P100이다. 이 시스템은 최대 4개의 P100이 장착될 수 있고, 사진 속의 시스템도 그렇다. 은색 방열판 아래에 있는 칩은 POWER8 CPU이며, 8 core 3.25GHz 또는 10 core 2.86GHz POWER8 CPU가 2개 장착된다. 앞서 강조한 NVLink를 위한 GPU 소켓이 마더보드에 있고, 바로 옆에 CPU 소켓이 설계되어야 하기에 DIMM 슬랏이 제거되고 모듈 형태로 독립된 구역에 설계되었다. 흥미로운 구조이다.


뒷면에서 보면 이런 모습이다. 두 개의 전원공급장치가 위치하고 있다, 각 1300W라고 기억한다. 사진으로는 자세히 보이지는 않지만, Mellanox에서 제작한 IB 카드와 10Gb 이터넷 카드도 장착되어 있다. IBM · Nvidia · 삼성전자 · Mellanox, OpenPOWER 재단의 주요 회원사들간의 부품들이 있는 것이다.

옆 부스에서 DGX-1도 봤다.


아랫쪽에 Intel Xeon과 DIMM이 장착되는 큰 서랍이 있고, 상부에 P100 8개가 장착되는 구조였다. 사진에서 느껴지는 것처럼 거대했다.


위 사진은 상판 덮개와 앞쪽 덮개. 자세히 보면, S822LC라는 모델명을 읽을 수 있다.

부스에서 방문객들의 질문을 받으면서 두 가지에 놀랬다. 하나는 질문의 수준이 매우 높았다는 것이고, 다른 하나는 그렇게 많은 사람이 찾아와 질문을 했다는 사실이다. 둘 다 '전혀' 예상하지 못했다. 어쩌면 이 기계는 기계가 잊힌 시대에 기억되는 기계가 될 수도 있겠다는 생각을 잠시 했다.

Friday, July 22, 2016

오픈소스, OpenPOWER 그리고 GPU

변화와 혁신의 진원, 오픈소스 운동과 OpenPOWER 그리고 GPU로 여는 새로운 컴퓨팅의 세계

세상은 변하고 있습니다. 지난 세대도 지금의 세대도 앞으로의 세대도 변할 것임이 분명합니다. 이런 일반원칙이 가장 잘 적용되는 곳이 바로 IT 세계라고 생각합니다.
초기의 컴퓨팅 환경은 매우 흥미로웠습니다. 한 번의 연산을 수행하기 위하여 책상 위에서 완성한 코드가 적힌 공책을 손에 쥐고 키 입력의 순서를 기다리는 프로그래머들의 모습은 구텐베르크 혁명 이전의 시대, 세상에 몇 없던 도서관에서 중요한 서책의 한 부분의 필사를 원하는 수도사들과 다르지 않았을 것입니다. 이러한 모습은 네트워크 장치와 통신 방법의 발전과 일반화로 변하게 되었고, 많은 사람들의 협업과 세속적 이윤을 추구하기 위한 노력의 결과로 조금씩 보편화 되었습니다. 그리고 이제는 거의 모든 컴퓨터가 항상 온라인 상태를 유지하고 심지어 지금 우리의 호주머니 속에 있는 휴대전화도 매우 훌륭한 정보단말기로서의 역할을 온종일 수행할 수 있게 되었습니다.


이런 통신의 발전은 컴퓨팅이라는 일반연산 수행 방법과 결과 조회의 상황에 많은 변화를 주었습니다. 서버 없는 서버 설계가 가능하게 되었고, 소유하지 않으면서 정보를 생성하고 조회하고 가공하여 가까운 미래를 누구보다 먼저 예측할 수 있는 사업 모델을 만들어 낼 수도 있게 되었습니다. 그리고 이 발전은 매우 급진적이고 눈부셔서 당장 다음 세대를 예견하는 것은 매우 힘든 일이 되었고, 어쩌면 다음 주의 IT 헤드라인이 무엇이 된다 하여도 아무도 놀라지 않을지도 모를 일입니다.
혁신에 혁신을 더 하고 그 혁신이 창조적인 방법을 만들어 내고 창조적 방법들이 미래를 오늘날로 당겨오는 과정을 빠르고도 빠르게 진행시키는 것입니다.

그렇다면, 이런 혁신의 주체는 과연 누구일까요?
아무도 아닐 수 있을 만큼 모두가 될 수도 있습니다. 종례의 시간에는 비즈니스 리더쉽에 의존한 몇몇 독점적 특허와 판매 모델로 무장한 소수의 사람들이 부를 장악하고 그 장악력을 바탕으로 자신이 제어할 수 있는 범위 내의 새로운 제품을 시장에 소개함으로써 기술의 방향성을 설정하고 미래를 이야기할 수 있는 권리를 획득했습니다. 몇몇 건전한 기업은 이를 통하여 전인류의 복리에 기여했겠지만, 대부분의 기업은 독점적 지위에 편승한 제한된 혁신을 매력적인 제품에 차등 주입함으로써 가까운 미래를 먼 미래로 돌려 보내는 일도 서슴지 않았습니다.

하지만, 오늘날의 혁신은 이와 같지 않게 되었습니다. 전세계에 산재(散在)되어 제자백가(諸子百家)의 소리를 내던 해커들이 차근차근 이어온 오픈소스의 작은 혁명은 새로운 협업의 좋은 예로 인식되기 시작했고, 기업들은 보다 개방적 혁신을 세상에 제공하기 위하여 이러한 사상을 수용하였습니다. 그렇게 오픈소스 프로젝트는 보다 실속 있고 현실 세계의 변화를 주도하는 주효한 역할을 지속적으로 수행할 수 있게 되었습니다. 지금의 세상 지금의 IT의 혁신은 바로 이 오픈소스 운동에 기반한다고 하여도 과언은 아닐 것입니다.

오픈소스 운동은 70년대를 거치면서 자가개발 운영체제에 탄생되었다고 할 수 있습니다. 어쩌면 최초의 설치가능한 운영체제와 소프트웨어는 모두 오픈소스였다고 해도 괜찮을 것입니다. 그리고 지금도 오픈소스 운동은 소프트웨어의 발전 동력으로 평가되고 있습니다. 하지만, 오픈소스 운동은 운영체제 커널을 비롯한 각종 소프트웨어에서만 찾아볼 수 있는 것은 아닙니다. 하드웨어 그것도 가장 핵심적인 중앙처리장치(CPU)에서도 이미 진행 중입니다.


IBM은 수년 전 자사의 가장 핵심적인 기술 중의 하나인 Power 프로세서를 오픈소스로 기술을 공개했습니다. 바로 OpenPOWER가 그 이름이고, 이를 유지하기 위한  재단도 설립하였습니다. 원천기술을 제공한 IBM을 비롯한 NVIDIA, Google, Mallanox, Tyan그리고 우리에게도 익숙한 삼성전자가 함께 시작한 이 OpenPOWER는 현재, 전세계 주요 IT 회사들 뿐만 아니라 연구소 등 단체와 개인들이 참여하여 함께 꾸려가는 또 하나의 거대한 오픈소스 프로젝트가 되었습니다.

단순히 CPU 설계 기술을 공개했을 것만 같은 이 오픈소스 프로젝트는 리눅스가 기반하는 컴퓨팅의 자유를 더 넓은 세상으로 확대하게 되었고, 주요 배포판 제작사들이 모두 참여하는 든든한 바탕이 완성되었으며, 이러한 결과로 IT 인프라를 설계하고 주요 워크로드의 적절한 배치를 고민하는 기획자들에게 유효한 선택자가 되었습니다. 이에 대한 아주 좋은 사례로 Google이 자사의 IT 인프라에 OpenPOWER를 선택했다는 것에서 찾을 수도 있겠습니다.
하지만, 더 빛나는 결과는 이제 곧 펼쳐질 예정입니다.

GPU, Graphic Processing Unit은 과거 단순한 연산의 결과를 화면에 출력하는 프레임버퍼 역할에서 독자적인 연산 즉, CPU와 버금가거나 어쩌면 그에 우월하는 일반연산 영역까지 확대되고 있습니다. 이에 대하여 이견을 제시하는 사람은 아마 없을 것입니다. 1999년 이 장(章)의 첫 쪽을 멋있게 연 Nvidia는 GeForce라는 이름을 게임을 즐기는 한정 사용자 뿐만 아니라 IT에 관심을 가지지 않았던 사람들에게까지 알리는 계기가 되었고, 누구보다도 앞서서 혁신을 거듭하고 있습니다.


1999년 이후 거듭 세상을 놀라게 했던 GPU는  그래픽 출력의 영역을 일찍이 넘어 CPU와 더불어 연산의 차원을 확장하는 역할을 수행하고 있습니다. CPU의 발전의 제한을 GPU를 통하여 뛰어넘는 결과가 펼쳐지고 있는 것입니다. 이를 위하여 Nvidia는  NVLink라는 놀라운 버스 기술을 선보였고, Pascal 마이크로아키텍처를 바탕으로 하는 Telsa P100 GPU를 발표했습니다. 그리고, 이 새로운 세대의 GPU, Pascal 마이크로아키텍처를 완성하는 NVLink는 OpenPOWER 재단을 중심으로 IBM과 Nvidia의 수 년간의 협업을 통하여 완성되었으며, 곧 출시될 코드네임, Minsky로 알려진 최신 Power Systems에 세계 최초로 탑재됩니다. 오픈소스 혁신은 이렇게 하드웨어의 영역에서도 빛나는 결과를 얻게 되었습니다.

NVLink는 CPU와 GPU 간 데이터 교환을 PCIe 인터페이스를 거치지 않고 CPU와 GPU 그리고 GPU와 GPU가 직접 통신할 수 있게 설계된 새로운 버스입니다. NVLink의 최대 대역폭은 80 GB/s로, 16GB/s인 최신 PCIe 3.0 x16과 비교하여 5배 빠른 속도를 보여주고 있습니다. 하지만, 전송 bit당 소모 전력은 PCIe 버스에 비해 낮다고 알려져 있습니다.


Power Systems는 NVLink로 완성되는 GPU의 혁신을 가장 먼저 세상에 선보입니다. 서버의 최고 성능을 담보하는 고차원 컴퓨팅의 가능성을 직접 만날 수 있습니다. 특히, 미국 에너지부(Unite States Department of Energy; DoE)에서 NVLink를 기반으로 하는 'Summit'과 'Sierra'라고 알려진 두 종류의 수퍼컴퓨터를 IBM과 Nvidia를 통하여 공급받기로 계약을 했다는 보도는 제품이 아직 출시되지 않았음에도 이 기술에 대한 높은 가능성을 실증하는 사례로 일컬어지고 있습니다.

OpenPOWER 재단의 IBM과 Nvidia가 여는 새로운 컴퓨팅의 세계에서 우리는, 고성능 연산(HPC)과 딥러닝(Deep Learning)으로 이상과 현실의 경계를 보다 모호하게 만들 것이며, 먼 미래로 약속했던 발전의 이정표를 가까운 시간대로 수정하는 멋진 일을 가능하게 할 것입니다.

(어느 회사의 온라인 잡지에 수록되는 것을 전제로 청탁받아 기고한 글을 여기에도 게시함)