> On 21 Oct 2022, at 10:46 AM, TARDIEU Nicolas <nicolas.tard...@edf.fr> wrote: > > Dear Pierre, > > To complete my last post, in fact, the initial code (playing with the LGMap) > was correct. It was my test case that was wrong. > Once fixed according to your suggestion, everything turns out to be OK. > I am nevertheless wondering if this IS embeding according to the global > numbering should not be a native PTESc's feature ?
I’m not sure about what you are asking for here. I believe the most efficient way to deal with your problem is to use a MatNest instead of a MatAIJ. Then, there are several ways to extract submatrices of the global MatNest without having to deal with the embedding. Thanks, Pierre > Thank you again, > Nicolas > -- > Nicolas Tardieu > Ing PhD Computational Mechanics > EDF - R&D Dpt ERMES > PARIS-SACLAY, FRANCE > De : TARDIEU Nicolas <nicolas.tard...@edf.fr> > Envoyé : jeudi 20 octobre 2022 11:45 > À : pie...@joliv.et <pie...@joliv.et> > Cc : petsc-users@mcs.anl.gov <petsc-users@mcs.anl.gov> > Objet : RE: [petsc-users] Trouble with ISEmbed > > Dear Pierre, > > You fixed the problem! Thank you warmly for your precious help. > > Best regards, > Nicolas > -- > Nicolas Tardieu > Ing PhD Computational Mechanics > EDF - R&D Dpt ERMES > PARIS-SACLAY, FRANCE > De : pie...@joliv.et <pie...@joliv.et> > Envoyé : mercredi 19 octobre 2022 22:22 > À : TARDIEU Nicolas <nicolas.tard...@edf.fr> > Cc : petsc-users@mcs.anl.gov <petsc-users@mcs.anl.gov> > Objet : Re: [petsc-users] Trouble with ISEmbed > > Sorry, I’m not very proficient in petsc4py, and there are a bunch of > interfaces missing, e.g., ISShift(), so it may not be optimal, but I hope > you’ll understand. > First, you’ll need to regenerate the .bin by uncommenting the proper part of > the code. > That is because you were initially generating a 20x20 matrix, with 4 fields > per unknown. > That’s 5 unknowns, and so, with two processes, 10 rows per process is not > consistent as 10/4 is not an integer — I don’t know how to force, in > petsc4py, the local size to 12 on process #0 and 8 on process #1. > The modified code generates a 16x16 matrices so it remains consistent. > If you then run the first part of the program, you’ll get both B_uu and B_pp > from B instead of A, with one, two, or four processes. > Again, that should work for arbitrary number of processes, you just need to > be careful that your local dimensions are consistent with the number of > fields. > > Thanks, > Pierre > > > >> On 19 Oct 2022, at 5:01 PM, Pierre Jolivet <pie...@joliv.et >> <mailto:pie...@joliv.et>> wrote: >> >> >> >>> On 19 Oct 2022, at 4:32 PM, TARDIEU Nicolas <nicolas.tard...@edf.fr >>> <mailto:nicolas.tard...@edf.fr>> wrote: >>> >>> Dear Pierre, >>> >>> Thank you very much for your answer. I have the same explanation as you for >>> the code I sent. >>> But what I would like to do is the following : I have the full matrix A >>> with fields u, p and t (which are interlaced in the real application). I >>> want to extract B=A(u+p, u+p). *Then* I would like to extract the (u, u) >>> block from B - let us call it B_uu. >>> In fact, B_uu=A_uu but I really need to do the extraction from B. >>> And I am missing something since I have to play with different numberings >>> when switching the IS from A to B. >>> >>> Is it clear enough ???? >> >> That’s cristal clear. >> If the fields are interlaced, that’s actually easier to do, because you >> preserve the distribution, and there is less data movement. >> I’ll try to fix your code in the case where the fields are interlaced if now >> one gives you another answer in the meantime. >> >> Thanks, >> Pierre >> >>> Regards, >>> Nicolas >>> -- >>> Nicolas Tardieu >>> Ing PhD Computational Mechanics >>> EDF - R&D Dpt ERMES >>> PARIS-SACLAY, FRANCE >>> De : pie...@joliv.et <mailto:pie...@joliv.et> <pie...@joliv.et >>> <mailto:pie...@joliv.et>> >>> Envoyé : mercredi 19 octobre 2022 14:51 >>> À : TARDIEU Nicolas <nicolas.tard...@edf.fr <mailto:nicolas.tard...@edf.fr>> >>> Cc : petsc-users@mcs.anl.gov <mailto:petsc-users@mcs.anl.gov> >>> <petsc-users@mcs.anl.gov <mailto:petsc-users@mcs.anl.gov>> >>> Objet : Re: [petsc-users] Trouble with ISEmbed >>> >>> On two processes, you have a different distribution for u and u+p. >>> IS Object: 2 MPI processes >>> type: general >>> [0] Number of indices in set 5 >>> [0] 0 0 >>> [0] 1 1 >>> [0] 2 2 >>> [0] 3 3 >>> [0] 4 4 >>> [1] Number of indices in set 5 >>> [1] 0 5 >>> [1] 1 6 >>> [1] 2 7 >>> [1] 3 8 >>> [1] 4 9 >>> IS Object: 2 MPI processes >>> type: general >>> [0] Number of indices in set 8 >>> [0] 0 0 >>> [0] 1 1 >>> [0] 2 2 >>> [0] 3 3 >>> [0] 4 4 >>> [0] 5 5 >>> [0] 6 6 >>> [0] 7 7 >>> [1] Number of indices in set 7 >>> [1] 0 8 >>> [1] 1 9 >>> [1] 2 10 >>> [1] 3 11 >>> [1] 4 12 >>> [1] 5 13 >>> [1] 6 14 >>> ISEmbed() only works on local indices, so when you embed u into u+p, on the >>> second process, you miss the row/column indices 5, 6, 7 of B = A(u+p, u+p). >>> Thus, you end up with a matrix of dimension size(u) - 3 = 10 - 3 = 7, with >>> just the row/column indices 8 and 9 being selected by the second process. >>> What is it that you want to do exactly? Play with ISEmbed(), or get A(u, u) >>> without using A but B instead? >>> >>> Thanks, >>> Pierre >>> >>> > On 19 Oct 2022, at 12:00 PM, TARDIEU Nicolas via petsc-users >>> > <petsc-users@mcs.anl.gov <mailto:petsc-users@mcs.anl.gov>> wrote: >>> > >>> > Dear PETSc Team, >>> > >>> > I am trying to use IS embeding in parallel. >>> > In order to (try to) understand how it works, I have built a simple >>> > example, attached to this email. >>> > >>> > I consider a 20X20 matrix. The dof (u, p, t) in global numbering are the >>> > following : >>> > u: 0..9 p: 10..14 t: 15..19 >>> > >>> > I have defined 4 IS to describe the dof u, p, t and the agglomeration of >>> > u and p, called up. >>> > I first extract the submatrix matrix(up,up), then I would like to >>> > extract from it the (u,u) block. >>> > >>> > The example runs OK in sequential but I do not obtain the (u,u) block on >>> > 2 processes. >>> > >>> > I have a mistake in the build of the sub-IS but I cannot find it for days. >>> > >>> > Best regards, >>> > Nicolas >>> > -- >>> > Nicolas Tardieu >>> > Ing PhD Computational Mechanics >>> > EDF - R&D Dpt ERMES >>> > PARIS-SACLAY, FRANCE >>> > >>> > Ce message et toutes les pièces jointes (ci-après le 'Message') sont >>> > établis à l'intention exclusive des destinataires et les informations qui >>> > y figurent sont strictement confidentielles. Toute utilisation de ce >>> > Message non conforme à sa destination, toute diffusion ou toute >>> > publication totale ou partielle, est interdite sauf autorisation expresse. >>> > Si vous n'êtes pas le destinataire de ce Message, il vous est interdit de >>> > le copier, de le faire suivre, de le divulguer ou d'en utiliser tout ou >>> > partie. Si vous avez reçu ce Message par erreur, merci de le supprimer de >>> > votre système, ainsi que toutes ses copies, et de n'en garder aucune >>> > trace sur quelque support que ce soit. Nous vous remercions également >>> > d'en avertir immédiatement l'expéditeur par retour du message. >>> > Il est impossible de garantir que les communications par messagerie >>> > électronique arrivent en temps utile, sont sécurisées ou dénuées de toute >>> > erreur ou virus. >>> > ____________________________________________________ >>> > This message and any attachments (the 'Message') are intended solely for >>> > the addressees. The information contained in this Message is >>> > confidential. Any use of information contained in this Message not in >>> > accord with its purpose, any dissemination or disclosure, either whole or >>> > partial, is prohibited except formal approval. >>> > If you are not the addressee, you may not copy, forward, disclose or use >>> > any part of it. If you have received this message in error, please delete >>> > it and all copies from your system and notify the sender immediately by >>> > return message. >>> > E-mail communication cannot be guaranteed to be timely secure, error or >>> > virus-free. >>> > <is_pb.tgz> >>> >>> >>> Ce message et toutes les pièces jointes (ci-après le 'Message') sont >>> établis à l'intention exclusive des destinataires et les informations qui y >>> figurent sont strictement confidentielles. Toute utilisation de ce Message >>> non conforme à sa destination, toute diffusion ou toute publication totale >>> ou partielle, est interdite sauf autorisation expresse. >>> Si vous n'êtes pas le destinataire de ce Message, il vous est interdit de >>> le copier, de le faire suivre, de le divulguer ou d'en utiliser tout ou >>> partie. Si vous avez reçu ce Message par erreur, merci de le supprimer de >>> votre système, ainsi que toutes ses copies, et de n'en garder aucune trace >>> sur quelque support que ce soit. Nous vous remercions également d'en >>> avertir immédiatement l'expéditeur par retour du message. >>> Il est impossible de garantir que les communications par messagerie >>> électronique arrivent en temps utile, sont sécurisées ou dénuées de toute >>> erreur ou virus. >>> ____________________________________________________ >>> This message and any attachments (the 'Message') are intended solely for >>> the addressees. The information contained in this Message is confidential. >>> Any use of information contained in this Message not in accord with its >>> purpose, any dissemination or disclosure, either whole or partial, is >>> prohibited except formal approval. >>> If you are not the addressee, you may not copy, forward, disclose or use >>> any part of it. If you have received this message in error, please delete >>> it and all copies from your system and notify the sender immediately by >>> return message. >>> E-mail communication cannot be guaranteed to be timely secure, error or >>> virus-free. > > > Ce message et toutes les pièces jointes (ci-après le 'Message') sont établis > à l'intention exclusive des destinataires et les informations qui y figurent > sont strictement confidentielles. Toute utilisation de ce Message non > conforme à sa destination, toute diffusion ou toute publication totale ou > partielle, est interdite sauf autorisation expresse. > Si vous n'êtes pas le destinataire de ce Message, il vous est interdit de le > copier, de le faire suivre, de le divulguer ou d'en utiliser tout ou partie. > Si vous avez reçu ce Message par erreur, merci de le supprimer de votre > système, ainsi que toutes ses copies, et de n'en garder aucune trace sur > quelque support que ce soit. Nous vous remercions également d'en avertir > immédiatement l'expéditeur par retour du message. > Il est impossible de garantir que les communications par messagerie > électronique arrivent en temps utile, sont sécurisées ou dénuées de toute > erreur ou virus. > ____________________________________________________ > This message and any attachments (the 'Message') are intended solely for the > addressees. The information contained in this Message is confidential. Any > use of information contained in this Message not in accord with its purpose, > any dissemination or disclosure, either whole or partial, is prohibited > except formal approval. > If you are not the addressee, you may not copy, forward, disclose or use any > part of it. If you have received this message in error, please delete it and > all copies from your system and notify the sender immediately by return > message. > E-mail communication cannot be guaranteed to be timely secure, error or > virus-free.