On Wed, Jan 21, 2015 at 4:03 PM, Matthew Knepley <[email protected]> wrote:
> On Wed, Jan 21, 2015 at 3:16 PM, Chung-Kan Huang <[email protected]> > wrote: > >> >> On Wed, Jan 21, 2015 at 2:36 PM, Matthew Knepley <[email protected]> >> wrote: >> >>> On Wed, Jan 21, 2015 at 2:29 PM, Chung-Kan Huang <[email protected]> >>> wrote: >>> >>>> >>>> On Wed, Jan 21, 2015 at 2:15 PM, Matthew Knepley <[email protected]> >>>> wrote: >>>> >>>>> On Wed, Jan 21, 2015 at 2:07 PM, Chung-Kan Huang <[email protected]> >>>>> wrote: >>>>> >>>>>> >>>>>> On Wed, Jan 21, 2015 at 2:01 PM, Matthew Knepley <[email protected]> >>>>>> wrote: >>>>>> >>>>>>> On Wed, Jan 21, 2015 at 1:55 PM, Chung-Kan Huang <[email protected] >>>>>>> > wrote: >>>>>>> >>>>>>>> >>>>>>>> On Wed, Jan 21, 2015 at 1:44 PM, Matthew Knepley <[email protected] >>>>>>>> > wrote: >>>>>>>> >>>>>>>>> On Wed, Jan 21, 2015 at 1:40 PM, Chung-Kan Huang < >>>>>>>>> [email protected]> wrote: >>>>>>>>> >>>>>>>>>> Then A & AB are not longer the same matrix. They become complete >>>>>>>>>> two individuals aren't they? >>>>>>>>>> If I do whatever to AB after AB is created the A is still the >>>>>>>>>> same old A and not going to be affected by the operations I do to AB. >>>>>>>>>> >>>>>>>>> >>>>>>>>> Yes. >>>>>>>>> >>>>>>>>> >>>>>>>>>> >>>>>>>>>> What I am really looking for is a way to create two interfaces >>>>>>>>>> (one as AIJ and one as BAIJ) but they both refer to the same matrix. >>>>>>>>>> >>>>>>>>> >>>>>>>>> Why would you ever want this? Why not just using BAIJ? >>>>>>>>> >>>>>>>> As I mentioned in the beginning. There are parts of the code gets >>>>>>>> benifit when AIJ is used and the other part gets benifit if BAIJ is >>>>>>>> used. >>>>>>>> >>>>>>>> For instance, >>>>>>>> >>>>>>>> I'd like to use MatSetValuesBlocked but I also want to use ilu >>>>>>>> constructed by AIJ instead of BAIJ (our experience found ilu from BAIJ >>>>>>>> behaves funny sometimes. >>>>>>>> >>>>>>> >>>>>>> If the blocks truly are dense, then ILU(0) is identical on both. >>>>>>> >>>>>> >>>>>> Unfortunately the life is not that easy. The blocks are spares and >>>>>> we found ILU(1) works better for our case. >>>>>> And besides that is not the only reason I want to have AIJ & BAIJ >>>>>> interfaces, we have some code management issue and I am looking for short >>>>>> cut to unite them. >>>>>> >>>>>> So go back to the original question the short answer is no way? >>>>>> >>>>> >>>>> Yes, it would not make sense. >>>>> >>>>> What problem are you using ILU(1) for? >>>>> >>>> >>>> I am using it for flow simulation for reservoir problems. >>>> >>> >>> Have you considered trying algebraic multigrid? >>> >> >> I am solving PDE fully implicitly and as far as I know algebraic >> multigrid only good for pressure equations >> I will need 2 stages PC while AMG is for pressure stage but I will still >> need something like ILU for second stage. >> > > So you are using a mixed-formulation of Darcy? What equations do you have? > After some steps of reduction, the system equation solved in linear solver is basically the convervations of masses and energy. Together I am solving the equations with natrual variables (pressure, temperature, saturations and molar fractions) . It might have variable block size depend on local state and physics that considered. For instant, I can skip mass transfer if it is impermeable to fluid locally but I still need to solve for conduction in energy balance equations. I might also have some zones do not have some components so I can skip them as well. Ideally I should have used variable size of block but I used the same size anyway in my previous BAIJ configuration as you pointed out some optimization can be done with the same size blocked matrix. I switched to AIJ for reason related to ILU that I explained already. I didn't see the same problem in AIJ. I am looking for room to improve linear solver performance in all aspects including CPU time to assemble the matrix and also good PC that are provided by PETSc. Currently I am using AIJ + ILU(1) + overlay(1) +BCGS. I am not so happy about scalbility but that is not in the scope of the problem I brought initially. But I am interested if you have any good suggestions that I should test. Thanks, Kan > > Thanks, > > MAtt > > >> >>> >>>> Some issues we found is that >>>> 1) for a * x = 0 it doesn't return x = 0 >>>> >>> >>> This is impossible. There must be a bug in the code. >>> >>> Thanks, >>> >>> Matt >>> >>> >>>> 2) After compared ILU(1) with BAIJ against with ILU(1) with AIJ I found >>>> latter one is better. I could not find anything wrong with my BAIJ version >>>> though. However, experiences suggested that BAIJ's ILU(1) should be >>>> better. >>>> >>>> >>>> Thanks, >>>> >>>> Kan >>>> >>>>> >>>>> Thanks, >>>>> >>>>> Matt >>>>> >>>>> >>>>>> Thanks, >>>>>> >>>>>> Kan >>>>>> >>>>>>> >>>>>>> Matt >>>>>>> >>>>>>> >>>>>>>> Thanks, >>>>>>>> >>>>>>>> Kan >>>>>>>> >>>>>>>>> >>>>>>>>> Thanks, >>>>>>>>> >>>>>>>>> Matt >>>>>>>>> >>>>>>>>> >>>>>>>>>> Thanks, >>>>>>>>>> >>>>>>>>>> Kan >>>>>>>>>> On Wed, Jan 21, 2015 at 1:20 PM, Matthew Knepley < >>>>>>>>>> [email protected]> wrote: >>>>>>>>>> >>>>>>>>>>> On Wed, Jan 21, 2015 at 12:56 PM, Chung-Kan Huang < >>>>>>>>>>> [email protected]> wrote: >>>>>>>>>>> >>>>>>>>>>>> Hi, >>>>>>>>>>>> >>>>>>>>>>>> So if I do >>>>>>>>>>>> >>>>>>>>>>>> Mat A, AB; >>>>>>>>>>>> MatCreateAIJ(comm,m,n,M,N,d_nz, d_nnz,o_nz, o_nnz, &A); >>>>>>>>>>>> MatConvert(A, MATBAIJ, MAT_INITAL_MATRIX, &AB); >>>>>>>>>>>> MatSetBlockSize(AB, bs) >>>>>>>>>>>> I can create AB as a BAIJ with block size of bs from A which is >>>>>>>>>>>> a AIJ matrix. >>>>>>>>>>>> >>>>>>>>>>>> So from this point I can use both A and AB and they will mean >>>>>>>>>>>> the same matrix. Am I right? >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> Yes >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>>> At the end of the program do I only destory one of them or both? >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> Both >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>>> Do I need to worry about anything in terms of memory penalty? >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> It is twice the memory. Its another matrix. >>>>>>>>>>> >>>>>>>>>>> Did you catch when Jed said you could jsut create the BAIJ up >>>>>>>>>>> front? >>>>>>>>>>> >>>>>>>>>>> Thanks, >>>>>>>>>>> >>>>>>>>>>> Matt >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> Thanks, >>>>>>>>>>>> >>>>>>>>>>>> Kan >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> On Tue, Jan 20, 2015 at 4:39 PM, Barry Smith < >>>>>>>>>>>> [email protected]> wrote: >>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> You can do a MatConvert() (requires another copy of the >>>>>>>>>>>>> matrix) for the parts that benefit from BAIJ. >>>>>>>>>>>>> >>>>>>>>>>>>> Barry >>>>>>>>>>>>> >>>>>>>>>>>>> > On Jan 20, 2015, at 4:33 PM, Chung-Kan Huang < >>>>>>>>>>>>> [email protected]> wrote: >>>>>>>>>>>>> > >>>>>>>>>>>>> > Hi, >>>>>>>>>>>>> > >>>>>>>>>>>>> > Does PETSc provide means for conversion between AIJ & BAIJ. >>>>>>>>>>>>> > >>>>>>>>>>>>> > My matrix is created as AIJ because it makes life easy for >>>>>>>>>>>>> most part of the applications but some part of applications >>>>>>>>>>>>> actually get >>>>>>>>>>>>> some benefits with BAIJ. So I wonder if a matrix can exist as two >>>>>>>>>>>>> idenfities and I can use either format depend on which one is more >>>>>>>>>>>>> convenient at run time. >>>>>>>>>>>>> > >>>>>>>>>>>>> > So in my case the block size is fixed and identical for all >>>>>>>>>>>>> blocks. >>>>>>>>>>>>> > >>>>>>>>>>>>> > >>>>>>>>>>>>> > Thanks, >>>>>>>>>>>>> > >>>>>>>>>>>>> > >>>>>>>>>>>>> > Kan >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> -- >>>>>>>>>>>> >>>>>>>>>>>> *Cheers* >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> -- >>>>>>>>>>> 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 >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> -- >>>>>>>>>> >>>>>>>>>> *Cheers* >>>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> -- >>>>>>>>> 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 >>>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> >>>>>>>> *Cheers* >>>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> 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 >>>>>>> >>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> >>>>>> *Cheers* >>>>>> >>>>> >>>>> >>>>> >>>>> -- >>>>> 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 >>>>> >>>> >>>> >>>> >>>> -- >>>> >>>> *Cheers* >>>> >>> >>> >>> >>> -- >>> 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 >>> >> >> >> >> -- >> >> *Cheers* >> > > > > -- > 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 > -- *Cheers*
