2013-07-17 2 views
1

나는 고도로 최적화 된 (SSE4),하지만 주석 처리되지 않은 C 코드를 상속 받았습니다. SSE 내장 함수를 더 읽기 쉬운 코드 또는 의사 코드로 변환 할 도구 나 유틸리티가 있습니까? 이것은 주로 가독성을위한 것이므로 코드를 파고 변경하기 전에 코드를 더 잘 이해할 수 있습니다.SSE 내장 함수를 읽을 수있는 C/C++ 코드로 변환 하시겠습니까?

+0

컴파일러의 설명서에서 무엇을 의미하는지 알아보고 동일한 표준 코드의 치트 시트를 작성하십시오. –

+0

도구 없음 AFAIK,하지만 SIMD 코드는 소수의 일반적인 "패턴"을 사용하는 경향이 있으므로 코드를 읽고 이해하면할수록 더 쉽게 가져와야합니다. 특히 그래프 작업이 도움이되는 인접 작업 (예 : 이미지 처리, 2D 필터 등)이있는 경우 많은 다이어그램을 그릴 준비를하십시오. –

답변

2

나는 그런 도구에 대해 몰라.

하지만 어쨌든 많은 도움이되지는 않을 것입니다. SSE 코드가 잘 최적화 된 경우 어려운 부분은 내장 함수를 디코딩하지 않는 것일 수 있습니다. 어려운 부분은 지역을 개선하고 반복 반복 데이터 종속성을 없애기위한 모든 트릭을 따르고 있습니다 (스트립 네이 팅, 다면체 루프 변환 등)

다음과 같이 제안 할 수 있습니다. 항상 잘 주석 된 스칼라가 있습니다. 가장 단순한 방법으로 작성된 동일한 루틴의 버전. 이 "참조 코드"는 속도가 아니라 가독성과 정확성에만주의해야합니다 ... 그래서 많은 주장이 있어야합니다. 또한 스칼라 버전과 최적화 된 변형을 모두 수행 할 수있는 테스트 스위트가 있습니다.

처음으로 루틴을 구현하거나 기존 루틴을 업데이트하는 경우 항상 참조 코드 및 테스트 슈트로 시작하십시오. 꼭 그런 순서는 아닙니다.

이 방법은 비용이 많이 들지만 장기적으로는 훨씬 저렴합니다.

+0

"참조 코드"에 대한 아이디어는 +1. 대부분의 경우, 과도한 최적화로 인해 나중에 읽을 때 자신의 코드를 이해하지 못합니다. 읽을 수있는 참조 코드가이 문제를 해결할 것입니다. –

관련 문제