RIOT

RIOT Parallelism on Everything

9세대 Intel CPU 라인업이 전부 공개되었습니다.많은 내용들이 있지만 그중 관심갖고 있는 부분은 모바일 CPU인데요, 모바일 300시리즈 칩셋에 썬더볼트 3이 통합되어 추가적인 칩셋 없이도 기능 구현이 가능해졌...
07/05/2019

9세대 Intel CPU 라인업이 전부 공개되었습니다.
많은 내용들이 있지만 그중 관심갖고 있는 부분은 모바일 CPU인데요, 모바일 300시리즈 칩셋에 썬더볼트 3이 통합되어 추가적인 칩셋 없이도 기능 구현이 가능해졌습니다. 이번 서피스에는 꼭 썬더볼트 3이 들어갔으면 하는 개인적인 생각입니다.
https://www.anandtech.com/show/14256/intel-9th-gen-core-processors-all-the-desktop-and-mobile-45w-cpus-announced/2

Dell이 EPYC Rome 기반 서버를 현재의 3배 정도로 공급한다는 소식입니다. Dell은 EPYC에 별 관심이 없었으나 인기가 좋아지면서 실험적인 시도를 해보려는 것으로 추정됩니다. 또한 Naples 라인업도 ...
06/05/2019

Dell이 EPYC Rome 기반 서버를 현재의 3배 정도로 공급한다는 소식입니다. Dell은 EPYC에 별 관심이 없었으나 인기가 좋아지면서 실험적인 시도를 해보려는 것으로 추정됩니다. 또한 Naples 라인업도 지금은 3가지 정도로 매우 협소하지만, 연말까지 9개 제품으로 확장할 계획이라고 합니다. 물론 제온의 경우 50개 제품으로 세분화되어 있어 아직까지는 서로 비교할 정도는 되지 않습니다.

Dell reverses course and plans to triple its number of EPYC server SKUs. It also plans to support 7nm Rome chips.

Intel사의 첫 AI ASIC인 NCS 1이 곧 단종된다는 소식입니다. 인텔은 주력 사업분야 외의 제품들은 상대적으로 템포를 빠르게 가져가는 경향이 있는데 결국 Movidius에도 동일하게 적용되네요.
04/05/2019

Intel사의 첫 AI ASIC인 NCS 1이 곧 단종된다는 소식입니다. 인텔은 주력 사업분야 외의 제품들은 상대적으로 템포를 빠르게 가져가는 경향이 있는데 결국 Movidius에도 동일하게 적용되네요.

Intel this week initiated an end-of-life plan for its Movidius Neural Compute Stick, which is based on the Myriad 2 VPU. The product will be available for another year and Intel will continue to provide technical support for the device for another two years. For developers currently working on produ...

AMD 관련 소식입니다.Zen2로 출시되는 서버용 제품군인 EPYC 'Rome'은 총 162개의 PCIe 레인을 가지며, PCIe 슬롯에 16레인이 5개 할당되어 있고, 소켓간 통신 용도로 16레인이 3개 할당되어 ...
08/04/2019

AMD 관련 소식입니다.

Zen2로 출시되는 서버용 제품군인 EPYC 'Rome'은 총 162개의 PCIe 레인을 가지며, PCIe 슬롯에 16레인이 5개 할당되어 있고, 소켓간 통신 용도로 16레인이 3개 할당되어 있다고 합니다.
https://wccftech.com/amd-epyc-rome-zen-2-7nm-server-cpu-162-pcie-gen-4-lanes-report/amp/

Zen2 Threadripper의 네이밍은 'Castle Peak'이며, Rome과 함께 AIDA64에 정보가 추가되었습니다.

https://wccftech.com/amd-ryzen-threadripper-hedt-epyc-rome-server-cpu-support-aida64/amp/

AMD EPYC Rome processors which are based on the 7nm Zen 2 architecture might be featuring up to 162 PCIe Gen 4 lanes according to a report.

CPU의 매니코어화, GPU, FPGA, VPU 등의 성장 등으로 Interconnect 기술과 표준은 최근 컴퓨팅 업계에서 가장 중요한 화두 중 하나입니다.이번에 인텔 진영(Cisco, Dell EMC, Googl...
13/03/2019

CPU의 매니코어화, GPU, FPGA, VPU 등의 성장 등으로 Interconnect 기술과 표준은 최근 컴퓨팅 업계에서 가장 중요한 화두 중 하나입니다.
이번에 인텔 진영(Cisco, Dell EMC, Google 등)이 경쟁 그룹인 CCIX(AMD, Xillinx, ARM 등)에 대항해 Compute Express Link (CXL)을 내놓았습니다.

두 기술 모두 PCI 익스프레스를 기초로 하여 CPU-기기 간 Interconnect를 이루는 것을 목표로 하고, 이와 더불어 캐시 일관성과 같은 문제를 해결할 것이라고 합니다.

CCIX는 미리 결성된 만큼 PCIE 4.0 기반의 솔루션이 나와 있는데요, CXL의 경우 PCIE 5.0, 32GT/s를 목표로 하고 개발 중에 있다고 합니다. 개인적으로 빨리 한 쪽이 흡수돼서 표준이 되었으면 좋겠습니다.(?)

The Intel-led CXL and the CHIPS Alliance from RISC-V backers both debut today, building ecosystems for rival processors.

21/01/2018

재미있는 유머네요. :D

저번 글에 이어지는 내용입니다.(Tiling 기법: https://www.facebook.com/pokdongtech/posts/682826305236758)GPU는 기본적으로 SIMD(Single Instructi...
16/07/2017


저번 글에 이어지는 내용입니다.
(Tiling 기법: https://www.facebook.com/pokdongtech/posts/682826305236758)

GPU는 기본적으로 SIMD(Single Instruction Multiple Data) 구조의 프로세서입니다. 따라서, 메모리 접근을 여러 번 하면 할수록 성능이 떨어지기 때문에 저번 포스트에서는 여러 번 사용되는 데이터를 Shared Memory에 미리 Cache하는 방법을 소개드린 바 있습니다.

이번에 소개드릴 내용은 Memory Colescing이라는 특성입니다.
GPU는 여러 개의 Streaming Multiprocessor(SM)로 구성되어 있으며, 각각의 SM에 있는 Thread들은 Warp라는 기본 단위로 묶여 있습니다. Warp의 단위는 Compute Capability마다 다르나, 기본적으로 32 Thread/Warp입니다.

같은 Warp안에 있는 Thread들은 하나의 Instruction을 Issue 하게 되는데요, 이 때문에 Block의 크기가 자연수 단위의 Warp를 포함하지 못하면 남는 Thread들은 버려지는 특징이 있습니다.

이러한 Warp들의 특징은 하나의 Warp 안에 포함된 Thread들이 서로 인접한 메모리 주소들을 읽어와야 할 때 해당하는 데이터들을 하나로 묶어서 가져올 수 있는 특징이 있습니다. 이것이 바로 Memory Coalescing이라는 것입니다.

1차원 배열을 순차적으로 가져오는 것은 이러한 특성에 잘 들어맞지만, 2차원 배열으로 가면 문제가 발생합니다. 먼저 1번 사진을 참고하시죠. 사진과 같이 2차원 배열은 메모리 주소로 변환되어 저장되기 때문에 row-major 또는 column-major order를 따라가게 됩니다.

그렇기에 통상적인 for문으로 두 2차원 배열의 내적을 하는 경우에 한쪽 배열에는 Coalescing이 적용되지 않고 나머지 한 배열만 가능하게 됩니다. 첫번째 예시(Coalescing 적용)는 물리적인 한계로 t0, t1이 접근하는 것만 그리고 두번째 예시(미적용)은 t0, t2가 접근하는 것만 그렸습니다..(실제로는 t0, t1, t2, t3이 동시에 작동하는 것이니 오해 없으시기 바랍니다)

먼저 첫번째 예시에서는 첫번째 Memory Request에서 서로 인접한 주소에 있는 값을 한번에 읽어가나, 두번째 예시에서는 인접하지 않은 부분을 읽어 여러 번의 Request를 만드는 Memory Divergence가 발생하게 됩니다. 이러한 Divergence는 예시와 같이 서로 인접하지 않은 주소들을 읽어올때도 발생하지만, 너무 많은 주소들을 한꺼번에 읽어올 때도 L1/L2 Cache가 부족해서 여러 번으로 끊어 가져와야 할 때도 발생한다고 합니다.

따라서 B 배열을 읽어오는 방향을 바꿔서 프로그래밍을 해야 GPU에서의 내적 계산을 원활하게 수행할 수 있음을 알 수가 있습니다.

직접 그리느라 못 그린 부분에 다음 글의 주제가 숨겨져 있는데요.. 결국 B 배열에서 t0, t1이 읽어올 때는 동일하게 (0,0)을 읽어오니 Tiling도 써먹을 수 있겠죠? 다음 글에서는 Tiling과 Coalescing을 동시에 적용하는 방법에 대하여 알아보도록 하겠습니다.(이렇게 분량을 또 잡아먹습니다^^)

약팔고 도망간 관리자가 돌아왔습니다. 그동안 원체 바빠서.. 만우절 게시물이 정말 만우절 이벤트가 될 줄은 저도 몰랐습니다.오늘도 본편을 연재하진 못하고.. 특별편으로 또 땜빵입니다. 양해해 주시기 바랍니다 (사실 ...
29/06/2017

약팔고 도망간 관리자가 돌아왔습니다. 그동안 원체 바빠서.. 만우절 게시물이 정말 만우절 이벤트가 될 줄은 저도 몰랐습니다.

오늘도 본편을 연재하진 못하고.. 특별편으로 또 땜빵입니다. 양해해 주시기 바랍니다 (사실 제가 본편을 연재할 깜냥이 부족한 측면도 있습니다...)


대부분의 프로그램은 플린 분류상 SISD(Single Instruction Single Data)방식으로 작동합니다. 데이터 하나 가져오고 한번 연산하는 식이죠. 이런 방식으로 프로그램을 돌리면 연산유닛의 성능을 잘 끌어내지 못하는데요, 그 이유는 메모리 때문입니다.

메모리는 GPU에서 제일 느린 구성요소 중 하나입니다. Titan Black의 메모리의 대역폭은 고작(?) 336GB/s 정도밖에 되지 않습니다. Latency는 무려(!) 300ns나 되지요.

M^2 크기의 행렬 두 개를 곱셈해 보는 상황을 가정합시다.
그렇다면 쓰레드 하나당 M번 메모리에 접근해서 2개씩 데이터를 가져와야 하니, 총 메모리 접근횟수는 M^3이 됩니다.
대략 가정해보면 아무리 좋은 GPU라도 해당 커널에서 GFLOPS 이상을 내지 못하는 것이죠. 그러므로 고성능 GPU가 무용지물이 되는 것입니다.

이 문제를 해결하기 위해서 제조사들은 Streaming Multiprocessor에 cache처럼 사용할 수 있는 Shared Memory를 탑재했습니다. DRAM으로 구성되어 있지 않기 때문에 동일 모델(Titan Black)의 경우 3.4TB/s의 어마어마한 대역폭을 자랑합니다.

Shared Memory는 같은 block에 있는 쓰레드끼리 접근할 수 있는 메모리입니다. 미리 Shared Memory에 데이터를 한번에 불러온 다음, 빠른 성능에 힘입어서 접근하도록 하는 것이죠. 하지만 좋은 성능에서 추측할 수 있듯이(?) 크기가 매우 작기 때문에 일부분만을 불러올 수 있습니다.

그렇다면 어떻게 불러올 데이터를 정할 수 있을까요? 위에서 짐작하셨겠지만, 행렬 곱셈은 같은 값을 여러 번 참조하게 됩니다. 따라서 비슷한 순서에 같은 위치의 값을 불러와 연산하는 쓰레드를 묶어서 block으로 만들고, 해당 순서에 사용되는 공통적인 값들을 묶어서 Shared Memory에 불러오면 된다는 생각이 바로 Tiling입니다.

4x4 행렬 두개를 곱셈해 봅시다. 먼저 사진 1과 같이 2x2 크기의 Tile로 행렬을 쪼갠 다음, 하늘색 부분을 Shared Memory에 불러옵니다. 사진 2와 같이 연산하고, 그 다음 2번 Tile을 불러와서 다시 연산하여 합산해주면 됩니다.

이런 식으로 연산하면 8*8*8 =64번 메모리에 접근해야 했을 것을 2*2*2=8번으로 줄이는 획기적인 방법이라고 할 수 있겠습니다. 물론 디바이스별로 Shared Memory의 크기에 차이가 있으니 그때그때 환경에 맞출 필요가 있습니다.(&dev_prop)

지금까지 SIMD의 작동방식을 알아보았습니다. 다음 편도 땜빵으로 이어질 예정이며(....) 배열에서 값을 불러오는 방법을 바꿔서 메모리 프로세서 간 전송속도를 높이는 방법(Memory Coalescing)을 알아보도록 하겠습니다.


Caltech CS179, Lecture 5(2015)

다음 아키텍쳐부터는 1소켓/2소켓/4소켓/8소켓 각각의 구성만이 가능한 제품군을 출시할 예정이라고합니다. 종전처럼 E5시리즈가 1/2/4소켓 구성하고 E7이 1/2/4/8구성하는 상호 티어간 영역 침범을 하지 않겠다...
06/05/2017

다음 아키텍쳐부터는 1소켓/2소켓/4소켓/8소켓 각각의 구성만이 가능한 제품군을 출시할 예정이라고
합니다. 종전처럼 E5시리즈가 1/2/4소켓 구성하고 E7이 1/2/4/8구성하는 상호 티어간 영역 침범을 하지 않겠다는 이야기입니다.

PC 시장이 줄어들며 서버 시장이 다변화됨과 동시에 AMD의 새로운 아키텍처인 Naples를 상대해야 하는 인텔은 또다른 변신을 준비하는 중인 것으로 보입니다. 기사에서 한 토막 인용합니다.

"..인텔이 '고성능 단일 칩셋' 전략을 포기하며 스카이레이크-SP가 역사상 가장 낮은 전세대 대비 코어 개수 증가폭이라는 불명예를 떠안은 이면에는 제온 파이와 FPGA 등이 있다. 즉 컨슈머 워크로드와 반대 방향으로 치달아 온 서버 워크로드 내에서도 재차 "전통적인 프로세서의 워크로드"와 "고도로 병렬화된 HPC 워크로드" 사이의 양극화가 일어나고 있는 것..."
http://drmola.com/pc_column/164448

  지난 주에는 좀처럼 일어나지 않을 법한 일이 실제로 일어났었다. 인텔이 그들의 세일즈 채널에 내려보낸 제품 변동사항 공지(Product Change Notification) 문서가 불의의 사고로 유출되며 새로...

얼마 전에 타이탄 Xp가 출시되었습니다. Geforce 1080Ti가 나올 때 VRAM 크기를 제외한 모든 사양이 타이탄 X와 같아서 팀킬이 아닌가 싶었을 분도 계실 텐데요, 사실 타이탄 X보다 게이밍 성능이 좋은 ...
16/04/2017


얼마 전에 타이탄 Xp가 출시되었습니다. Geforce 1080Ti가 나올 때 VRAM 크기를 제외한 모든 사양이 타이탄 X와 같아서 팀킬이 아닌가 싶었을 분도 계실 텐데요, 사실 타이탄 X보다 게이밍 성능이 좋은 그래픽카드가 존재하고 있었습니다. 바로 Quadro P6000이죠.
사실은 쿼드로 P6000이 풀칩이고 타이탄 X는 풀칩이 아니었던 것입니다. 그래서 1080Ti의 등장은 '카니발라이제이션을 하겠다'는 엔당의 자비(?) 가 아니라, 풀칩을 지포스 계열로도 출시하겠다는 이야기였던 것입니다.
https://www.nvidia.com/en-us/geforce/products/10series/titan-xp/

Address

Seosan

Website

Alerts

Be the first to know and let us send you an email when RIOT posts news and promotions. Your email address will not be used for any other purpose, and you can unsubscribe at any time.

Share