SARscape, AMD입니까 Intel입니까?

L3Harris Geospatial Solutions 담당자와 SARscape 관련 논의를 하다가, Sarmap 사 기술진의 의견을 들은 바가 있어 공유합니다. (SARscape는 Sarmap 사가 ENVI용으로 만들어서 L3Harris Geospatial Solutions를 통해 판매하는 제품입니다).

제 질문은 이런 것이었습니다.
“비쌀 수록 좋다느니, 인텔 Xeon CPU를 네 개 장착하라느니 하는 그런 비현실적인 얘기 말고, 그냥 일반 환경에서 SARscape 를 돌리려면 어떤 사양을 권장하는가?”

답이 왔습니다.

” Concerning the request about a good machine to run SARscape, I guess the user is looking for a powerful, desktop workstation and not for something to put in a server room (like a dedicated server or even a cluster). As of today, I would consider go with something similar to one of our own workstations, which runs SARscape like a charm: “

서버나 클러스터 같은 대단한 물건이 아닌, 데스크탑 워크스테이션으로서의 강력한 물건을 찾는 거지? 마침 나도 가성비짱 SARscape 워크스테이션을 장만하려 하는데… (여기서의 ‘나’는 Sarmap의 엔지니어입니다).

이 분이 제시한 기본 내용은 아래와 같습니다.

  • 32/64 GB of RAM
  • A CPU with 6/8+ cores
  • OpenCL 1.2-compatible GPU with 8/16 GB of memory and FP64 support
  • Fast 1/2 TB of SSD/M2 disk as working directory
  • a large 10 TB HDD for storing cold data

‘뭐여, 별거 없잖아. 누가 이런 교과서적인 답을 원했냐… 그냥 정답을 꽂아 달라’는 요청에(이렇게 느낌있는 영어 표현은 제가 하지는 못하죠, 당연히) 다음과 같은 답이 왔습니다.

“CPU와 관련하여서는, 나는 이제 AMD CPU로 갈 계획이다. Ryzen이 가성비가 좋거든. 나는 Ryzen 9 3950X를 살 거야. PS(Persistent Scatterer)를 하려면 GPU가 눈에 띄는 처리 속도 향상을 보여줄 거인데, 역시 AMD의 제품이 NVidia 보다는 가성비가 좋지. Radeon Pro WX 시리즈가 프로급 GPU임에도 가성비가 좋아.”

AMD… 오랜동안 잊고 있던 CPU입니다. 15년 쯤 전에는 조립 PC 하면 AMD의 가성비(게임 성능도 좋았구요)를 대부분 선택했습니다. 이후 멀티코어의 세상이 열리면서 Intel 이 한동안 독점하다시피 했습니다. 저는 거기까지만 알고 있었고, 요즘은 그냥 회사에서 사 주는 컴퓨터 쓰다 보니 ‘CPU는 Intel’ 이라고만 생각하고 살았습니다.

이번에 AMD 얘기를 듣고, AMD의 요즘 추세에 대해 조금 조사해 보니, 이미 성능면에서는 AMD에 대한 극찬이 이어지고 있네요. Ryzen 3950X는 16코어(와우~)이고, 3900X만 해도 12코어, 3700X는 8코어입니다. 멀티코어, 멀티 CPU를 자연스럽게 지원하는 IDL/ENVI/SARscape 의 특성상 코어 수가 많은 CPU의 매력을 무시할 수 없지요. 제가 아직 Ryzen CPU가 없어서 테스트를 해 보지는 못했지만, 인터넷의 글들을 읽어보니, 멀티코어가 강세를 보이는, 사진이나 동영상 편집 등에서 AMD Ryzen 3세대 CPU는 이미 강자의 위치에 올라 있는 상황이네요.

GPU는, 일단 메모리가 8GB이면 시중에서 파는 것 중에는 고급품의 반열에 올라갑니다. 16GB의 메모리면 프로급 GPU가 되구요. 저는 직접 테스트를 해 보진 못했지만, 인터넷의 글들을 읽어보니, 게임 기준으로는 Radeon이 같은 가격이면 성능이 더 좋은 것은 사실인 것 같습니다(뭐 Sarmap 엔지니어가 저한테 거짓말은 당연히 안할 거고, 농담할 사이도 아니니까, 확인할 필요 없이 사실일 겁니다). OpenCL 기준으로는 Radeon와 NVidia가 다 잘 되는 것으로 알려져 있습니다. 그런데…

작년에 등장한 ENVI Deep Learning Module 기준으로는 NVidia가 더 유리합니다. 아니죠, 더 유리한 게 아니라 Deep Learning 하려면 NVidia가 유일한 답입니다. Radeon GPU는 ENVI Deep Learning Module을 돌릴 수 없습니다. 그래서 이 부분에 대해서는, ENVI Deep Learning을 사용할 것이냐 사용하지 않느냐에 따라 완전히 달라질 것 같습니다. NVidia에서는 Deep Learning Module도 SARscape PS의 가속효과도 모두 사용할 수 있습니다. Radeon은 SARscape PS의 가속효과는 보여주겠지만 ENVI Deep Learning Module은 실행할 수 없습니다. 이는 Deep Learning Module의 핵심인 TensorFlow가 NVidia GPU에 최적화 되어 있기 때문입니다.

ENVI Deep Learning Module에 대해서는 다른 글에서 한번 소개하겠습니다만, 최소 8GB 이상의 GPU 메모리를 권장하고 있습니다. ‘그래서, 나 같은 일반적인 사용자는 뭘 사야 되는 거냐?’고 당연히 물어봤죠. 답변이 왔습니다.

“요즘 같으면, NVidia RTX2070(2060도 괜찮고)이 실험용으로는 무난하고, 여유가 좀 있으면 2080Ti 사는 거지… GPU 메모리 8GB는 minimum 사양이야… 그걸 잊지 마”

SARscape 머신을 계획하고 계시다면, 참고할만한 내용인 듯 하여 여기에 공유합니다. 참고로 SARscape는 하나의 컴퓨터에 여러개의 GPU가 꽂혀 있다고 해도, 동시에 연산에 사용하지는 못합니다(NVidia의 SLI나 Radeon의 CrossFire 는 SARscape가 지원하지 않습니다). 여러개의 GPU가 꽂혀 있을 경우, 어떤 GPU를 연산에 사용할 것인지 하나를 선택해야 합니다. SARscape Cluster 모듈은 따로 있습니다. 저도 아직 Cluster 모듈을 직접 본 적은 없지만요.

————————- 이하 2020년 1월 30일 업데이트 ————————–

글을 올리고 나서, 두 개의 질문을 받았습니다. 권장 사양 중에 FP64가 어떤 의미인지에 대한 질문과, Radeon의 장점은 무엇인가 하는 질문이었습니다. 공교롭지만 이 두가지 질문에 대한 답변은 같습니다. 제가 좀 더 꼼꼼하게 글을 썼으면, 원문에 이 내용이 있어야 하는 것인데, 그러지 못하여 늦었지만 여기에 글을 추가합니다.

FP64는 64비트형 실수(real number)를 계산할 수 있음을 의미합니다. FP는 Floating Point (부동소수)를 의미하구요. 일반적인 실수(real number)는 32bit 형이고 IDL에서는 float 형이라고 부릅니다. 그런데, 정밀도가 이의 2배가 되는, 하나의 수가 64bit 메모리 공간을 차지하는 실수는 Double-precision floating point라고 불립니다. 이것이 FP64이고, IDL에서 double 형이라고 합니다. 3.14159265d 와 같이 끝에 알파벳 d를 붙여서 메모리 공간을 두 배 차지하는 대신 double 형으로 정밀하게 계산하라고 명시할 수 있습니다.

원래 그래픽카드(GPU)는 정밀한 계산 하라고 만든 물건은 아니었습니다. 화면에 데이터를 뿌릴 계산을 한꺼번에 많이 처리하는 것이 목적이었습니다. 그래서 초창기의 그래픽카드는 정수계산만 한꺼번에 빠르게 하는 기능만 가지고 있었습니다(화면에 주사하는 기능이 그래픽 카드에서 더 중요할 수 있는데, 이 글은 계산 얘기만 하는 겁니다). 그런데, NVIDIA가 CUDA를 발표하며, GPU로 과학자들의 계산을 엄청 빨리 할 수 있음을 보여주었죠. 더 이상 계산이 CPU의 독무대가 아닌 세상이 오고, 점차 실수 계산(과학자들은 정수 계산만으로 만족 못하죠) 기능이 그래픽 카드에 들어가기 시작했습니다. 게다가 이제는 게임용 그래픽 카드 중에도 FP64를 지원하는 제품들이 등장하게 된 것입니다. 자, SARscape 의 PS를 실행하는데, GPU를 연산에 사용하고자 한다면, 그 GPU는 FP64를 지원해야 합니다. Double Precision 연산을 해야 하니까요(SARscape PS는 GPU 없이도 CPU-only 모드로도 잘 작동합니다. GPU가 없다거나 FP64를 지원하지 않는다고 포기하지 마십시오).

두 번째 문의로 ‘Radeon이 가성비가 좋다한들, 10만원 아껴서 Deep Learning을 못하게 되는게 추천할만한 것인가? 그냥 10만원 더 써서 NVidia 쓰는 게 웬만하면 좋은 것 아닌가’ 라는 말씀도 있으셨습니다. 그런데 앞에 설명드린 부분, FP64 연산의 세계에서는 Radeon이 동급의 NVidia와는 상대가 안되게 빠릅니다. 이게 Sarmap 기술진이 Radeon을 추천한 이유라고 저는 생각합니다.


동시대의, 게임용으로는 아마 비슷하게 잘 나가는 GPU인 것 같습니다만… Double Precision 계산 속도를 보시면 Radeon의 장점이 드러납니다.

위 링크는 그냥 제가 구글에서 Radeon, NVidia FP64 performance로 검색해서 나온 것중에 아무 글입니다. 그런데, Radeon VII 같은 것을 보시면, 가격은 NVidia의 RTX 2080과 비슷한데, Double Precision 계산 속도가 10배 빠릅니다. 10배 빠르다는 건, 이 분야에서 애초에 같은 세계의 물건이 아닌 거죠. SARscape 기술진의 입장에서는 Radeon 최고(최신 기종에 한해서입니다)를 외칠 수밖에 없겠다는 생각이 듭니다(리뷰를 좀 찾아보니 Radeon VII가 소음도 좀 심하고, 전기를 엄청 먹는다고 합니다. 가정용으로는 비추라고들 하고, 제가 H/W를 추천하고 리뷰할만한 안목은 전혀 없습니다. 그리고 FP64 기준으로 10배 빠른 것이지, SARscape PS를 돌리는데 무조건 10배 빠르다는 의미도 아닙니다). 그러니, Deep Learning 모듈을 실행할 GPU를 찾는 것이 아니라면 Radeon 추천은 합리적입니다.

요즘은 하나의 메인보드에 여러개의 그래픽카드를 꽂는 것이 가능한데, 혹시 Radeon도 하나 꽂고, NVidia도 하나 꽂을 수 있을까요? 이건 저도 잘 모르겠습니다. 드라이버 설정 문제 같은 것만 없다면, ENVI 실행시에, 사용자 선택으로 가속 연산에 사용할 GPU를 ‘하나’만 지정할 수 있습니다. 여러개의 GPU가 있다고 해도, 하나만 선택할 수 있습니다. Deep Learning을 돌릴 때는 NVidia를, SARscape PS를 돌릴 때는 Radeon을 선택하는 그런 세팅이 가능할지(OS 차원에서 말이죠), 가능하다고 하더라도 그게 합리적인 시도인지… 글쎄요… 일단 요즘의 기운쎈 GPU 두개를 장착하려면, 본체의 Power Supply가 일반용으로 될 것 같지는 않네요. 나중에, 용산에 계신 전문가에게 자문을 좀 받고 이 글을 또 업데이트 하겠습니다.