[petsc-users] [petsc-maint] metis version of petsc - segmentation fault
Matthew Knepley
knepley at gmail.com
Thu Aug 25 12:31:03 CDT 2022
On Thu, Aug 25, 2022 at 1:08 PM Matthew Knepley <knepley at gmail.com> wrote:
> On Thu, Aug 25, 2022 at 12:38 PM Alexandre Halbach <
> alexandre.halbach at gmail.com> wrote:
>
>> Hello,
>>
>> I am using the metis package provided by the latest petsc version, using
>> --download-metis (Linux, 32 bits). This question is arguably more a metis
>> issue but since metis is used in petsc and mumps this seems relevant to ask
>> here too.
>>
>> I systematically get a segmentation fault on this metis version (didn't
>> try others) when I partition even simple and not too large graphs ( O(5
>> millions)). I tried a lot of cases as well as both the 32 and 64 bits
>> version of petsc and also increasing ulimit (on Linux).
>> Here is the shortest possible representative example with that problem
>> (c++). I double checked it and I hope there is no mistake in this example.
>> The below example constructs the containers for a 1D line graph (n
>> vertices connected by edges one by one as in a chain. Both end vertices
>> only have a single neighbor while all other vertices have two neighbors).
>> Either this is something I am doing wrong or there is a bug in at least
>> the metis version proposed in petsc.
>>
>> Here is the example producing a segfault. If you don't get a segfault try
>> a 10 millions or more vertices graph.
>>
>
> You are exceeding the stack space. I will rewrite to malloc() and take a
> look.
>
I do not SEGV with the attached code.
Thanks,
Matt
> Thanks,
>
> Matt
>
>
>> Thank you for your help and your great work!
>>
>> Alex
>>
>>
>> #include "metis.h"
>>
>> int main(void)
>> {
>> // Number of vertices:
>> int n = 1000000;
>> // Addresses should for example be [0 1 3 5 7 8] for 5 vertices
>> idx_t addresses[n+1];
>> addresses[0] = 0; addresses[1] = 1;
>> for (int i = 2; i < n; i++)
>> addresses[i] = addresses[i-1] + 2;
>> addresses[n] = addresses[n-1]+1;
>>
>> // Connected vertices should for example be [1 0 2 1 3 2 4 3] for 5
>> vertices
>> idx_t connectivities[2*(n-1)];
>> connectivities[0] = 1;
>> for (int i = 1; i < n-1; i++)
>> {
>> connectivities[2*i-1] = i-1;
>> connectivities[2*i+0] = i+1;
>> }
>> connectivities[2*(n-1)-1] = connectivities[2*(n-1)-2]-1;
>>
>> idx_t nvtxs = n;
>> idx_t nEdges = n-1;
>>
>> idx_t metisOptions[METIS_NOPTIONS];
>> METIS_SetDefaultOptions(metisOptions);
>> metisOptions[METIS_OPTION_NUMBERING] = 0; // c numbering (start at 0)
>>
>> idx_t ncon = 1;
>> idx_t nParts = 2;
>> idx_t objval;
>> idx_t part[nvtxs];
>>
>> int ret = METIS_PartGraphRecursive ( &nvtxs, &ncon, addresses,
>> connectivities, NULL, NULL, NULL, &nParts, NULL, NULL, metisOptions,
>> &objval, part );
>> }
>>
>
>
> --
> 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
>
> https://www.cse.buffalo.edu/~knepley/
> <http://www.cse.buffalo.edu/~knepley/>
>
--
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
https://www.cse.buffalo.edu/~knepley/ <http://www.cse.buffalo.edu/~knepley/>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20220825/743ed8d4/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: tester.c
Type: application/octet-stream
Size: 1479 bytes
Desc: not available
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20220825/743ed8d4/attachment-0001.obj>
More information about the petsc-users
mailing list