[petsc-dev] Using multiple mallocs with PETSc
Barry Smith
bsmith at mcs.anl.gov
Mon Mar 13 13:15:13 CDT 2017
> On Mar 11, 2017, at 2:36 PM, Jed Brown <jed at jedbrown.org> wrote:
>
> Barry Smith <bsmith at mcs.anl.gov> writes:
>
>>> I think it's accurate in the sense that the performance of real
>>> applications using a page migration system will be sufficiently close to
>>> the best manual page mapping strategy that nobody should bother with the
>>> manual system.
>>
>> Will such a page migration system ever exist, is Intel working hard
>> on it for KNL? What if no one provides such a page migration
>> system? Should we just wait around until they do (which they won't)
>> and do nothing else instead? Or will we have to do a half-assed
>> hacky thing to work around the lack of the mythical decent page
>> migration system?
>
> Libnuma has move_pages. Prior to release, Intel refused to confirm that
> MCDRAM would be shown to the OS as a normal numa node, such that
> move_pages would work, and sometimes suggesting that it would not. Some
> of the email history is me being incredulous this state before learning
> that the obvious implementation that I preferred was in fact what they
> did.
>
> Anyway, this means PETSc can track usage and call move_pages itself to
> migrate hot pages into MCDRAM.
>
> I don't know if Intel or Linux kernel people are going to tweak the
> existing automatic page migration to do this transparently, but we
> probably shouldn't hold our breath.
>
>>> In cache mode, accessing infrequently-used memory (like TS trajectory)
>>> evicts memory that you will use again soon.
>>
>> What if you could advise the malloc system that this chunk of
>> memory should not be cached? Though this appears to be impossible
>> by design?
>
> Malloc has nothing to do with cache, and I don't think the hardware has
> an interface that would allow the kernel to set policy at this
> granularity.
Intel does seem to have some load/store commands that allow? by-passing cache. How one could access these commands in any reasonable way I don't have a clue. And yes I would like to access them based on the memory locations I am loading/storing. So yes though malloc has nothing to do with cache, it is a madvise() "type" thing in that I'd like certain memory treated with different load/store.
More information about the petsc-dev
mailing list