Вы создаете новое сообщение отправки, освобождаете его до его завершения, а затем получаете вызов:
MPI_Isend(points, size*DIMS, MPI_FLOAT, sending_to, 0, MPI_COMM_WORLD, &req);
MPI_Request_free(&req);
MPI_Recv(query_points, size*DIMS, MPI_FLOAT, receiving_from, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE);
Вы должны освободить запрос после отправки сообщения:
MPI_Isend(points, size*DIMS, MPI_FLOAT, sending_to, 0, MPI_COMM_WORLD, &req);
MPI_Recv(query_points, size*DIMS, MPI_FLOAT, receiving_from, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE);
MPI_Wait(&req);