다음 for 루프가 있습니다. 형식 배열을 켜면 코드가 벡터화되지 않습니다. 형식을 '1'로 고칠 때 gcc는 벡터화를 소급화하는 벡터화를 수행합니다. 누구나 어떤 종류의 벡터화를 유발할 수있는 어떠한 권고안이 있습니까?내부 if 문이 벡터화를 중단합니다.
#define type(M,N) type[(M)*sizeX + (N)]
for (int i = 0; i < sizeY - 1; i++)
{
for (int j = 0; j < sizeX - 1; j++)
{
const int id = type(i, j);
//const int id = 1; //vectorizes
const float A = this->A[id];
const float B = this->B[id];
a(i, j) = A * a(i, j) + B * (b(i, j) - b(i + 1, j))*(p[i]);
}
}
4.7.1
45: not vectorized: not suitable for gather A_26 = *D.14145_25;
편집 한
하는 모든 배열은 포인터로 저장됩니다 일부 클래스의 멤버로 키워드를 제한 으로 정의 된 GCC에서 대략적인 오류 . 'type
은'작은 경우 내가 할 수있는 일이
편집 2
있습니까?
편집 3
작은 8.
음,'type()'은 무엇입니까? – Mysticial
type은 (모든 배열과 마찬가지로) __restrict__ 키워드가있는 클래스에 정의 된 정수 배열입니다. – Mikhail
함수처럼 'type()'을 호출합니다.그 기능의 정의를 보여줄 수 있습니까? – Mysticial