DPC ++ Accept the неконфиртируемого буфера размера или получить доступ к указателю общей памяти в классе с помощью MPIC++

Программы на C++. Форум разработчиков
Anonymous
DPC ++ Accept the неконфиртируемого буфера размера или получить доступ к указателю общей памяти в классе с помощью MPI

Сообщение Anonymous »

Я пытаюсь разработать код на основе 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

Вернуться в «C++»