Потокобезопасность для параллельного HDF5 при создании атрибутов

#parallel-processing #hdf5

Вопрос:

Я новичок в HDF5 и озадачен некоторыми параллельными проблемами:

В параллельной программе, если я создам файл и сначала напишу массив XXX (строка 327) в совокупности, затем пожелаю написать атрибут (строка 339), как это:

 MPI_Initialize
...
310     comm = MPI_COMM_WORLD
311     info = MPI_INFO_NULL
312     CALL h5open_f(h5err)
313     CALL h5pcreate_f(H5P_FILE_ACCESS_F,plist_id,h5err)
314     CALL h5pset_fapl_mpio_f(plist_id,comm,info,h5err)
315     CALL h5fcreate_f(filename,H5F_ACC_TRUNC_F,file_id,h5err,access_prp=plist_id)
316     CALL h5pclose_f(plist_id,h5err)  ! Close property
317
318     CALL h5screate_simple_f(size(dims),dims,filespace,h5err)
319     CALL h5dcreate_f(file_id,dsetname,H5T_NATIVE_DOUBLE,filespace,dset_id,h5err) ! Create dataset
320     CALL h5sclose_f(filespace, h5err) ! Close filespace
321
322     CALL h5screate_simple_f(size(dims),cont,memspace,h5err)
323     CALL h5dget_space_f(dset_id,filespace,h5err)
324     CALL h5sselect_hyperslab_f(filespace,H5S_SELECT_SET_F,offset,cont,h5err)
325     CALL h5pcreate_f(H5P_DATASET_XFER_F,plist_id,h5err)
326     CALL h5pset_dxpl_mpio_f(plist_id,H5FD_MPIO_COLLECTIVE_F,h5err)
327     CALL h5dwrite_f(dset_id,H5T_NATIVE_DOUBLE,XXX,dims,h5err,file_space_id=filespace,mem_space_id=memspace,xfer_prp=plist_id)
328     CALL h5sclose_f(filespace,h5err)
329     CALL h5sclose_f(memspace,h5err)
330     CALL h5pclose_f(plist_id,h5err)
331     CALL h5dclose_f(dset_id,h5err)
...
337     CALL h5screate_f(H5S_SCALAR_F,filespace,h5err)
338     CALL h5screate_f(H5S_SCALAR_F,aspace_id,h5err)
339     CALL AddH5Attribute(file_id,'MyDataName',MyData,aspace_id)
...
MPI_Finalize
 

Будут ли возникать конфликты между потоками при создании и записи атрибута в строке 339?