조회 비용과 계산


12

거리 기준이 충족되는지 확인하기 위해 계산을 설정하는 데 관심이 있습니다. 즉, 벡터 와 다른 벡터 x j 사이의 거리는 r m a x 값보다 작아야 합니다. 내 데이터는 직교 좌표 격자에 따라 분할됩니다. 내 컷오프가 가장 가까운 이웃 좌표의 끝점 사이의 거리보다 작기 때문에 일이 올바르게 설정되었는지 확인하기 위해 "octant"변수를 추가하고 싶습니다.xixjrmax

if octant[j] in allowed_list continue

"단락"으로

if dist(x[i], x[j]) < r_max

내 질문은 : 부동 소수점 연산과 비교하여 부울 조회 및 비교가 얼마나 효율적으로 계산됩니까? 이것이 현대 건축에서 할 가치가 있습니까?


3
코드를 기꺼이 분기하고 테스트 하시겠습니까? "이 방법은 편도 또는 다른 방법으로 코딩하는 것이 더 낫습니까?" 질문 유형은 "시도하고 벤치마킹"입니다.
Geoff Oxberry

1
그냥 내 2 센트. Geoff가 쓴 것처럼, 이런 종류의 조언은 C ++ 코드와 관련하여 stackoverflow에 대해 비슷한 질문을 할 때 항상 얻은 것입니다. 먼저 모든 것을 코딩하고 코드를 구성하여 재사용 할 수 있도록 모듈화하고 다시 리팩토링을 시작하십시오. 80-20 규칙이 있습니다 : 소프트웨어는 코드의 20 %에 80 %의 시간을 소비합니다. 구조물이 올라올 때까지 기다린 다음 변경, 테스트, 변경 및 테스트하십시오.
tmaric

@ GeoffOxberry : 내 질문은 그렇게 구체적이지 않습니다 : 부동 소수점 연산과 비교하여 부울 검사를 수행하는 데 하드웨어 또는 컴파일러의 이점이 있는지 알고 싶습니다.
aeismail 2016 년

3
그러나 귀하의 질문은 너무 일반적입니다. 구체적인 코드를 보지 않고서는 아무도 말할 수 없습니다. 최고의 프로그래머조차도 코드의 병목 현상이 프로파일 링없이 어디에 있는지 알 수 없다는 규칙이 있습니다. 나는 지난 25 년 동안 프로그래밍을 해왔고 그것이 사실이라는 것을 알고있다.
Wolfgang Bangerth 2016 년

답변:


15

경험상 배정 밀도 값당 50 플롭 미만으로 일부 수량을 효율적으로 계산할 수 있으면 (FPU 활용도) 저장하는 것보다 재 계산하는 것이 좋습니다. 수십 년 동안 꾸준한 추세는 부동 소수점 기능이 메모리 성능보다 빠르게 향상되고 고속 메모리의 물리적 제약 및 에너지 요구 사항으로 인해 회복되지 않는 경향이 있습니다. 50의 가치는 모든 인기있는 컴퓨팅 플랫폼 (Intel / AMD, Blue Gene 및 GPU)에 적합한 규모입니다.

코어 당 대략적인 비용 추정

[2011/2012 인텔 및 AMD 기반 머신에 대한 지침]

  • 0.05
  • 0.2
  • 0.4
  • 0.40.8
  • 2
  • 35
  • 35
  • 5
  • 48
  • 12
  • 12
  • 3050
  • 100
  • 1031 μ
  • 10410 μ
  • 106
  • 2106MPI_Allreduce
  • 107
  • 5108
  • 1.81012

추가 자료


이 정보가 정말 유용하다는 것을 알았습니다. 그건 그렇고,이 데이터를 어디서 얻었습니까? 인용에 대한 언급을 찾고 있습니다.
Eldila
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.