On Aug 6, 2012, at 10:17 PM, "Gong Ding" <gdiso at ustc.edu> wrote:
> Thanks, Barry. It is really a wonderful tool.
Thanks
> PS: The C STRING support of AMS is a bit strange. At very beginning, I can't
> understand the mechanism of STRING. So I added a CHAR data type to AMS for an
> alternate of STRING.
>
> Hope the AMS manual have some more detailed description to parallel usage and
> data types.
Maybe you can help write it. We really don't have any one
maintaining/improving the AMS which is a pity. You can access the repository
with
hg clone http://petsc.cs.iit.edu/petsc/ams-dev
Barry
>
>
>>
>>
>> On Aug 6, 2012, at 9:36 AM, "Gong Ding" <gdiso at ustc.edu> wrote:
>>
>>
>>
>>> Hi,
>>
>>> I am trying to use AMS as data communicator between computational code and
>>> user monitor. The AMS works well for serial situation, however, I don't
>>> know how to use it for parallel environment. The manual has little
>>> information, too.
>>
>>
>>
>> You need to build AMS with the same MPI that you will use in the parallel
>> program.
>>
>>
>>
>>>
>>
>>> I'd like to know some thing about data synchronization.
>>
>>> Does AMS process data synchronization in MPI environment automatically?
>>> Should I call AMS_Comm_publish on every MPI processor, and create memory
>>> with AMS_Memory_create for my variables on each processor?
>>
>>
>>
>> There are different types of variables you can publish.
>>
>>
>>
>> AMS_Comm_publish() takes an argument AMS_Comm_type which would be MPI_TYPE
>> like in your case.
>>
>>
>>
>> AMS_Memory_add_field() takes an argument AMS_Shared_type which can be
>> AMS_COMMON, AMS_DISTRIBUTED or AMS_REDUCED and if it is reduced the
>> AMS_Reduction_type is AMS_SUM, AMS_MAX, AMS_MIN, or AMS_NONE. See the
>> manual page for AMS_Memory_add_field() .
>>
>>
>>
>> If AMS_Shared_type is AMS_COMMON then AMS assumes that the values in those
>> locations are identical on all processes (and it brings over to the accessor
>> one set of those values), if distributed then each process has an array of
>> different values (and it brings over all those values, in a long array, on
>> the accessor) if reduce that it brings back the values after applying the
>> reduction operator across all the processes; so with sum it beings back the
>> sum of the values over all the processes.
>>
>>
>>
>>>
>>
>>> If so, the accessor will see how many TCP/IP port? Or accessor only
>>> communicate with MPI processor 0 and processor 0 will broadcast the
>>> information to all the others?
>>
>>
>>
>> AMS completely manages the fact there are multiple "publishers", the
>> accessor transparently handles getting stuff from all the publisher nodes.
>>
>>
>>
>>>
>>
>>> If not, should I only create AMS object on processor 0, and processor 0
>>> should broadcast what AMS get?
>>
>>
>>
>> Nope, you do not need to do this.
>>
>>
>>
>> Barry
>>
>>
>>
>>>
>>
>>> Gong Ding
>>
>>>
>>
>>>
>>
>>>
>>
>>>
>>
>>>
>>
>>>
>>
>>>
>>
>>
>>
>>