https://github.com/N-BodyShop/changa
Raw File
Tip revision: 7d5384c4393f729b09488f5661708ee6bf807d12 authored by Robel on 08 December 2016, 05:56:33 UTC
Ewald Improvements (Robel)
Tip revision: 7d5384c
DumpFrameData.h
#ifndef DUMP_FRAME_DATA_H
#define DUMP_FRAME_DATA_H

#include "ParallelGravity.h"
#include "Reductions.h"

/// @brief Group to hold the frame buffer memory.
class DumpFrameData : public CBase_DumpFrameData 
{
    void *bufImage;
    int nImage;
  public:
    void *Image;

    DumpFrameData() { bufImage = NULL; }
    DumpFrameData(CkMigrateMessage *m) : CBase_DumpFrameData(m) { bufImage = NULL;}
    void pup(PUP::er &p) { CBase_DumpFrameData::pup(p); }
    ~DumpFrameData() { if(bufImage) free(bufImage); }
    /// @brief
    void clearFrame(InDumpFrame in, const CkCallback& cb) {
	if(bufImage == NULL)
	    bufImage = malloc(sizeof(in) + in.nxPix*in.nyPix*sizeof(DFIMAGE));
	Image = ((char *)bufImage) + sizeof(in);
	*((struct inDumpFrame *)bufImage) = in; //start of reduction
						//message is the parameters
	dfClearImage( &in, Image, &nImage);
	contribute(cb);
	}
    
    void combineFrame(InDumpFrame in, const CkCallback& cb) {
	contribute(sizeof(in) + nImage, bufImage, dfImageReduction, cb);
	free(bufImage);
	bufImage = NULL;
	}
    };

#endif
back to top