https://github.com/N-BodyShop/changa
Raw File
Tip revision: c99f5fa4470bba4370f924f124c64dfea3d4421d authored by Tim Haines on 23 October 2018, 23:21:25 UTC
Complete overhaul of build system
Tip revision: c99f5fa
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