나는 고도로 최적화 된 (SSE4),하지만 주석 처리되지 않은 C 코드를 상속 받았습니다. SSE 내장 함수를 더 읽기 쉬운 코드 또는 의사 코드로 변환 할 도구 나 유틸리티가 있습니까? 이것은 주로 가독성을위한 것이므로 코드를 파고 변경하기 전에 코드를 더 잘 이해할 수 있습니다.SSE 내장 함수를 읽을 수있는 C/C++ 코드로 변환 하시겠습니까?
1
A
답변
2
나는 그런 도구에 대해 몰라.
하지만 어쨌든 많은 도움이되지는 않을 것입니다. SSE 코드가 잘 최적화 된 경우 어려운 부분은 내장 함수를 디코딩하지 않는 것일 수 있습니다. 어려운 부분은 지역을 개선하고 반복 반복 데이터 종속성을 없애기위한 모든 트릭을 따르고 있습니다 (스트립 네이 팅, 다면체 루프 변환 등)
다음과 같이 제안 할 수 있습니다. 항상 잘 주석 된 스칼라가 있습니다. 가장 단순한 방법으로 작성된 동일한 루틴의 버전. 이 "참조 코드"는 속도가 아니라 가독성과 정확성에만주의해야합니다 ... 그래서 많은 주장이 있어야합니다. 또한 스칼라 버전과 최적화 된 변형을 모두 수행 할 수있는 테스트 스위트가 있습니다.
처음으로 루틴을 구현하거나 기존 루틴을 업데이트하는 경우 항상 참조 코드 및 테스트 슈트로 시작하십시오. 꼭 그런 순서는 아닙니다.
이 방법은 비용이 많이 들지만 장기적으로는 훨씬 저렴합니다.
+0
"참조 코드"에 대한 아이디어는 +1. 대부분의 경우, 과도한 최적화로 인해 나중에 읽을 때 자신의 코드를 이해하지 못합니다. 읽을 수있는 참조 코드가이 문제를 해결할 것입니다. –
관련 문제
- 1. SSE 내장 함수를 사용하여 2D 스텐실 벡터화
- 2. SSE 내장 함수를 사용한 등록 부족
- 3. SSE 내장 함수를 사용하는 함수 수정
- 4. SSE int64 내장 함수
- 5. SSE 내장 함수에 해당하는 네온
- 6. 분을 사람이 읽을 수있는 형식으로 변환 하시겠습니까?
- 7. SSE, 내장 함수 및 정렬
- 8. SSE 및 AVX 내장 혼합물
- 9. 인텔 SSE 내장 함수를 사용하여 코드를 최적화하는 코드
- 10. MS Visual Studio에서 SSE 내장 함수를 사용하는 방법?
- 11. 이름을 읽을 수있는 코드로 줄이기위한 알고리즘
- 12. 해체 된 코드로 읽을 수있는 텍스트
- 13. HRESULT를 읽을 수있는 메시지로 변환
- 14. SSE 내장 함수 비트가 오른쪽으로 시프트
- 15. NEON 내장 함수를 사용하도록 암 코드 변환
- 16. 원시 헥스를 펄에서 읽을 수있는 16 진수로 변환 하시겠습니까?
- 17. 블랙 베리에서 읽을 수있는 문자열 형식으로 바이트를 변환 하시겠습니까?
- 18. HTML 5 캔버스를 3D 프린터로 읽을 수있는 형식으로 변환 하시겠습니까?
- 19. 키 시퀀스 벡터를 사용자가 읽을 수있는 문자열 표현으로 변환 하시겠습니까?
- 20. 이진 문자를 사람이 읽을 수있는 문자열로 변환 하시겠습니까?
- 21. Json 파일을 사람이 읽을 수있는 형식으로 변환 하시겠습니까?
- 22. 1 차 전송 함수를 C 코드로 변환
- 23. SSE 내장 함수 - 비교 if/else 최적화
- 24. SSE 비교 내장 함수 - 비교에서 1 또는 0을 얻는 방법?
- 25. 토큰을 생성하고 C++ 코드로 변환 하시겠습니까?
- 26. Python : 인수가있는 함수를 내장 함수에 전달 하시겠습니까?
- 27. simulink 블록을 GUI 코드로 변환 하시겠습니까?
- 28. Intel SSE SIMD 내장 함수로 작업
- 29. SSE : const를 float로 const를 __m128의 * 변환 *
- 30. 사람이 읽을 수있는 숫자 범위를 Regex로 변환
컴파일러의 설명서에서 무엇을 의미하는지 알아보고 동일한 표준 코드의 치트 시트를 작성하십시오. –
도구 없음 AFAIK,하지만 SIMD 코드는 소수의 일반적인 "패턴"을 사용하는 경향이 있으므로 코드를 읽고 이해하면할수록 더 쉽게 가져와야합니다. 특히 그래프 작업이 도움이되는 인접 작업 (예 : 이미지 처리, 2D 필터 등)이있는 경우 많은 다이어그램을 그릴 준비를하십시오. –