단축키
Prev이전 문서
Next다음 문서
단축키
Prev이전 문서
Next다음 문서
예전에 SD888데브킷으로 징징거리던 글을 썼던 적이 있었습니다만...
그 때는 GPU위주였고, CPU쪽 작업을 할 일이 있어서 대충 성능이 어느정도 되나 뽑아봤습니다.
뽑는김에....가지고 있는 기기들을 모아서... 대충 실제 프로그램에서 성능이 어떻게 변화하였나 경향성도 봤습니다.
테스트 프로그램은 직접 작성한 행렬곱 (Matrix Mul)프로그램이며, 기본 A[MxK] * B[KxN] = C[MxN] 에서, M,N,K모두 1000으로 테스트 했습니다. (fp32기준)
NDK를 사용해서 C 네이티브 코드로 작성했기 때문에 JAVA&Kotlin에서는 더 느릴 듯 합니다.
(모든 단위는 초(second) 기준, 5회 시행 평균값)
- 코드설명 -
Basic : K열을 기준으로 반복문을 돌며 아무런 최적화가 이루어지지 않은 코드
OPT : 반복문의 순서를 바꾸어서 cache 최적화가 추가된 코드
NEON : ARM의 SIMD 명령어를 활용한 코드 (vec-4)
- 테스트기기 -
SD750G (Tab s7 lite) : Cortex-A77@2.21Ghz mp2 + Cortex-A55@1.8Ghz mp6
SD855 (V50) : Cortex-A76@2.84Ghz mp1 + Cortex-A76@2.42Ghz mp3 + Cortex-A55@1.79Ghz mp4
SD860 (Mipad 5) : Cortex-A76@2.96Ghz mp1 + Cortex-A76@2.42Ghz mp3 + Cortex-A55@1.79Ghz mp4
SD865 (S20) : Cortex-A77@2.84Ghz mp1 + Cortex-A77@2.42Ghz mp3 + Cortex-A55@1.80Ghz mp4
SD865+ (Fold2) : Cortex-A77@3.09Ghz mp1 + Cortex-A77@2.42Ghz mp3 + Cortex-A55@1.80Ghz mp4
SD888 (SD888 devkit) : Cortex-X1@2.84Ghz mp1 + Cortex-A78@2.42Ghz mp3 + Cortex-A55@1.80Ghz mp4
- 테스트 결과 -
리틀코어 (3년간의 플래그쉽과 미들레인지 사이 공평한 성능)
미들코어
빅코어
LITTLE이 big대비 몇 배의 시간을 사용했는가?
MIDdle이 big대비 몇 배의 시간을 사용했는가?
미들레인지(750G)의 성능으로 normalize
값은 보시는 대로 이며...
소감은
- ARM의 리틀코어.... 너무하다. 빅 코어는 어느정도 성능이 올라가는데 리틀은 동결이니.... 생각없이 코드를 짜면 무려...13.5배 느리다.
- 그나마 NEON같이 SIMD를 사용하는 특정 상황에서는 big코어의 3~4배로 격차가 좁혀진다.
-
스냅드래곤의 MIDdle은 거의 같은 클럭을 유지하기 때문에 비교가 편한데, 꾸준히 향상은 하지만 근본적으로 cache나 ALU숫자는 비슷해서 NEON같은거 쓰면 비슷해지는거 같다.
-
생각보다 연말에 나오는 +붙거나 +5된 모델이 공정안정화 클럭 업 치고는 성능이 오르기는 한다, 특히 최근 새 아키텍처의 싱글 IPC 향상이 적어서 두드러지는 것일지도...
-
SD888결과 중....NEON에서 성능이 더 떨어지는 경우가 있다. devkit에는 공랭 FAN도 달아두었는데...;; 아마 AVX같이 클럭 유지가 안 되는 것 일지도...
-
생각없이 짠 코드에서는 X1의 성능 향상이 두드러진다 (...)
-
생각보다 빅과 미들의 차는 20~30%정도, 디멘시티 9000이 X2@3.0Ghz+A710@2.8Ghz 조합인데 미들코어 클럭이 높아서 한동안 격차가 날 것 같음.
생각보다.... 테스트하기 힘들군요. 스크립트를 짜서 해도 adb 연결하는게 일입니다(...)
멀티코어 최적화를 해야하는데 리틀코어가 고심입니다. NEON까지 써야 겨우 1/3 성능이니.... 토이 케이스로 실험 좀 더 해보고 성능 안 나오면 리틀은 배제해도 되지 않을까 합니다..;
P.S 그렇다고 빅 코어 아키텍처를 옹호하기는 힘든것이... Fugaku같이 작정하고 매니코어 구성을 하지 않는 이상 ARM CPU로 ML을 ??!? ARM v9에 왕창 추가된 명령어셋도 그렇고. 정상적으로 IPC를 올리기 힘드니 눈 가리고 아웅거리는 꼴이네요(...)