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

Reply via email to