Independently configuring down & up smoothers in PCMG

Barry Smith bsmith at mcs.anl.gov
Mon Oct 20 20:13:11 CDT 2008


    I want  -mg_levels_2_down_blah to first match - 
mg_levels_2_down_blah then
-mg_levels_2_blah then -mg_levels_blah, I also want - 
mg_levels_down_blah  to
match -mg_levels_down_blah then -mg_levels_blah All this also with  
nesting
of the numbers and down etc.

    If you can find a C regular expression library that can manage  
this (and is portable
and "small") then I guess we could try that.

    Barry


On Oct 20, 2008, at 5:32 PM, Matthew Knepley wrote:

> On Mon, Oct 20, 2008 at 5:18 PM, Barry Smith <bsmith at mcs.anl.gov>  
> wrote:
>>
>>  Matt,
>>
>>   You idea is more general than mine, and (I think) encompasses  
>> what you
>> could
>> do with mine.
>>
>>   We must keep in mind that prefixes can be append/prepended to other
>> prefixes
>> repeatedly. To manage this with your approach we might likely need  
>> to turn a
>> prefix
>> into a first class object and provide all the infrastructure to  
>> manage them.
>> Yuck, if
>> we can help it.
>>
>>
>> Of course, with my approach and several _2_ and _CAP_ in a string the
>> searches
>> get more complicated also, there is no free lunch. But I like the  
>> simplicity
>> of
>> keeping the prefix a simple string.
>>
>> We could avoid a prefix object if we, for example, divided the  
>> possibilities
>> with a |, for example my   mg_levels_1_ prefix would be
>> <mg_levels_1_|mg_levels>
>> Note each "part" of an combined prefix would need to be separated by
>> something
>> like <> so one knows where the | applies.
>>
>> You write "we let an object have multiple prefixes", this is  
>> actually what
>> my suggestion
>> does also, but with very limited possible multiples (which I kind  
>> of like, I
>> hate to think
>> -you_bad_option_pc_type  and -a_totally_different_pc_type mean the  
>> same
>> thing.)
>
> Okay, I always like the idea of limiting domains for simplicity. How
> about treating
> the prefix as a simple string, subject to prepending and appending,  
> but change
> the meaning of match. Now the prefix is interpreted as a regular  
> expression, and
> a match means an RE match. We can find a small library to do just
> this, and I think
> it is much more understandable than ad hoc rules from us.
>
>  Matt
>
>> Barry
>>
>>
>> On Oct 20, 2008, at 4:56 PM, Matthew Knepley wrote:
>>
>>> On Mon, Oct 20, 2008 at 4:18 PM, Barry Smith <bsmith at mcs.anl.gov>  
>>> wrote:
>>>>
>>>> Sorry I haven't responded to this fully.
>>>>
>>>> I hate the idea of a hack that is just for this case and a special
>>>> flag you got to set or pass in.
>>>>
>>>> For the _1_, _2_ etc I did the following. If the string in the  
>>>> code has
>>>> _%d_  (for example _1_) it first checks for an exact match in the  
>>>> list of
>>>> set options. If it does not find an exact match it removes the _ 
>>>> %d_ and
>>>> tries
>>>> again for an exact match. This seems to work pretty well and  
>>>> could be
>>>> used in many places in the code, not just in the PCMG stuff.
>>>
>>> I am not sure I like this. It does not fit with my idea of  
>>> namespaces, but
>>> I
>>> do like something very similar (maybe even identical, I can't tell  
>>> yet).
>>> What
>>> if we let an object have multiple prefixes, and we have an order for
>>> checking.
>>> The way we could have
>>>
>>> -pc_mg_1_ksp_max_its 2 -pc_mg_1_up_ksp_max_its 3
>>>
>>> The second would override the first for the up smoother. Is this  
>>> identical
>>> to
>>> what you were proposing?
>>>
>>> Matt
>>>
>>>> It would be nice to use some similar technique the case below.
>>>> Possibilities
>>>> 1) use _CAPS_ first exactly and then removing the _CAPS_
>>>> 2) make the part with special charactors _<string>_,  first look  
>>>> with
>>>> _string_
>>>> then try without _string_ (the <> are just my example charactors,  
>>>> could
>>>> use
>>>> | or whatever.
>>>>
>>>> What do people think about this?
>>>>
>>>> Barry
>>>>
>>>> Note that currently we always use small letters in the option  
>>>> names. We
>>>> could continue to
>>>> have the options database have small letters and use  
>>>> _tolower(CAPS)_ as
>>>> the
>>>> first test.
>>>> I'm inclinded to do 1).
>>>>
>>>> With multiple _XXX_ _4_ in an option we'll have to be careful to  
>>>> properly
>>>> check all possibilities
>>>> in some consistent order.
>>>>
>>>>
>>>> On Oct 8, 2008, at 10:14 PM, Dave May wrote:
>>>>
>>>>> Howdy,
>>>>>  Should there be a mechanism to independently configure the down
>>>>> and up smoothers
>>>>> for PCMG from the command line?
>>>>>
>>>>> From the looks of things, it seems that on a  given level, one  
>>>>> is only
>>>>> able to set the smoothing
>>>>> sweeps to be different via
>>>>> -pc_mg_smoothup 3 -pc_mg_smoothdown 2
>>>>>
>>>>> Since both the down and up smoothers (KSP's) have the prefix set  
>>>>> to be
>>>>> "mg_levels_X",
>>>>> it would seem that I cannot differentiate between the up ksp at  
>>>>> level
>>>>> X from the down ksp
>>>>> at level X via any command line arguments.
>>>>>
>>>>> It would be pain to ALWAYS have to configure both the up and down
>>>>> smoothers independently.
>>>>> But to enable the down and up smoothers to be configured  
>>>>> independently
>>>>> (on those odd occasions
>>>>> you want to do it) , could we do something like; set a flag via
>>>>> -pc_mg_smoothers_different
>>>>> which would include in the smoothers prefix, the words "up" or  
>>>>> "down"?
>>>>> Then on the command line we could do something like
>>>>> -mg_levels_1_up_ksp_type XXX
>>>>> -mg_levels_1_down_ksp_type YYY
>>>>>
>>>>> Cheers,
>>>>> Dave
>>>>>
>>>>
>>>>
>>>
>>>
>>>
>>> --
>>> 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
>>>
>>
>>
>
>
>
> -- 
> 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
>




More information about the petsc-dev mailing list