[petsc-dev] Using multiple mallocs with PETSc

Jed Brown jed at jedbrown.org
Sun Mar 12 13:16:20 CDT 2017


Implementation-defined, but it's exactly the same as malloc, which also doesn't promise unfaulted pages. This is one reason some of us keep saying that OpenMP sucks. It's a shitty standard that obstructs better standards from being created.

On March 12, 2017 11:19:49 AM MDT, Jeff Hammond <jeff.science at gmail.com> wrote:
>On Sat, Mar 11, 2017 at 9:00 AM Jed Brown <jed at jedbrown.org> wrote:
>
>> Jeff Hammond <jeff.science at gmail.com> writes:
>> > I agree 100% that multithreaded codes that fault pages from the
>main
>> thread in a NUMA environment are doing something wrong ;-)
>> >
>> > Does calloc *guarantee* pages are not mapped? If I calloc(8), do I
>get
>> the zero page or part of the arena that's already mapped that is
>zeroed by
>> the heap manager?
>>
>> Is your argument that calloc() should never be used in multi-threaded
>code?
>>
>
>I never use it for code that I want to behave well in a NUMA
>environment.
>
>
>> If the allocation is larger than MMAP_THRESHOLD (128 KiB by default
>for
>> glibc) then it calls mmap.  This obviously leaves an intermediate
>size
>> that could be poorly mapped (assuming 4 KiB pages), but it's also so
>> small that it easily fits in cache.
>
>
>Is this behavior standardized or merely implementation-defined? I'm not
>interested in writing code that assumes Linux/glibc.
>
>Jeff
>
>>
>> --
>Jeff Hammond
>jeff.science at gmail.com
>http://jeffhammond.github.io/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20170312/485cceec/attachment.html>


More information about the petsc-dev mailing list