#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?