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.
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:
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.