Странные результаты на MIC

Для моей диссертации я запустил простой код, используемый для изучения системы Леннарда Джонса на сопроцессоре Xeon Phi, и я попытался векторизовать ее и изучить изменения во времени выполнения.
В частности, машина, которую я использовал, имеет 61 ядро ​​с 32 кБ кэш-памяти L1 и 512 кБ кэш-памяти L2, векторный регистр может запомнить 512 бит.

Я реализовал код с использованием и без использования метода списка ячеек и использовал различное количество частиц, в частности от 512 до 16384, удваивая его каждый раз.
Позиции и силы запоминаются в трех разных векторах (rx, ry, rz и fx, fy, fz).
У меня хорошие результаты в случае без списка ячеек, но в другом у меня странные результаты.

Зависимость между списком ячеек и числом частиц должна быть линейной с реализованным методом списка ячеек, действительно, я получил прямую линию, изображающую время по числу частиц, но с N = 8192 и N = 16384 временем исполнение намного выше.
Я попытался сделать некоторые вычисления со значениями N рядом с этими значениями, но масштабирование корректно для каждого другого числа, только для этих двух есть проблема.
Чтобы прояснить это, я сообщаю о некоторой ценности:

N      Time
512    6.14995
1024   11.1381
2048   23.1964
4096   51.9393
6144   78.1251
8192   389.724
10240  144.173
12288  167.772
14336  209.669
16384  822.131

Я думаю, что это техническая проблема, но я действительно не знаю точно, почему это происходит.
Я также наблюдал очень низкую вариацию с использованием векторизации, без списка ячеек я наблюдал вариацию в 4 раза, более или менее, но со списком ячеек она составляла только около 1,5х.

Вопросы:

Кто-нибудь имеет представление о том, что может быть проблема? Почему эти конкретные значения странные и почему коэффициент векторизации такой низкий?

Мой профессор сказал мне, что может случиться так, что некоторые значения показывают странные результаты при исполнении, кто-нибудь наблюдал что-то подобное?

Большое спасибо.

Ниже я приведу основной цикл, в котором оцениваются силы, в двух словах основная часть выполнения, реализованная с помощью списка ячеек.

for(vcy=0; vcy<ncell; vcy++){

for(vcx=0; vcx<ncell; vcx++){

previouspartc=0;

// Central cell index
c=vcx*ncell+vcy;

// Define previouspart
for(p=1; p<=c; p++) previouspartc=previouspartc+npart[p-1];

// Loop over central cell's particles
for(i=0; i<npart[c]-1; i++){

for(j=i+1; j<npart[c]; j++){

ftempx=0.; ftempy=0.;
dx =rx1[previouspartc+i]-rx1[previouspartc+j];
dy =ry1[previouspartc+i]-ry1[previouspartc+j];
dx = (dx + 0.5*dy)*L;
dy = dy*halfsq3*L;
r2 = dx*dx + dy*dy;
if(r2<r2cut) {

rr2 = 1./r2;
rr6 = rr2*rr2*rr2;
enk+=(c12*rr6 -c6)*rr6 -ecut;
vir=(cf12*rr6-cf6)*rr6*rr2;
ftempx=vir*dx;
ftempy=vir*dy;
}
fx1[previouspartc+i]+=ftempx;
fy1[previouspartc+i]+=ftempy;
fx1[previouspartc+j]-=ftempx;
fy1[previouspartc+j]-=ftempy;
}
}

// Create the two indexes vcx1, vcy1 of the neighbour cells (the one on the right and the three under)
vcx1[0]=vcx+1;   vcy1[0]=vcy;
for(k=1; k<4; k++){

vcx1[k]=vcx-1+(k-1);
vcy1[k]=vcy-1;
}

// Loop over near cells
for(k=0; k<4; k++){

previouspartc1=0;

// PBC
shiftx=0.; shifty=0.;

if(vcx1[k] <0){ shiftx= -1; vcx1[k]=ncell-1;}

else if(vcx1[k] >=ncell){ shiftx= 1; vcx1[k]=0;}

if(vcy1[k] <0){ shifty= -1; vcy1[k]=ncell-1;}

else if(vcy1[k] >=ncell){ shifty= 1; vcy1[k]=0;}

// Scalar cell index of neighbour cell
c1=vcx1[k]*ncell+vcy1[k];// Define previouspart
for(p=1; p<=c1; p++) previouspartc1=previouspartc1+npart[p-1];

for(i=0; i<npart[c]; i++){

for(j=0; j<npart[c1]; j++){

ftempx=0.; ftempy=0.;
dx =rx1[previouspartc+i]-(rx1[previouspartc1+j]+shiftx);
dy =ry1[previouspartc+i]-(ry1[previouspartc1+j]+shifty);
dx = (dx + 0.5*dy)*L;
dy = dy*halfsq3*L;
r2 = dx*dx + dy*dy;
if(r2<r2cut) {

rr2 = 1./r2;
rr6 = rr2*rr2*rr2;
enk+=(c12*rr6 -c6)*rr6 -ecut;
vir=(cf12*rr6-cf6)*rr6*rr2;
ftempx=vir*dx;
ftempy=vir*dy;
}
fx1[previouspartc+i]+=ftempx;
fy1[previouspartc+i]+=ftempy;
fx1[previouspartc1+j]-=ftempx;
fy1[previouspartc1+j]-=ftempy;
}
}
}
}
}

1

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]