Я пытаюсь разработать код на основе MPI и DPC ++ для крупномасштабного моделирования. Проблема может быть обобщена как: я хочу объявить размер данных, распределить память данных внутри моего класса конструктора, а затем попытаться использовать их в функциях внутри моего класса. Затем я понимаю, что я должен предоставить размер константа в буфере, если я хочу использовать аксессуар, но MPI делает множество разных размеров на каждом ранге. Затем я обнаружил, что также невозможно использовать общую память, потому что в DPC ++ я не могу использовать этот указатель, и массив или матрица, выделенная в классе, не могут использоваться в подфункции. Я в замешательстве и понятия не имею об этом. < /P>
Код такой: < /p>
class abc{
queue Q{};
std::array e;
std::arrayt;
abc(){
ua = malloc_shared(local_size, this->Q);
}
void b();
}
void abc::b(){
for(int i=0;iQ.submit([&](handler &h)
{ accessor eee{ee, h, read_only};
accessor ttt{tt, h, read_only};
h.parallel_for(range{size1, size2, size3}, [=](id idx)
double eu=ua[id[0]];
int aa=eee[id[1]];
double cc=ttt[id[2]];
}
}
< /code>
e и t можно получить доступ, потому что они имеют размер const, и я могу использовать буфер. Но у UA есть локальный размер, и это зависит от MPI, поэтому я не могу использовать буфер, и общая память также не может использоваться в субфункции.
Любая помощь с этим?
Подробнее здесь: https://stackoverflow.com/questions/720 ... pointer-in