Итак, я реализовал свою собственную библиотеку mpi (упрощенную версию), и мне нужно отправить/получить между процессами некоторые данные. MPI_Send выглядит следующим образом (void * buf, int count, dataatype data и т. Д.). SO, это означает, что мне нужно послать счетные элементы данных типа (char, double или int), указанные в адресе buf. Мне нужно отправить их через очередь сообщений (mq). MPI_Recv принимает те же параметры. На данный момент вот что я делаю в Send и Recv:Отправка объекта void * через очередь сообщений [linux]
//Sender part of code
ret=mq_send(mq,buf,sizeof(buf),0);
if(ret < 0)
return MPI_ERR_IO;
//Receiver part of code
ret = mq_receive(mq, buf, MSGSIZE, NULL);
if(ret < 0)
return MPI_ERR_IO;
Прямо сейчас я получаю только первый элемент массива. Как я могу отправить все это? Вот что я имею в виду
//Sender part of pseudocode
for(i=0,count)
element=(cast to datatype)buf[i];
mq_send(mq,element,sizeof,0);
//Receiver part of pseudocode
//i receive the count number of elements prior to this message
for(i=0,count)
mq_receive(mq,local_variable,etc...)
somehow store them into my void *buf which i receive as an argument ??
Если что-то не достаточно ясно, я отвечу
Я так глуп, я на самом деле пробовал это, но приказал сделать if/case и сделать sizeof (datatype) * count i только попробовал sizef (char) * count. Теперь он работает, спасибо вам большое :) – user1272703