static cl_int checkpointCL(CLInfo* ci, SeparationCLMem* cm, const IntegralArea* ia, EvaluationState* es)
{
    cl_int err;

    err = readKernelResults(ci, cm, es, ia);
    if (err != CL_SUCCESS)
        return err;

    err = writeCheckpoint(es) ? MW_CL_ERROR : CL_SUCCESS;
    mw_checkpoint_completed();

    return err;
}
static inline NBodyStatus nbCheckpoint(const NBodyCtx* ctx, NBodyState* st)
{
    if (nbTimeToCheckpoint(ctx, st))
    {
        if (nbWriteCheckpoint(ctx, st))
        {
            return NBODY_CHECKPOINT_ERROR;
        }

        mw_checkpoint_completed();
    }

    return NBODY_SUCCESS;
}