2011-05-07 4 views
4

간단히 말해서 상황은 다음과 같습니다. 나는 gcc -O2 -ftree-vectorize -msse4 -ftree-vectorizer-verbose=10 -march=core2 -g -c 옵션으로 C 코드를 컴파일하려고했습니다. 코드 gcc 내에서 특정 중첩 for-loop 구문에 대해루프에서 너무 많은 BB가 의미하는 바는 벡터화 할 수 없습니까?

(벡터화되지 않음) : 루프에 너무 많은 BB가 있습니다.

컴파일러 및 벡터화에 대한 매우 제한된 이해에 사과드립니다.

초기 검색 중에는 BB가 빌딩 블록의 약어 인 gcc의 메일 링리스트에이 결과가 표시되었습니다. 거기에서 GCC의 내부 문서를 확인한 결과, gcc가 제어 흐름 그래프 (CFG)를 만들기 위해 BB를 사용한다는 것을 알게되었습니다.

누군가 제발 루프에서 BB의 의미를 설명해 주실 수 있습니까?

또한 BB 수가 실제로 너무 많아서 gcc 벡터화가 실패하는 것과 관련이 없습니다.

답변

3

BB는 "기본 블록"을 의미합니다. 그들이 무엇인지에 대한 자세한 설명은 http://en.wikipedia.org/wiki/Basic_block을 참조하십시오.

너무 많은 기본 블록이있는 경우 제어 흐름이 작업을 벡터화 할 수 없도록하는 것을 상상해보십시오. http://en.wikipedia.org/wiki/Vectorization_(parallel_computing 참조) 특히 제어 흐름이있는 의 섹션을 사용하면 왜 벡터화가 영향을 받는지 확인할 수 있습니다.

+0

머리를 주셔서 감사합니다. – splintercell

관련 문제