2

Microsoft's Parallel Programming whitepaper은 다양한 FLOPS 임계 값에서 최적 인 상황을 설명하고 FLOPS 속도는 특정 구현을 사용해야하는 시점에 대한 결정 지점입니다.C# 응용 프로그램에서 사용하는 FLOPS를 어떻게 측정합니까?

응용 프로그램에서 FLOPS를 측정하려면 어떻게합니까?

+0

부동 소수점 연산 수를 셉니다. 그들을 실행하는 데 걸리는 시간으로 나눕니다. –

답변

4

FLOPS는 FLOating-point Operations Per Second를 의미하며 측정은 수행 된 부동 소수점 연산 수를 계산하고이를 수행하는 데 걸리는 시간으로 나누는 것처럼 간단합니다. 시간을 측정하는 것이 쉬운 부분입니다. 작업을 꾸미기는 까다 롭고 일반적으로 사용되는 하드웨어 플랫폼과 컴파일러에 달려 있습니다. 일반적으로 덧셈, 뺄셈, 곱셈과 같은 간단한 연산은 매우 빠릅니다. 부문은 약간 느립니다. 제곱근을 취하는 것은 더 느립니다. 스펙트럼의 가장 느린 부분에는 사인 (sine), 코사인 (cosine), 지수 (exponentiation) 및 대수 (logarithm)와 같은 초월 함수가 있습니다. 이것들은 모두 시리즈로 확장되고 수렴 (convergence)이 달성 될 때까지 반복적으로 계산됩니다. 최신 세대 CPU는 FSE (fused multiplication and addition) 연산을 지원합니다. 즉, A * B + C가 단일 사이클로 수행됩니다.

절대 FLOPS 값을 지정하는 것은 매우 어렵습니다. 코드가 간단한 조작 만 수행하면 높은 FLOPS 수를 얻게됩니다. 초월이 많으면 FLOPS 수가 훨씬 낮아집니다 (최대 100 배까지 낮아짐). 또한 주 메모리에 액세스하는 빈도 인 가져 오기/계산 비율과 컴파일러가 대기 시간 숨기기를 활용할 수있는 코드를 생성하는 데 얼마나 효과적인지에 따라 다릅니다.

표준 FLOPS 벤치 마크는 선형 방정식의 고밀도 시스템을 해결하는 LINPACK 테스트입니다. 단순한 산술 연산 (초월 연산이 없음) 만 사용되며 CPU가 더 복잡한 연산을 수행하는 방법을 설명하는 데 충분하지는 않지만 수퍼 컴퓨터의 순위는 여전히 Top500입니다.

관련 문제