On Fri, Dec 7, 2018 at 4:17 PM Josh L <ysjosh...@gmail.com> wrote: > I call VecSetBlockSizes before VecSetSizes instead of after, then it is > working fine now. > It can run with any number of processor. > Is there any reason for this? I am using petsc/3.10 and Fortran. >
Yes. VecSetSizes() calculates the division among processes. If you provide the block size first, it makes sure that blocks are not cut by the process division. Thanks, Matt > Thanks, > Josh > > > Matthew Knepley <knep...@gmail.com> 於 2018年12月4日 週二 下午6:44寫道: > >> We have example code that writes and loads from HDF5. If you can't modify >> that, send a simple >> sample code that fails. >> >> Thanks, >> >> Matt >> >> On Tue, Dec 4, 2018 at 5:53 PM Josh L via petsc-users < >> petsc-users@mcs.anl.gov> wrote: >> >>> >>> >>> Smith, Barry F. <bsm...@mcs.anl.gov> 於 2018年12月4日 週二 下午4:43寫道: >>> >>>> >>>> >>>> > On Dec 4, 2018, at 4:09 PM, Josh L <ysjosh...@gmail.com> wrote: >>>> > >>>> > I haven't figured out what causes it. I just use binaryopen instead >>>> of HDF5, and everything works fine. >>>> >>>> Did you originally save the data into the file with HDF5 format? >>>> >>> >>> Yes, by >>> Set Vec name, and block size >>> PetscViewerHDF5Open(write) >>> VecView(vec,viewer) >>> >>> >>> > >>>> > >>>> > >>>> > Josh L <ysjosh...@gmail.com> 於 2018年12月4日 週二 下午2:55寫道: >>>> > The first error comes from >>>> > PetscStackCallHDF5Return(group,H5Gcreate2,(file_id, groupName, 0, >>>> H5P_DEFAULT, H5P_DEFAULT)); >>>> > #000: H5G.c line 314 in H5Gcreate2(): unable to create group >>>> > major: Symbol table >>>> > minor: Unable to initialize object >>>> > >>>> > >>>> > Josh L <ysjosh...@gmail.com> 於 2018年12月4日 週二 下午2:38寫道: >>>> > I set the name of 2 vectors to be the same, but still get the same >>>> error. >>>> > >>>> > >>>> > >>>> > Josh L <ysjosh...@gmail.com> 於 2018年12月4日 週二 下午2:06寫道: >>>> > I just found out that I missed that note in VecLoad manual page, and >>>> I am trying it now. >>>> > Thanks. >>>> > >>>> > >>>> > >>>> > Smith, Barry F. <bsm...@mcs.anl.gov> 於 2018年12月4日 週二 下午2:00寫道: >>>> > >>>> > Hmm, this is a guess. HDF5 files read in objects based on their >>>> names. Are you sure that the vector you saved and the vector you later try >>>> to read in have the same name? You can set the name of the loaded vector >>>> with PetscObjectSetName((PetscObject)nv,"name") after you create it to >>>> match the name you used to save the vector. >>>> > >>>> > Barry >>>> > >>>> > >>>> > > On Dec 4, 2018, at 1:42 PM, Josh L via petsc-users < >>>> petsc-users@mcs.anl.gov> wrote: >>>> > > >>>> > > Hi, >>>> > > >>>> > > I have a vec.h5 that generated serially by >>>> > > gv is a sequential vec >>>> > > VecSetblockSize(gv,3) >>>> > > PetscViewerHDF5Open(vec,h5,write) >>>> > > VecView(gv) >>>> > > >>>> > > and I want to read in with different number of processor by >>>> > > DMGetGlobalVector(dm,nv) >>>> > > PetscViewerHDF5Open(write) >>>> > > VecLoad(nv) >>>> > > >>>> > > nv has bs=3, and I have set bs for gv as 3. >>>> > > >>>> > > I get the following error. any hint to solve it ? thanks >>>> > > >>>> > > Error in HDF5 call H5Gcreate2() Status -1 >>>> > > #000: H5G.c line 314 in H5Gcreate2(): unable to create group >>>> > > major: Symbol table >>>> > > minor: Unable to initialize object >>>> > > #001: H5Gint.c line 194 in H5G__create_named(): unable to create >>>> and link to group >>>> > > major: Symbol table >>>> > > minor: Unable to initialize object >>>> > > #002: H5L.c line 1638 in H5L_link_object(): unable to create new >>>> link to object >>>> > > major: Links >>>> > > minor: Unable to initialize object >>>> > > #003: H5L.c line 1882 in H5L_create_real(): can't insert link >>>> > > major: Symbol table >>>> > > minor: Unable to insert object >>>> > > #004: H5Gtraverse.c line 861 in H5G_traverse(): internal path >>>> traversal failed >>>> > > major: Symbol table >>>> > > minor: Object not found >>>> > > #005: H5Gtraverse.c line 641 in H5G_traverse_real(): traversal >>>> operator failed >>>> > > major: Symbol table >>>> > > minor: Callback failed >>>> > > #006: H5L.c line 1685 in H5L_link_cb(): unable to create object >>>> > > major: Object header >>>> > > minor: Unable to initialize object >>>> > > #007: H5O.c line 3016 in H5O_obj_create(): unable to open object >>>> > > major: Object header >>>> > > minor: Can't open object >>>> > > #008: H5Goh.c line 268 in H5O_group_create(): unable to create >>>> group >>>> > > major: Symbol table >>>> > > minor: Unable to initialize object >>>> > > #009: H5Gint.c line 245 in H5G__create(): unable to create group >>>> object header >>>> > > major: Symbol table >>>> > > minor: Unable to initialize object >>>> > > #010: H5Gobj.c line 163 in H5G__obj_create(): unable to create >>>> group >>>> > > major: Symbol table >>>> > > minor: Unable to create file >>>> > > #011: H5Gobj.c line 206 in H5G__obj_create_real(): no write >>>> intent on file >>>> > > major: Object cache >>>> > > minor: Bad value >>>> > > >>>> > > >>>> > > >>>> > >>>> >>>> >> >> -- >> What most experimenters take for granted before they begin their >> experiments is infinitely more interesting than any results to which their >> experiments lead. >> -- Norbert Wiener >> >> https://www.cse.buffalo.edu/~knepley/ >> <http://www.cse.buffalo.edu/~knepley/> >> > -- What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead. -- Norbert Wiener https://www.cse.buffalo.edu/~knepley/ <http://www.cse.buffalo.edu/~knepley/>