Skip to content

update rocprofiler-sdk (v3) and roctracer (v1)#473

Merged
i-chaochen merged 6 commits into
rocm-jaxlib-v0.8.0from
ci_cj_rocprofv3_v1_rocm-jaxlib-v0.8.0
Dec 10, 2025
Merged

update rocprofiler-sdk (v3) and roctracer (v1)#473
i-chaochen merged 6 commits into
rocm-jaxlib-v0.8.0from
ci_cj_rocprofv3_v1_rocm-jaxlib-v0.8.0

Conversation

@cj401-amd
Copy link
Copy Markdown

@cj401-amd cj401-amd commented Dec 5, 2025

Motivation

backport rocprofiler-sdk (v3) and roctracer (v1) to v0.8.0

Technical Details

  • support both v3 and v1, building to use v1 as profiling backend is via --bazel_options="--define=xla_rocm_profiler=v1"
  • support adjusting the maximum number of trace event, via export XLA_FLAGS="--xla_gpu_rocm_max_trace_events=30000000" , default to 4M
  • support tracing hipGraphLaunch , export export XLA_FLAGS="--xla_gpu_graph_min_graph_size=1" (--xla_gpu_graph_level has been retired now)

no kernel details in the trace file to be fixed.

@Eetusjo
Copy link
Copy Markdown

Eetusjo commented Dec 8, 2025

I created a PR to fix the missing buffer flush in upstream: openxla#34956. @cj401-amd I think you could pick that commit here so the fix gets merged at the same time.

Comment thread xla/backends/profiler/gpu/device_tracer_rocm.cc Outdated
Comment thread xla/backends/profiler/gpu/rocm_collector.h Outdated
Comment thread xla/backends/profiler/gpu/rocm_profiler_sdk.cc
Comment thread xla/backends/profiler/gpu/rocm_collector.cc Outdated
Comment thread xla/backends/profiler/gpu/rocm_collector.cc Outdated
Comment thread xla/backends/profiler/gpu/rocm_collector.cc Outdated
Comment thread xla/backends/profiler/gpu/rocm_collector.cc
Comment thread xla/backends/profiler/gpu/rocm_collector.cc Outdated
Comment thread xla/backends/profiler/gpu/rocm_collector.cc Outdated
Comment thread xla/backends/profiler/gpu/rocm_profiler_sdk.cc
Comment thread xla/backends/profiler/gpu/rocm_profiler_sdk.cc Outdated
Comment thread xla/backends/profiler/gpu/rocm_profiler_sdk.cc Outdated

PerDeviceCollector() = default;

void AddEvent(RocmTracerEvent&& event);
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this should be
void AddEvent(RocmTracerEvent event)

it shall not restrict the user to move objects in?
You do call it as AddEvent(std::move(obj)); if you want to.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what's the point of copying the object if it could just be moved from the source? (I don't know if it's could be moved from there, so I'm genuinely asking)

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You will not be copying it, but what will you do is decided by the user of that api.
if you use std::move() to pass the argument it will be moved, if not it will be copied.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Well.... that depends on how expensive the move is (might be, though typically not), and if the move operation is defined the first hand for the type. Passing by rvalue ref guarantees you'll have at most one copy (upon attempting to move the object into destination) in the worst case.

Can you explain what do you think is wrong with passing as rvalue ref?

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Assume you have an object you want to add into that collection but you also want to use it later on. You just can't do that with this api. With a different api you can remote std::move and do it!

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"And what could you do with the object after you've added a copy of it into a collection? If you're interested in querying its properties only (a.k.a. const this access), they couldn't this function just return a const reference to the object added into the collection?"
You can add it so some other container, copy it, modify it whatever. It is about the interface design and code readability.
In this particular case maybe we don't do so but why do we make our interface more complex than it should be? Why interface has to have a move semantics on it?

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Did you notice you have suddenly fully changed reasons to amend this?

And I fully disagree with the new rationale... There's just nothing wrong with Type&& argument, it's a perfectly normal C++. Did you ever read high-performance code? You must always think of even tiniest moves there, it's riddled with move semantic for that reason. I totally can't buy the "simplicity and readability" argument, especially given that I absolutely can't expect people using std::move(event) to prevent copying. This rarely happens even with very experienced people, most just never cares, so it's good to write code the way it just won't happen. For those who want something different - function overloads can handle this nicely.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why interface has to have a move semantics on it?

Because it's trivially simple standard C++?

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I didn't change it. I just say you can have the same functionality without &&. Now regarding high performant code I would say you first measure then optimize, in the end we shall write a code which is easy to be understood by people! https://wiki.c2.com/?PrematureOptimization.
Regarding the move this is exactly what move is made for! You explicitly say I want to move this object I don't have intend to use it later on! If you don't do that someone reading the code will say ah this object was passed in (not moved) I expect it
to be used later on. But if it is not you will confuse the reader!

Copy link
Copy Markdown

@Arech8 Arech8 Dec 8, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I didn't change it.

You did. At first your argument was about an imaginary use of the function, that didn't occur yet (please note, this is what is actually called a "premature optimization", not the intent to clearly express operation semantic as the author did), then you made an argument about imaginary "readability and complexity". Maybe you covertly meant the second when was taking about the first, I don't know that, but these are totally different arguments that have nothing in common.

I just say you can have the same functionality without &&.

No, you can't. Functionality and the semantic of the operation will be different. That's why this syntactic sugar was introduced, btw...

Now regarding high performant code I would say you first measure then optimize,

Excuse me, but from that I only see that you've never tried to optimize a large bulk of badly designed code. It's very tricky to do efficiently in a limited time frame largely because of exactly such well hidden and quickly compounding costs. Inability to properly express an operation semantic, especially when the language permits it, - it a primary hall mark of a bad code.

in the end we shall write a code which is easy to be understood by people!

Which people? This is C++ project and the author used a concept that existed all the time compute programming exists, wrapped in a semantic sugar that is standardized for almost a decade and a half. We have all the rights to expect that minimally qualified people work with the code base, not just random people from a street.

Regarding the move this is exactly what move is made for! You explicitly say I want to move this object I don't have intend to use it later on! If you don't do that someone reading the code will say ah this object was passed in (not moved) I expect it to be used later on. But if it is not you will confuse the reader!

Now, that's right! That's exactly why rvalue reference is used here! You have no way to directly call this function with lvalue, you must use either std::move() or a type cast. Isn't?

class Type;
void foo(Type&& v);

Type v;
foo(v); // error: no matching function for call to `foo`, candidate function not viable: expects an rvalue for 1st argument

And btw, speaking of API - if you want to use the object passed as an argument later, you can just manually create a copy:

foo(Type(v));  // OK, creates a temporary object by copying v, making a hidden copy explicitly visible.

Alex, I see that you just aren't familiar with rvalue references (or C++ value categories in general) and move semantic. This is fine - nobody can know everything. But I'm concerned that instead of seeing this as an opportunity for learning, you seems to become hostile to the idea and invent reasons why this should not be used.

Look, rvalue references are very simple and in the context used here they even more simpler: it's just a normal reference, which on top says "I may take an ownership of this object, so you can forget about it". It's a clean and neat way to declare "hey there, this function efficiently accepts the parameter by reference (hence no, literally no runtime costs), but may steal the value of the parameter, so you can't use it afterwards.". This is light years better than "yeah, my function does the same as above, but now you MUST explicitly care about ensuring the object you don't need anymore won't be copied, and even in that case you MUST pay a runtime price for that"...

I know C++ value categories and move semantic might be confusing, so please reach me anytime, I'll be happy to help.

EDIT: clarified "it" -> "the idea", so I'm not sounding like I was offended or something. It's totally fine to not like an idea and we're only discussing ideas here.

Comment thread xla/backends/profiler/gpu/rocm_profiler_sdk.cc Outdated
Comment thread xla/backends/profiler/gpu/rocm_profiler_sdk.cc Outdated
Comment thread xla/backends/profiler/gpu/rocm_profiler_sdk.cc
@Arech8
Copy link
Copy Markdown

Arech8 commented Dec 8, 2025

@cj401-amd , I'm sorry, I haven't finished and I'm way over my distraction budget, so I have to work on my own tasks for today... Please blink twice )) if you want me to continue reviewing; I could proceed later...

Copy link
Copy Markdown
Collaborator

@i-chaochen i-chaochen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since most of stuff are similar to existing one from 0.7.1, LGTM to merge and unblock 0.8.0 release.

But, please share your smoke testing on profiling here https://github.com/ROCm/frameworks-internal/issues/12277

In addition, please address @Arech8 comments before we proceed.

@i-chaochen
Copy link
Copy Markdown
Collaborator

BTW @cj401-amd does this PR include Eetu's changes openxla#34956 ?

@cj401-amd
Copy link
Copy Markdown
Author

BTW @cj401-amd does this PR include Eetu's changes openxla#34956 ?

it will be included. only a change of one line.

@cj401-amd cj401-amd force-pushed the ci_cj_rocprofv3_v1_rocm-jaxlib-v0.8.0 branch from 9490fe3 to 4a1b222 Compare December 9, 2025 17:53
@i-chaochen i-chaochen merged commit d790f9a into rocm-jaxlib-v0.8.0 Dec 10, 2025
12 checks passed
mminutoli pushed a commit that referenced this pull request Jan 6, 2026
* update rocprofiler-sdk (v3) and roctracer (v1) for 0.8.0

* update for skip_rocprofiler_sdk

* update for the fixing asan check

* fix to show kernel details in trace file

* Refine rocprofiler-sdk (v3) integration based on Arech8's comments along with rocprofiler_flush_buffer explicitly

* update rocprofiler-sdk based on comments
mminutoli pushed a commit that referenced this pull request Jan 7, 2026
* update rocprofiler-sdk (v3) and roctracer (v1) for 0.8.0

* update for skip_rocprofiler_sdk

* update for the fixing asan check

* fix to show kernel details in trace file

* Refine rocprofiler-sdk (v3) integration based on Arech8's comments along with rocprofiler_flush_buffer explicitly

* update rocprofiler-sdk based on comments
hsharsha added a commit that referenced this pull request Jan 16, 2026
* Fix AMD GPU alloca address space errors (#433)

* Fix AMD GPU alloca address space errors

AMD GPUs require stack allocations (alloca instructions) to be in
address space 5 (private/local memory), not address space 0 (generic
memory)

* Optimize AMDGPU allocas by keeping AS5 pointers throughout

* Fix AMDGPU allocas to use address space 5 in MLIR lowering

* [AIXLA-171] Jaxlib 0.8.0 requried backports (#437)

* Rocm jaxlib v0.5.0 warpsize global (#177)

* cherry-picked warp size passing to triton calls, and globally enabled warpsize=64

* Fix.

---------

Co-authored-by: Pavel Emeliyanenko <[email protected]>
(cherry picked from commit f013645)

* Added support for waves_per_eu function attribute. (#181)

(cherry picked from commit bc1d816)

* Add MIOPEN_FIND_ENFORCE For ROCm 7 for convolution gemms (#312)

* Add MIOPEN_FIND_ENFORCE For ROCm 7 for convolution gemms

* Exclude failing CollectiveOpsE2E tests

* Make device_count_ atomic (#343)

* Make device_count_ atomic

* Use relaxed memory order

* Fix build error

* added rocm7 support to EnablePeerAccess (#347)

* added rocm7 support to EnablePeerAccess

* use wrap namespace, clang-format and add comments

* [ROCm] Disable Cudnn fusions (#358)

* Get CI green

* Triton fixes porting from v0.6.0 (#389)

* rocprof-sdk addition,
upstream PR: openxla/pull/29769

Squash following commits..
Update rocprofiler-sdk (v3) along with roctracer (v1) for rocm-jaxlib-v0.6.0 (#302)

* update for integration of rocprofiler-sdk (along with roctracer as a backup based on bazel_options from CLI)

(cherry picked from commit 7775dd0)

use VLOG(2) to replace LOG(INFO), so PGLE has no verbose info (#357)

(cherry picked from commit 5950125)

update with kernel details for rocm-7.x (#364)

* update with kernel details for rocm-7.x

(cherry picked from commit 5597c0d)

update to remove previously hard-coded rocprofiler-sdk path (#369)

* update to remove previously hard-coded rocprofiler-sdk path and add skip_rocprofiler_sdk to avoid loading `rocprofiler-sdk`

(cherry picked from commit ff74b5f)

* fixed buffer comparator test

* misc fixes ported from rocm-jaxlib-v0.6.0

---------

Co-authored-by: Pavel Emeliyanenko <[email protected]>
(cherry picked from commit f013645)
(cherry picked from commit b03cd94)

Added support for waves_per_eu function attribute. (#181)

(cherry picked from commit bc1d816)
(cherry picked from commit d3f94e9)

removed two line change (revert of half of the openxla#25959 commit

(cherry picked from commit 109e138)

Fixes for jax 0.6.0 (#207)

* Add fixes for jax plugin 0.6.0

Drop NEEDED linking to unnecessary libs.
These are loaded by amdhipruntime and not us.

Fix missing NEEDED on MIOpen shared object.

* Minor rocblas related changes for rocm 70

(cherry picked from commit 0de7d49)

---------

Co-authored-by: Zoran Jovanovic <[email protected]>
(cherry picked from commit 28f10a0)

Add hipBLASLt support for gfx11. (#301)

(cherry picked from commit f814bff)

Add bf16 starting from gfx11, bugfix & optimize RocmComputeCapability (#303)

* Bugfix and improve device_description.h::RocmComputeCompatibility

* Enable ALG_DOT_BF16* on rocm with HW support

(cherry picked from commit 510ea06)

[ROCm] Use bundled bitcode files (#196)

Also trim bitcode file list to ockl.bc and ocml.bc only.

(cherry picked from commit fc9e3c3)

Add MIOPEN_FIND_ENFORCE For ROCm 7 for convolution gemms (#312)

* Add MIOPEN_FIND_ENFORCE For ROCm 7 for convolution gemms

* Exclude failing CollectiveOpsE2E tests

(cherry picked from commit fb6ddfb)

Restore RocmComputeCapability:: gfx11_rx7900() and gfx12_rx8900() methods (#333)

At least gfx11_rx7900() is still needed for TF build.

(cherry picked from commit 13c3de1)

Make device_count_ atomic (#343)

* Make device_count_ atomic

* Use relaxed memory order

* Fix build error

(cherry picked from commit 8513f2d)

fix hardcoded max registers (#345)

(cherry picked from commit f3e170a)

fix hardcoded ecc enabled (#348)

(cherry picked from commit 9cfa74a)

remove reserved memory (#349)

(cherry picked from commit 0015d0e)

Add rocm_dev config for remote caching (#353)

(cherry picked from commit c815420)

added rocm7 support to EnablePeerAccess (#347)

* added rocm7 support to EnablePeerAccess

* use wrap namespace, clang-format and add comments

(cherry picked from commit 85548a7)

[ROCm] Disable Cudnn fusions (#358)

(cherry picked from commit edab8b2)

* Ported all triton related changes from v0.6.0 to v0.7.1

(cherry picked from commit 1851bcc)

Disable softmax triton fusion if triton gemm is off (#281)

* Disable softmax rewriter triton if triton gemm is disabled

* Add specific flag to enable triton softmax fusion

* Address review comments

(cherry picked from commit 51a7f4b)

[ROCm][Triton] Disable transposed load in certain conditions

(cherry picked from commit 50860e9)

Enable unit tests that pass after fixing some Triton related issues. (#285)

* Enable unit tests that pass after fixing some Triton related issues.

* fusion_emitter_device_legacy_test still fails on MI200

(cherry picked from commit 97dd565)

Rocm jaxlib v0.6.0 triton support ut (#279)

* Fixed triton/support_test - no fmfa.

* Fix issue with rounding mode in accelerate amd matmul.

* Fixed issues with usage of mfma in support_test.

(cherry picked from commit 44f7d87)

Restore gpu_triton_custom_call_test (#262)

(cherry picked from commit 32eafa4)

Skipped CanNotEmitTritonCustomCallOnPreAmpereGpu test for ROCM.

(cherry picked from commit 56ec7ec)
(cherry picked from commit b1f3e9f)

fixed createTritonAMDGPULowerInstructionSchedHintsPass (#179)

(cherry picked from commit 8517a3a)
(cherry picked from commit c62e47d)

fixed bazel build issue

---------

Co-authored-by: Chunyu Jin <[email protected]>
Co-authored-by: zoranjovanovic-ns <[email protected]>
Co-authored-by: Alex <[email protected]>

* Fix asan error reported when running set_dimension_size_test under rocm

* PR openxla#33909: [ROCm] Make multi gpu tests exclusive if executed locally

Imported from GitHub PR openxla#33909

📝 Summary of Changes
Make multigpu tests being executed exclusively.

🎯 Justification
Multigpu tests have to run exclusively to not clash the utilization of gpus in parallel.
This PR marks multigpu tests as such by adding 'multi_gpu' tag, and in case of rocm
make them run exclusively if executed locally.

🚀 Kind of Contribution
Please remove what does not apply:  ♻️ Cleanup

📊 Benchmark (for Performance Improvements)
Not relevant, no logic change

🧪 Unit Tests:
Not relevant, no logic change

🧪 Execution Tests:
Not relevant, no logic change

Copybara import of the project:

--
7e84a78 by Alexandros Theodoridis <[email protected]>:

Mark multigpu tests as such, make them exclusive if executed locally

--
23fc24c by Alexandros Theodoridis <[email protected]>:

Remove invalid multi_gpu tag from cpu tests

--
a2a35de by Alexandros Theodoridis <[email protected]>:

Restore build_config not exposing has_tag

--
babe5c7 by Alexandros Theodoridis <[email protected]>:

Unmark test which is not multigpu

--
3e30cf6 by Alexandros Theodoridis <[email protected]>:

Add missing tag documentation

Merging this change closes openxla#33909

COPYBARA_INTEGRATE_REVIEW=openxla#33909 from ROCm:ci_make_multi_gpu_tests_execute_sequentially_when_locally_but_not_in_rbe 3e30cf6
PiperOrigin-RevId: 836288457

* Cleanup nccl communicator shared memory files

* Add missing parallel_gpu_execute target

* Fix ci build command, push args to the end

* Use upstream version of ci run script

* Add cuda-only tag to cuda_test target

* Add noasan notsan filters

* Fix buildifier error

---------

Co-authored-by: zoranjovanovic-ns <[email protected]>
Co-authored-by: Pavel Emeliyanenko <[email protected]>
Co-authored-by: Alex <[email protected]>
Co-authored-by: spiao <[email protected]>
Co-authored-by: Dragan Mladjenovic <[email protected]>
Co-authored-by: Harsha HS <[email protected]>
Co-authored-by: Zahid Iqbal <[email protected]>
Co-authored-by: Chunyu Jin <[email protected]>
Co-authored-by: Alexandros Theodoridis <[email protected]>

* Backport fixes from upstream (#443)

* Consider runfiles in lit tests

* Address review comments

* Introduce pool name for rbe

* Introduce rocm rbe pools

* First check for multigpu tag

* Address review comments

* Fix buildifier issue

* Assigne specific pool only to test targets

* Make rbe amdgpu pools configurable

* Trigger CI/CD pipeline

* Fix build error

* Add excluded tests

* Trigger CI/CD pipeline

* Switch back to rocminfo to detect number of gpus

* Backport rocm_configure

* Trigger CI/CD pipeline

* Add ignore tests list

* Trigger CI/CD pipeline

* Add disk cache

* Enable rbe for this branch only

* Add one more failing test

* Update tsan ignore list

* Remove printing out the script commands

* Update local test jobs

* Trigger CI/CD pipeline

* Trigger CI/CD pipeline

* Disable rbe

* Add failing test

* Enable rbe

* Ignore TransferLiteralFromDevice

* Ignore transfer from outfeed

* Fix hermetic builds

* Print bazel command

* Add back communicator test

* Remove require amd gpu filter

* Remove filter nccl_communicator_test

* Remove no_oss filter

* Ignore //xla/pjrt/gpu/tfrt:tfrt_gpu_buffer_test

* Exclude failing tsts

* Mark multigpu tests as such, make them exclusive if executed locally

* Remove invalid multi_gpu tag from cpu tests

* Restore build_config not exposing has_tag

* Unmark test which is not multigpu

* Add missing tag documentation

* Run multigpu tests locally

* Revert tests to fix, use taget

* Remove disk_cache

* Return disk cache and ignore tsan warning

* Fix tsan issues (#450)

* Fix tsan issues

* Fix hermetic build llvm clash

* Set timeouts, ignore tsan warning

* Ignore execute on stream

* Port PackedTranspose performance regression fix (#441)

* [XLA:GPU] Rename warp to shmem_group in PackedTranspose

Also calculate their count as kNumThreadsPerBlock / kNumShmemBanks to
avoid inconsistency when manually specified.

This change is NFC for any GPU in upstream. However, it fixes a
performance regression in downstream for AMD GPUs caused by
inconsistency between shmem_group size, kNumThreadsPerBlock and
kNumShmemBanks. It ended up in a situation downstream where half of the
launched threads per block were not utilized at all.

Update packed transpose tests to verify correct thread utilization.

* [XLA:GPU] Fuse shmem write loops for transposes in PackedTranspose

Replace per-transpose loops with a single unified loop that processes all
transposes simultaneously, computing indices once and reusing them across
all operations.

Update packed_transpose_multiple_heroes.hlo test to verify the single-loop
structure with multiple iter_args.

* Support split for multigpu and single gpu pipelines (#453)

* Support split for multigpu and single gpu pipelines

* Use placeholder config

* Include all multigpu tests

* Add back multigpu tests

* Ignore ExecuteReplicatedImpl

* Migrate settings from run_multi_gpu tests to bazelrc

* Include sanitizer wrapper

* Exclude failing test

* Migrate more settings and enable collective tests

* add missing cuda-only tag

* Add back failing test

* Mark nvshmem tests as cuda-only (#458)

* bugfix - consider the situation where the best time is infinite (#440)

* bugfix - consider the situation where the best time is infinite

* added an unit test where best_tiled_run_time_data contains Infinite.

* Enable rbe for testing (#463)

* Enable rbe for testing

* Force multigpu tests to run locally

* Reduce disk_cache size (#467)

* Exclude //xla/tests:collective_ops_test_amdgpu_any (#468)

* Add register spilling detection AMD v0.8.0 (#464)

* register spilling by disassembling object file

* added time measurement to the spilling check

* adapt the num_warps so that the hlo could be compiled on both amd and nvidia

* pass though is_autotuning_compilation flag to the function CompileToHsaco

* implementation of register spilling by reading meta data of hasco file using llvm-readobj

* utilize amd code object manager library for parsing HSACO metadata

* Fix infinite recursion in HloInstruction::Accept/Visit const wrappers (#470)

The const wrapper methods for Accept() and Visit() were calling themselves
instead of the template versions, causing infinite recursion and stack overflow.

* enable mx datatype for rocm (#462)

* enable mx datatype for rocm

* add // TF_ROCM_VERSION >= 70000

* fix unit test build

* Rocm jaxlib v0.8.0 fix fp support ut 2 (#466)

* Fix expected output in fusion_emitter_int4_device_test for ROCm.

* Enable triton/fusion_emitter_int4_device_test on ci.

* Rocm jaxlib v0.8.0 fix triton support (#465)

* Fixed triton support_test on 0.7.1.

(cherry picked from commit be9da6d)

* Fixed triton/support_test on ROCm 0.8.0. Updated number of IsTritonSupport functions.

* Remove invalid ignore targets (#475)

* revert xla_gpu_enable_triton_softmax_fusion related changes (#474)

CI status is irrelevant to this PR

* update rocprofiler-sdk (v3) and roctracer (v1) (#473)

* update rocprofiler-sdk (v3) and roctracer (v1) for 0.8.0

* update for skip_rocprofiler_sdk

* update for the fixing asan check

* fix to show kernel details in trace file

* Refine rocprofiler-sdk (v3) integration based on Arech8's comments along with rocprofiler_flush_buffer explicitly

* update rocprofiler-sdk based on comments

* Force rbe incompatible tests to be executed locally (#485)

* [ROCm] Restore CudnnFusedConvRewriter  (#372) (#392) (#481)

* [ROCm] Restore CudnnFusedConvRewriter  (#372) (#392)

* [ROCm] Allways run GpuConvAlgorithmPicker

* [ROCm] Restore CudnnFusedConvRewriter

Introduce CudnnFusedConvDecomposer to revert back fused convs
if no fused algorithm could be found with ConvAlgorithmPicker.
Remove unfused fallback paths from RocmFusedConvRunner.

Co-authored-by: Dragan Mladjenovic <[email protected]>

* Enable u-tests

* Fix

* Remove gemm algorithm picker

* Backport gemmalgorithm picker

* Fix

---------

Co-authored-by: Harsha H S <[email protected]>
Co-authored-by: Dragan Mladjenovic <[email protected]>

* [XLA:GPU] Consistently check which bitcasts we can fuse. (#486)

github.com/openxla/pull/30864 added a check that we shouldn't fuse bitcasts that change bit width, but only in one place. We need to do that consistently, because there are multiple places in PriorityFusion that have special handling for bitcasts.

PiperOrigin-RevId: 833281452
(cherry picked from commit 8c64c14)

Co-authored-by: Oleg Shyshkov <[email protected]>

* take silu epilogues into account in autotuning (#488)

* Rocm jaxlib v0.8.0 fix fusion emitter device test 2 (#482)

* Clean up disk cache using bash trap on exit (#480)

* Increase the step for iota test (#487)

* Make cublaslt_test platform independent (#489)

* Exclude iota_test for tsan builds (#490)

* Fix hipSolver FFI errors (#483)

* Fix hipSolver FFI errors

* Remove srcs and add linkopts instead

* Add -L for different ROCm configs

* Add similar fixes for rocprofiler-sdk

* Revert moving rocprofiler sdk to data

---------

Co-authored-by: Alexandros Theodoridis <[email protected]>

* Introduce jax utest script (#498)

* Make it compatible with rocm plugin

* Introduce jax utest script

* Sync filter for jax tests

* [ROCm] Initialze collectives to nullptr to force its allocation later (#502)

* Add SiLU epilogue unit tests (#491)

* [ROCm] Enable embeded bitcode libs and inprocess lld (#507)

Added TF_ROCM_INPROCESS_LLD  and TF_ROCM_EMBEDDED_DEVICE_LIB form 0.6.0
otherwise identical to openxla#32439.
Env vars only needed for 0.8.0.

* Fixing self_adj_test and fixing sort_rewriter on ROCM (#493)

* fixing self_adj_test and fixing sort_rewriter on ROCM

* fixing sortrewriter pass

* fixing gpu_compiler_test after adding 2nd SortRewriter pass

* Multioutput fusion test fix (#496)

* fixing warp size for multioutput fusion test

* added build fix

* Fix TopK algorithm for RDNA architectures by properly handling WAVEFRONT_SIZE and removing __AMDGCN_WAVEFRONT_SIZE that got deprecated in newer versions of ROCm. Fixes sort_ops_test_gpu and sort_ops_test_gpu_mlir_bridge_test UT failures. (#509)

* [rocm-jaxlib-v0.8.0] Addressing CI warnings (#508)

* Remove unused variable

* Add fallthrough attribute in the IsSupportedDotAlgorithm

* Specify all cases in the CudnnFusedDecomposer

* Specify mx_mode in GemmConfig

* Remove unused cleanup_on_error

* Specify missing mx_mode in GemmConfig::For (#516)

* PR openxla#36046: [ROCm] Fix failing unit tests on ROCm platform

Imported from GitHub PR openxla#36046

📝 Summary of Changes

- layout_assignment tests are marked cuda-only.
- sample_file_test needs higher autotuner level for MIOpen to return conv algorithm. Earlier this was coming from GetDebugOptionsForTest.
- buffer_debug_log test is made gpu agnostic by using cannonical gpu name.
- cublas_gemm_rewriter_test_amdgpu_any fix unit test to remove padding for ROCm as introduced in openxla#33854
- gpu_kernel_tiling_test_amdgpu_any is updated to respect higher launch dimensions now supported by hipruntime
- Mark dynamic_shared_memory_test as cuda-only
- Add arch specific checks for barriers to sorting.hlo

🎯 Justification
Fixes failing unit tests on ROCm platform

🚀 Kind of Contribution
 🐛 Bug Fix, 🧪 Tests

Copybara import of the project:

--
472cd54 by Harsha HS <[email protected]>:

[ROCm] Fix failing unit tests on ROCm platform

- layout_assignment tests are marked cuda-only.
- sample_file_test needs higher autotuner level for MIOpen to return
conv algorithm. Earlier this was coming from GetDebugOptionsForTest.
- buffer_debug_log test is made gpu agnostic by using cannonical gpu name.

--
3bb9422 by Harsha HS <[email protected]>:

Fix tests which started to fail due to openxla#33854

--
850d955 by Harsha HS <[email protected]>:

HIP now respects highter launch dimension similar to CUDA

--
b504a7e by Harsha HS <[email protected]>:

Make dynamic_shared_memory_test cuda only

--
1e4e57a by Harsha HS <[email protected]>:

Add arch specific checks to sorting.hlo

--
ce1241c by Harsha HS <[email protected]>:

Address review comments

Merging this change closes openxla#36046

FUTURE_COPYBARA_INTEGRATE_REVIEW=openxla#36046 from ROCm:ci_fix_upstream_ut_20260107 ce1241c
PiperOrigin-RevId: 856068530

* PR openxla#35744: [ROCm] Fix TopK algorithm for RDNA

Imported from GitHub PR openxla#35744

📝 Summary of Changes
xla/stream_executor/rocm/topk_kernel_rocm_common.cu.h now implements proper handling of WAVEFRONT_SIZE based on the architecture. __AMDGCN_WAVEFRONT_SIZE is removed as it is deprecated in newer versions of ROCm.

🎯 Justification
Fixes sort_ops_test_gpu and sort_ops_test_gpu_mlir_bridge_test UT failures.

🚀 Kind of Contribution
🐛 Bug Fix

🧪 Unit Tests:
Fixes sort_ops_test_gpu and sort_ops_test_gpu_mlir_bridge_test UT failures.

**NOTE:** The changes are verified on gfx1100, gfx1201, and gfx90a.
Copybara import of the project:

--
7097b9c by Aleksa Arsic <[email protected]>:

Fix TopK algorithm for RDNA architectures by properly handling WAVEFRONT_SIZE and removing __AMDGCN_WAVEFRONT_SIZE that got deprecated in newer versions of ROCm. Fixes sort_ops_test_gpu and sort_ops_test_gpu_mlir_bridge_test UT failures.

--
6e1aaab by Harsha HS <[email protected]>:

[ROCm] Fix TopK kernel Serialization checks

--
9fa6021 by Harsha HS <[email protected]>:

[ROCm] Get Warpsize from device descriptor

--
deb4932 by Harsha H S <[email protected]>:

Include link to depricated macro

Merging this change closes openxla#35744

COPYBARA_INTEGRATE_REVIEW=openxla#35744 from ROCm:ci_fix_topk_algorithm_for_rdna deb4932
PiperOrigin-RevId: 855689898

* PR openxla#36283: [ROCm] Skip conditional tests on ROCm as they are not supported by HIP Graphs

Imported from GitHub PR openxla#36283

📝 Summary of Changes
Conditionals are not supported by HIP graphs and those tests are skipped.

🚀 Kind of Contribution
 🐛 Bug Fix

Copybara import of the project:

--
1c607b6 by Harsha HS <[email protected]>:

[ROCm] Skip conditional tests on ROCm as they are not supported by HIP Graphs

Merging this change closes openxla#36283

COPYBARA_INTEGRATE_REVIEW=openxla#36283 from ROCm:ci_skip_conditionals_on_rocm_20260112 1c607b6
PiperOrigin-RevId: 855601660

* Include more passing tests

---------

Co-authored-by: Pham Binh <[email protected]>
Co-authored-by: zoranjovanovic-ns <[email protected]>
Co-authored-by: Pavel Emeliyanenko <[email protected]>
Co-authored-by: Alex <[email protected]>
Co-authored-by: spiao <[email protected]>
Co-authored-by: Dragan Mladjenovic <[email protected]>
Co-authored-by: Harsha HS <[email protected]>
Co-authored-by: Zahid Iqbal <[email protected]>
Co-authored-by: Chunyu Jin <[email protected]>
Co-authored-by: Alexandros Theodoridis <[email protected]>
Co-authored-by: Aleksei Nurmukhametov <[email protected]>
Co-authored-by: Xuefei Jiang <[email protected]>
Co-authored-by: Eetu Sjöblom <[email protected]>
Co-authored-by: Oleg Shyshkov <[email protected]>
Co-authored-by: charleshofer <[email protected]>
Co-authored-by: pemeliya <[email protected]>
Co-authored-by: Aleksa Arsic <[email protected]>
Co-authored-by: mmakevic-amd <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants