컴퓨터에서 가능한 FLOP의 양을 결정하는 방법


15

컴퓨터가 할 수있는 이론적 인 수의 FLOP (Floating Point Operations)를 결정하고 싶습니다. 누군가 나를 도와주세요. (컴퓨터와 다른 슈퍼 컴퓨터의 차이점을 이해하기 위해 일부 슈퍼 컴퓨터와 비교하고 싶습니다)

답변:


9

이론적 피크 FLOP / s는 다음과 같이 제공됩니다. 코어 수는 쉽습니다. 이론적으로 평균 주파수는 일정량의 터보 부스트 (Intel) 또는 터보 코어 (AMD)를 고려해야하지만 작동 주파수는 좋은 하한입니다. 사이클 당 작업은 아키텍처에 따라 다르며 찾기 어려울 수 있습니다 (SandyBridge 및 IvyBridge의 경우 8, 슬라이드 26 참조 ). 이 스택 오버플로 질문 의 주제이며 , 여기에는 많은 현대 아키텍처의 숫자가 포함됩니다.

코어 수평균 빈도사이클 당 작업

1
좋아, 나는 2 코어, 운영 주파수 : 1.8 GHz, 인텔 터보 부스트 기술 : 3.00 GHz, 사이클 당 작업을 찾을 수 없습니다, 여기 웹 사이트가 있습니다 : ark.intel.com/products/75460/… 감사합니다
Ol '신뢰할 수있는

Haswell은 16 DP / 사이클을 수행 할 수 있습니다. 방금 답변 본문에 SO 답변에 대한 링크를 추가했습니다.
Max Hutchinson

이것은 내 컴퓨터가 2 x 3,000,000,000 Hz x 16 = 96 Giga FLOP를 수행 할 수 있다는 것을 의미합니까?
Ol '신뢰할 수있는

이는 실제 평균 주파수에 따라 2 * 1.8GHz * 16 DP = 57.6 GFLOP / s와 96 GFLOP / s 사이에서 수행 할 수 있음을 의미합니다. 단일 번호를 사용해야하는 경우 57.6이 더 공정한 IMO입니다.
Max Hutchinson

2
FLOP 속도는 일반적으로 프로세서의 '양호성'에 대한 좋지 않은 측정입니다. 예를 들어 scicomp.stackexchange.com/questions/114/… 를 참조하십시오 . 작업 제한 비용 (예 : 컴퓨팅 바운드 vs 메모리 바운드 vs 디스크 바운드)에 대해 생각하고 관련 하드웨어 (컴퓨팅 시스템, 메모리 시스템, I / O)에 중점을 둘 수 있습니다.
Max Hutchinson

4

머신의 CPU 모델 및 공급 업체를 알아야합니다. 그런 다음 공급 업체 웹 사이트 (또는 Wikipedia)에서 클럭 속도, 칩 / 소켓 수, 칩당 코어 수, 사이클 당 부동 소수점 연산 수 및 해당 연산의 벡터 너비를 찾을 수 있습니다. . 그런 다음 단순히 곱하면됩니다.

예를 들어, 내가 일하는 Stampede 의 Intel Xeon E5-2680 "Sandy Bridge"프로세서를 예로 들어 보겠습니다 . 사양은 다음과 같습니다.

  • 2.7GHz
  • 2 칩 / 노드, 8 코어 / 칩
  • 2 벡터 명령 / 사이클
  • 256 비트 폭 AVX 명령어 (4 개의 동시 배정도 피연산자)

이들을 곱하면 시스템의 가속되지 않은 부분에 345.6 GF / 노드 또는 2.2 PF가 제공됩니다.

우리는 일반적으로 배정도 (64 비트) 연산의 관점에서 생각합니다. 왜냐하면 대부분의 사용자에게 필요한 정밀도이기 때문입니다. 그러나 원하는 경우 단 정밀도로 계산을 다시 실행할 수 있습니다. 이것은 일반적으로 4 DP Flops / inst 대신 8 SP Flops / instruction과 같은 마지막 요소 만 변경하지만 실제로는 크게 다를 수 있습니다. 예를 들어, 구형 GPU는 DP 속도의 약 1/8로 DP를 수행했습니다. 시스템의 숫자를 인용 한 경우, 사람들이 그렇지 않다고 가정하기 때문에 배정 밀도가 아닌 경우 사용한 숫자를 명시해야합니다.

또한 칩이 FMA (fused multiply-add) 명령어를 지원하고 최대 속도로 처리 할 수있는 경우, 하드웨어 성능 카운터가 하나의 명령어로만 계산할 수 있지만 대부분의 사람들은이를 2 개의 부동 소수점 연산으로 계산합니다.

마지막으로, 시스템에 존재할 수있는 가속기 (GPU 또는 Xeon Phi 등)에 대해서도이 작업을 수행하고 이론적 총계를 얻기 위해 CPU 성능에 해당 성능을 추가 할 수 있습니다.


CPU 모델을 아는 것만으로는 충분하지 않습니다. 실제 작동 주파수를 알아야합니다.
Aksakal

@Aksakal은 이론적 인 분석을 위해 공칭 주파수를 선택하는 것이 좋습니다. 작업 부하와 에어컨의 품질에 따라 칩이 실제로 어떤 주파수에서 작동하는지 알기가 어렵습니다.
Bill Barth

2

이론적 가치를 요구 한 것으로 알고 있지만 실제 코드, LINPACK을 통해 거의 항상 액세스 할 수 없으므로 매우 큰 행렬에 대해 DGEMM을 실행 (최적화) 할 수 있습니다. 이 방법을 선호하는 이유는 특정 프로세서의 단점을 드러내 이론적으로 피크 플롭 값을 달성하지 못하기 때문입니다.

예를 들어, NVIDIA GPU는 현재 동일한 파이프 라인에서 정수 및 부동 소수점 연산을 수행합니다. 즉, 정수 계산 을하지 않으면 이론상 피크 플롭 / 초만 얻을 수 있습니다. . 배열 인덱싱 및 다른 형태의 데이터 액세스는 어딘가에 정수 산술이 필요하기 때문에 어떤 코드도 NVIDIA GPU에서 이론적 인 피크 플롭을 달성 할 수 없습니다. 대부분의 경우 상한으로 ~ 80 %가 표시됩니다. 정수 및 부동 소수점 연산을 동시에 실행하는 CPU의 경우 이는 문제가 아닙니다.

Intel Knights Corner 및 Blue Gene / Q와 같은 일부 GPU와 유사한 멀티 코어 프로세서에서는 유사한 파이프 라인 문제에 대해 기존 CPU보다 피크 플롭을 달성하기가 더 어렵습니다. ).


왜 NVIDIA GPU에서 이론상 최대 플롭을 달성 할 수없는 코드가 있습니까?
skytree

단락 2를 참조하십시오. 그러나이 모든 것은 이전 아키텍처와 관련이있었습니다. 보다 최근의 NVIDIA 아키텍처는 정수 및 부동 소수점을 동시에 실행하고 큰 DGEMM에서 최대 90 % 이상의 피크를 달성 할 수 있습니다.
Jeff
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.