Automatische Vektorisierung funktioniert nicht

Ich versuche, meinen Code automatisch zu vektorisieren, aber es funktioniert nicht.

int _tmain(int argc, _TCHAR* argv[])
{
    const int N = 4096;
    float x[N];
    float y[N];
    float sum = 0;

    //create random values for x and y 
    for (int i = 0; i < N; i++)
    {
        x[i] = rand() >> 1;
        y[i] = rand() >> 1;
    }

    for (int i = 0; i < N; i++){
        sum += x[i] * y[i];
    }
}

Keine der beiden Schleifen vektorisiert hier, aber ich interessiere mich wirklich nur für die zweite Schleife.

Ich benutze Visual Studio Express 2013 und kompiliere mit dem/O2 und/Qvec-report:2(Um zu melden, ob die Schleife vektorisiert wurde oder nicht) Optionen. Beim Kompilieren erhalte ich die folgende Meldung:

--- Analyzing function: main
c:\users\...\documents\visual studio 2013\projects\intrin3\intrin3\intrin3.cpp(28) : info C5002: loop not vectorized due to reason '1200'
c:\users\...\documents\visual studio 2013\projects\intrin3\intrin3\intrin3.cpp(41) : info C5002: loop not vectorized due to reason '1305'

Grund '1305', wie man siehtHIER, sagt, dass "der Compiler die richtigen vektorisierbaren Typinformationen für diese Schleife nicht erkennen kann." Ich bin mir nicht sicher, was das bedeutet. Irgendwelche Ideen?

Nach dem Aufteilen der zweiten Schleife in zwei Schleifen:

for (int i = 0; i < N; i++){
    sumarray[i] = x[i] * y[i];
}

for (int i = 0; i < N; i++){
    sum += sumarray[i];
}

Nun vektorisiert die erste der obigen Schleifen, die zweite wiederum nicht mit dem Fehlercode 1305.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage