<feed xmlns='http://www.w3.org/2005/Atom'>
<title>llvm-project.git/offload/libomptarget, branch main</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.
</subtitle>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/'/>
<entry>
<title>[OFFLOAD] Add support for more fine grained debug messages control (#165416)</title>
<updated>2025-11-20T17:39:56+00:00</updated>
<author>
<name>Alex Duran</name>
<email>alejandro.duran@intel.com</email>
</author>
<published>2025-11-20T17:39:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=66ddc9b3e7e22a0c2464c54d96bc30c53ab9cbd1'/>
<id>66ddc9b3e7e22a0c2464c54d96bc30c53ab9cbd1</id>
<content type='text'>
This PR introduces new debug macros that allow a more fined control of
which debug message to output and introduce C++ stream style for debug
messages.

Changing existing messages (except a few that I changed for testing)
will come in subsequent PRs.

I also think that we should make debug enabling OpenMP agnostic but, for
now, I prioritized maintaing the current libomptarget behavior for now,
and we might need more changes further down the line as we we decouple
libomptarget.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This PR introduces new debug macros that allow a more fined control of
which debug message to output and introduce C++ stream style for debug
messages.

Changing existing messages (except a few that I changed for testing)
will come in subsequent PRs.

I also think that we should make debug enabling OpenMP agnostic but, for
now, I prioritized maintaing the current libomptarget behavior for now,
and we might need more changes further down the line as we we decouple
libomptarget.</pre>
</div>
</content>
</entry>
<entry>
<title>Revert "[OpenMP] Implement omp_get_uid_from_device() / omp_get_device_from_uid()" (#168547)</title>
<updated>2025-11-18T15:10:42+00:00</updated>
<author>
<name>Robert Imschweiler</name>
<email>robert.imschweiler@amd.com</email>
</author>
<published>2025-11-18T15:10:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=9a0fd22da1013281d6269f19facc5d5c1be58904'/>
<id>9a0fd22da1013281d6269f19facc5d5c1be58904</id>
<content type='text'>
Reverts llvm/llvm-project#164392 due to fortran issues</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Reverts llvm/llvm-project#164392 due to fortran issues</pre>
</div>
</content>
</entry>
<entry>
<title>[OpenMP] Implement omp_get_uid_from_device() / omp_get_device_from_uid() (#164392)</title>
<updated>2025-11-18T14:22:49+00:00</updated>
<author>
<name>Robert Imschweiler</name>
<email>robert.imschweiler@amd.com</email>
</author>
<published>2025-11-18T14:22:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=65c4a534bd55ed56962fb99c36f464b3f1c9732f'/>
<id>65c4a534bd55ed56962fb99c36f464b3f1c9732f</id>
<content type='text'>
Use the implementation in libomptarget. If libomptarget is not
available, always return the UID / device number of the host / the
initial device.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Use the implementation in libomptarget. If libomptarget is not
available, always return the UID / device number of the host / the
initial device.</pre>
</div>
</content>
</entry>
<entry>
<title>[OFFLOAD] Remove weak from __kmpc_* calls and gather them in one header (#164613)</title>
<updated>2025-10-24T13:42:20+00:00</updated>
<author>
<name>Alex Duran</name>
<email>alejandro.duran@intel.com</email>
</author>
<published>2025-10-24T13:42:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=426d1fe548b6d10994862e309c169831fbba4c35'/>
<id>426d1fe548b6d10994862e309c169831fbba4c35</id>
<content type='text'>
Follow-up from #162652

---------

Co-authored-by: Michael Klemm &lt;michael.klemm@amd.com&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Follow-up from #162652

---------

Co-authored-by: Michael Klemm &lt;michael.klemm@amd.com&gt;</pre>
</div>
</content>
</entry>
<entry>
<title>[OpenMP] Adds omp_target_is_accessible routine (#138294)</title>
<updated>2025-10-22T15:35:16+00:00</updated>
<author>
<name>Nicole Aschenbrenner</name>
<email>nicole.aschenbrenner@amd.com</email>
</author>
<published>2025-10-22T15:35:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=16641ad8a29b6c877a3f934cd61d6acc9719e87e'/>
<id>16641ad8a29b6c877a3f934cd61d6acc9719e87e</id>
<content type='text'>
Adds omp_target_is_accessible routine.
Refactors common code from omp_target_is_present to work for both
routines.

---------

Co-authored-by: Shilei Tian &lt;i@tianshilei.me&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Adds omp_target_is_accessible routine.
Refactors common code from omp_target_is_present to work for both
routines.

---------

Co-authored-by: Shilei Tian &lt;i@tianshilei.me&gt;</pre>
</div>
</content>
</entry>
<entry>
<title>[OFFLOAD] Interop fixes for Windows (#162652)</title>
<updated>2025-10-17T09:07:31+00:00</updated>
<author>
<name>Alex Duran</name>
<email>alejandro.duran@intel.com</email>
</author>
<published>2025-10-17T09:07:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=9ba54ca3eea3a050d96cc88a76e73577d190aae6'/>
<id>9ba54ca3eea3a050d96cc88a76e73577d190aae6</id>
<content type='text'>
On Windows, for a reason I don't fully understand boolean bits get extra
padding (even when asking for packed structures) in the structures that
messes the offsets between the compiler and the runtime.

Also, "weak" works differently on Windows than Linux (i.e., the "local"
routine has preference) which causes it to crash as we don't really have
an alternate implementation of __kmpc_omp_wait_deps. Given this, it
doesn't make sense to mark it as "weak" for Linux either.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
On Windows, for a reason I don't fully understand boolean bits get extra
padding (even when asking for packed structures) in the structures that
messes the offsets between the compiler and the runtime.

Also, "weak" works differently on Windows than Linux (i.e., the "local"
routine has preference) which causes it to crash as we don't really have
an alternate implementation of __kmpc_omp_wait_deps. Given this, it
doesn't make sense to mark it as "weak" for Linux either.</pre>
</div>
</content>
</entry>
<entry>
<title>[Offload] Silence warning via maybe unused (NFC) (#163076)</title>
<updated>2025-10-12T15:28:46+00:00</updated>
<author>
<name>Jan Patrick Lehr</name>
<email>JanPatrick.Lehr@amd.com</email>
</author>
<published>2025-10-12T15:28:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=6eef045365d825a7bdbd2bb89a61fa603fdcc7ea'/>
<id>6eef045365d825a7bdbd2bb89a61fa603fdcc7ea</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>[OFFLOAD] Restore interop functionality (#161429)</title>
<updated>2025-10-02T19:48:31+00:00</updated>
<author>
<name>Alex Duran</name>
<email>alejandro.duran@intel.com</email>
</author>
<published>2025-10-02T19:48:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=902fe02e8722b8f51cb3897226c97fbff353c890'/>
<id>902fe02e8722b8f51cb3897226c97fbff353c890</id>
<content type='text'>
This implements two pieces to restore the interop functionality (that I
broke) when the 6.0 interfaces were added:

* A set of wrappers that support the old interfaces on top of the new
ones
* The same level of interop support for the CUDA amd AMD plugins</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This implements two pieces to restore the interop functionality (that I
broke) when the 6.0 interfaces were added:

* A set of wrappers that support the old interfaces on top of the new
ones
* The same level of interop support for the CUDA amd AMD plugins</pre>
</div>
</content>
</entry>
<entry>
<title>[OpenMP][Offload] Support `PRIVATE | ATTACH` maps for corresponding-pointer-initialization. (#160760)</title>
<updated>2025-09-29T18:47:21+00:00</updated>
<author>
<name>Abhinav Gaba</name>
<email>abhinav.gaba@intel.com</email>
</author>
<published>2025-09-29T18:47:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=7de73c4e9d5ee1ec00bb57427ac04746ce858c3c'/>
<id>7de73c4e9d5ee1ec00bb57427ac04746ce858c3c</id>
<content type='text'>
`PRIVATE | ATTACH` maps can be used to represent firstprivate pointers
that should be initialized by doing doing the pointee's device address,
if its lookup succeeds, or retain the original host pointee's address
otherwise.

With this, for a test like the following:

  ```f90
  integer, pointer :: p(:)
  !$omp target map(p(1))
  ... print*, p(1)
  !$omp end target
  ```

The codegen can look like:
  ```llvm
   ; maps for p:
   ; &amp;p(1),       &amp;p(1), sizeof(p(1)),       TO|FROM              //(1)
   ; &amp;ref_ptr(p), &amp;p(1), sizeof(ref_ptr(p)), ATTACH               //(2)
   ; &amp;ref_ptr(p), &amp;p(1), sizeof(ref_ptr(p)), PRIVATE|ATTACH|PARAM //(3)
   call... @__omp_outlined...(ptr %ref_ptr_of_p)
  ```

* `(1)` maps the pointee `p(1)`.
* `(2)` attaches it to the (previously) mapped `ref_ptr(p)`, if present.
  It can be controlled via OpenMP 6.1's `attach(auto/always/never)`
  map-type modifiers.
* `(3)` privatizes and initializes the local `ref_ptr(p)`, which gets
passed
  in as the kernel argument `%ref_ptr_of_p`. Can be skipped if p is not
  referenced directly within the region.

While similar mapping can be used for C/C++, it's more important/useful
for Fortran as we can avoid creating another argument for passing the
descriptor, and use that to initialize the private copy in the body of
the kernel.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
`PRIVATE | ATTACH` maps can be used to represent firstprivate pointers
that should be initialized by doing doing the pointee's device address,
if its lookup succeeds, or retain the original host pointee's address
otherwise.

With this, for a test like the following:

  ```f90
  integer, pointer :: p(:)
  !$omp target map(p(1))
  ... print*, p(1)
  !$omp end target
  ```

The codegen can look like:
  ```llvm
   ; maps for p:
   ; &amp;p(1),       &amp;p(1), sizeof(p(1)),       TO|FROM              //(1)
   ; &amp;ref_ptr(p), &amp;p(1), sizeof(ref_ptr(p)), ATTACH               //(2)
   ; &amp;ref_ptr(p), &amp;p(1), sizeof(ref_ptr(p)), PRIVATE|ATTACH|PARAM //(3)
   call... @__omp_outlined...(ptr %ref_ptr_of_p)
  ```

* `(1)` maps the pointee `p(1)`.
* `(2)` attaches it to the (previously) mapped `ref_ptr(p)`, if present.
  It can be controlled via OpenMP 6.1's `attach(auto/always/never)`
  map-type modifiers.
* `(3)` privatizes and initializes the local `ref_ptr(p)`, which gets
passed
  in as the kernel argument `%ref_ptr_of_p`. Can be skipped if p is not
  referenced directly within the region.

While similar mapping can be used for C/C++, it's more important/useful
for Fortran as we can avoid creating another argument for passing the
descriptor, and use that to initialize the private copy in the body of
the kernel.</pre>
</div>
</content>
</entry>
<entry>
<title>[Offload]  Implement 'olIsValidBinary' in offload and clean up (#159658)</title>
<updated>2025-09-19T17:15:57+00:00</updated>
<author>
<name>Joseph Huber</name>
<email>huberjn@outlook.com</email>
</author>
<published>2025-09-19T17:15:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=51e3c3d51ba8064c7dafd57bf19e2a54b553af03'/>
<id>51e3c3d51ba8064c7dafd57bf19e2a54b553af03</id>
<content type='text'>
Summary:
This exposes the 'isDeviceCompatible' routine for checking if a binary
*can* be loaded. This is useful if people don't want to consume errors
everywhere when figuring out which image to put to what device.

I don't know if this is a good name, I was thining like `olIsCompatible`
or whatever. Let me know what you think.

Long term I'd like to be able to do something similar to what OpenMP
does where we can conditionally only initialize devices if we need them.
That's going to be support needed if we want this to be more
generic.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Summary:
This exposes the 'isDeviceCompatible' routine for checking if a binary
*can* be loaded. This is useful if people don't want to consume errors
everywhere when figuring out which image to put to what device.

I don't know if this is a good name, I was thining like `olIsCompatible`
or whatever. Let me know what you think.

Long term I'd like to be able to do something similar to what OpenMP
does where we can conditionally only initialize devices if we need them.
That's going to be support needed if we want this to be more
generic.</pre>
</div>
</content>
</entry>
</feed>
