__attribute__((vector, nothrow)) int diffusion(const int n_particles, const int n_steps, const float x_threshold,
const float alpha, VSLStreamStatePtr rnStream)
{
int n_escaped=0;
float x[n_steps];
float rn[n_particles];
//Intel MKL function to generate random numbers
vsRngUniform(VSL_RNG_METHOD_UNIFORM_STD, rnStream, 1, rn, -1.0, 1.0);
for (int i = 0; i < n_steps; i++)
{
for (int j = 0; j < n_particles; j++) {
x[i] += dist_func(alpha, rn[j]);
}
}
for (int i = 0; i < n_steps; i++) {
if (x[i] > x_threshold) n_escaped++;
}
return n_escaped;
}
ОБ ОТЧЕТЕ О ГЕНЕРАЦИИ:
Report from: Loop nest, Vector & Auto-parallelization optimizations [loop, vec, par]
L OOP НАЧИНАЕТСЯ с распространения. cc (15,3) замечание # 25460: Нет l oop сообщается об оптимизации
L OOP НАЧИНАЕТСЯ с диффузии. cc (16,4) замечание # 25460: Нет l oop сообщается об оптимизации L OOP END L OOP КОНЕЦ
L OOP НАЧИНАЕТСЯ с распространения. cc (20,3) замечание # 25439: развернуто с остатком на 2
L OOP КОНЕЦ
L OOP НАЧИНАЕТСЯ с диффузии. cc (20,3) L OOP END
Report from: Code generation optimizations [cg]