Last commit for parallelwork.c: 8a155c1522c0818d43b6bae4cc5806ea41f88793

Parallel md code using OpenMP and MPI

Ramses van Zon [2016-09-29 14:34:01]
Parallel md code using OpenMP and MPI
#include <omp.h>
#include <ndmalloc.h>
#include "parallelwork.h"

void work_alloc(parallel_work_t* work, int maxN, int sendrecvnum, int bufmax, int maxsendcells)
{
    #pragma omp parallel default(none) shared(work)
    #pragma omp single
    work->nthreads = omp_get_num_threads();
    work->atomfx = ndmalloc(sizeof(double), 2, work->nthreads, maxN);
    work->atomfy = ndmalloc(sizeof(double), 2, work->nthreads, maxN);
    work->atomfz = ndmalloc(sizeof(double), 2, work->nthreads, maxN);
    work->send_buffer_atoms = ndmalloc(sizeof(atom_t), 2, sendrecvnum, bufmax);
    work->recv_buffer_atoms = ndmalloc(sizeof(atom_t), 2, sendrecvnum, bufmax);
    work->blocklens = ndmalloc(sizeof(int), 2, sendrecvnum, maxsendcells);
    work->blockinit = ndmalloc(sizeof(int), 2, sendrecvnum, maxsendcells);
}

void work_free(parallel_work_t* work)
{
    ndfree(work->atomfx);
    ndfree(work->atomfy);
    ndfree(work->atomfz);
    ndfree(work->send_buffer_atoms);
    ndfree(work->recv_buffer_atoms);
    ndfree(work->blocklens);
    ndfree(work->blockinit);
    work->atomfx = NULL;
    work->atomfy = NULL;
    work->atomfz = NULL;
    work->nthreads = 0;
    work->send_buffer_atoms = NULL;
    work->recv_buffer_atoms = NULL;
    work->blocklens = NULL;
    work->blockinit = NULL;
}
ViewGit