Skip to content

Remove all references to very obsolete _CRAYMPP and LOCKNUMREC macros #1459

@edwardhartnett

Description

@edwardhartnett

Back in olden, olden times, the Cray people did some exciting new things with multiprocessing. And netcdf was there to support that.

Those exciting early developments eventually evolved into MPI, which is now universally used for HPC, including on all Cray machines. This has been the case for more than 20 years.

So there is no longer any need for the old code that supported old Cray multiprocessing. Even if it would still work (which it won't) it is written around the concept of one MPI communicator, and modern HPC applications routinely use multiple MPI communicators at the same time. MPI depends on this capability, and netCDF supports it with our parallel code.

So we can remove these old macros in code like this:

void
free_NC(NC *ncp)
{
    if(ncp == NULL)
        return;
    if(ncp->path)
        free(ncp->path);
    if(ncp->model)
        free(ncp->model);
    /* We assume caller has already cleaned up ncp->dispatchdata */
#if _CRAYMPP && defined(LOCKNUMREC)
    shfree(ncp);
#else
    free(ncp);
#endif /* _CRAYMPP && LOCKNUMREC */

These will be easy to remove, and will have no effect on testing, since this code is currently untested and would probably break if it were tested.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions