[Openmp-dev] Malloc in target region

Hal Finkel via Openmp-dev openmp-dev at lists.llvm.org
Wed Jun 24 18:54:26 PDT 2020


On 6/24/20 8:41 PM, Jeff Hammond wrote:
>
>
>> On Jun 24, 2020, at 6:32 PM, Hal Finkel <hfinkel at anl.gov> wrote:
>>
>> 
>>
>>
>> On 6/24/20 7:26 PM, Jeff Hammond wrote:
>>> Does OpenMP 5 allow calling symbols that are not omp-declare-target?
>>
>>
>> I'm not sure this is relevant because the implementation gets to 
>> provide such symbols (and we depend on it doing so in other cases, 
>> such as for math.h functions).
>>
> Is LLVM OpenMP going to assume one and only C RTL? Which one?
>
> Supporting glibc, musl, as well as third party allocators like 
> tbbmalloc, jemalloc, tcmalloc, etc. may be broken by such assumptions.
>>
>>>
>>> In any case, I am concerned about malloc interception, having seen 
>>> that break many times in the past.  OpenMP isn't the only thing that 
>>> wants to intercept malloc, and nested interception may not be stable.
>>
>>
>> Why are you bringing up interception? I did not think that anything 
>> in this message implied intercepting malloc.
>>
> I was responding to the previous email where it said “Might mean 
> intercepting host libc.“


Ah, thanks. I think we should support this only in cases where we can do 
so without interception. On Linux + HMM, for example. As you point out, 
it's hard to do this in a robust way otherwise.

  -Hal


>
> Jeff
>>
>>  -Hal
>>
>>
>>>
>>> Why is omp_alloc not the best option here?  That avoids essentially 
>>> all of the issues I can think of.
>>>
>>> Jeff
>>>
>>> On Wed, Jun 24, 2020 at 11:12 AM Hal Finkel via Openmp-dev 
>>> <openmp-dev at lists.llvm.org <mailto:openmp-dev at lists.llvm.org>> wrote:
>>>
>>>     Hi, Jon,
>>>
>>>     This is a great question.
>>>
>>>     With reverse-offload support, and unified memory, we can support
>>>     a model where memory allocation triggers reverse offload to the
>>>     memory allocator on the host. In this mode, everything works as
>>>     expected. We can, of course, do some static analysis and move
>>>     allocations that don't escape to use some local allocation
>>>     scheme, such as what we use without unified memory + reverse
>>>     offload.
>>>
>>>     Without such support, I think that "One heap per device + one
>>>     for host. Each independent, pointers only valid on the thing
>>>     that called malloc." makes the most sense. This also, as far as
>>>     I know, matches what's available in CUDA today.
>>>
>>>     "One heap per target offload region" doesn't make sense to me.
>>>     One might clearly want to allocate in one target region, store
>>>     the pointers in some data structure, and then access them in
>>>     some other target region on the same device.
>>>
>>>     Thanks again,
>>>
>>>     Hal
>>>
>>>     On 6/24/20 6:40 AM, Jon Chesterfield via Openmp-dev wrote:
>>>>     Hello OpenMP,
>>>>
>>>>     Our language spec seems fairly light on what it means to call
>>>>     malloc from a target region.
>>>>
>>>>     I can think of a few interpretations:
>>>>     - One heap per process. Malloc on target or host, free from
>>>>     either. Writable from either, or some other device. Might mean
>>>>     intercepting host libc. Convenient, slow.
>>>>     - One heap per device + one for host. Each independent,
>>>>     pointers only valid on the thing that called malloc.
>>>>     - One heap per target offload region, inaccessible from host.
>>>>     - Some other granularity.
>>>>
>>>>     Generally gets faster as the restrictions increase.
>>>>
>>>>     Anyone willing to state / guess what they or their users would
>>>>     expect? Bearing in mind that new is likely to call malloc and
>>>>     will gain the same properties.
>>>>
>>>>     Thanks,
>>>>
>>>>     Jon
>>>>
>>>>
>>>>     _______________________________________________
>>>>     Openmp-dev mailing list
>>>>     Openmp-dev at lists.llvm.org  <mailto:Openmp-dev at lists.llvm.org>
>>>>     https://lists.llvm.org/cgi-bin/mailman/listinfo/openmp-dev  <https://lists.llvm.org/cgi-bin/mailman/listinfo/openmp-dev>
>>>
>>>     -- 
>>>     Hal Finkel
>>>     Lead, Compiler Technology and Programming Languages
>>>     Leadership Computing Facility
>>>     Argonne National Laboratory
>>>
>>>     _______________________________________________
>>>     Openmp-dev mailing list
>>>     Openmp-dev at lists.llvm.org <mailto:Openmp-dev at lists.llvm.org>
>>>     https://lists.llvm.org/cgi-bin/mailman/listinfo/openmp-dev
>>>     <https://lists.llvm.org/cgi-bin/mailman/listinfo/openmp-dev>
>>>
>>>
>>>
>>> -- 
>>> Jeff Hammond
>>> jeff.science at gmail.com <mailto:jeff.science at gmail.com>
>>> http://jeffhammond.github.io/ <http://jeffhammond.github.io/>
>> -- 
>> Hal Finkel
>> Lead, Compiler Technology and Programming Languages
>> Leadership Computing Facility
>> Argonne National Laboratory

-- 
Hal Finkel
Lead, Compiler Technology and Programming Languages
Leadership Computing Facility
Argonne National Laboratory

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/openmp-dev/attachments/20200624/3443f821/attachment-0001.html>


More information about the Openmp-dev mailing list