Skip to content

[xpupti] Fix Windows build support for xpupti tests and multi-config generators.#1394

Open
tsocha wants to merge 14 commits into
pytorch:mainfrom
intel-staging:dev/tsocha/oneccl-1
Open

[xpupti] Fix Windows build support for xpupti tests and multi-config generators.#1394
tsocha wants to merge 14 commits into
pytorch:mainfrom
intel-staging:dev/tsocha/oneccl-1

Conversation

@tsocha

@tsocha tsocha commented May 11, 2026

Copy link
Copy Markdown
Contributor

It's a part of #1335 1/3

  • Refactor test/xpupti/CMakeLists.txt to handle Windows and multi-config generators (VS, Ninja Multi-Config):

    • Force Ninja as the inner ExternalProject generator on Windows and propagate $ via CONFIGURE_COMMAND for multi-config
    • Use WINDOWS_EXPORT_ALL_SYMBOLS and /FORCE:UNRESOLVED so the shared test library can build against ComputeOnXpu defined in the compute executable
    • Pass LINK_LIBRARY_NAME/LINK_LIBRARY_DIR instead of a hardcoded lib.so path; inner project resolves via find_library with config-aware PATH_SUFFIXES
    • Forward SYCL lib path to the inner linker on Windows
    • Skip -Wl,--export-dynamic on Windows in compute/CMakeLists.txt
  • Rename make_test to make_sycl_test to reflect SYCL-based tests.

  • Fix XPUPTI_BUILD_FLAG so -DHAS_XPUPTI is visible in both the current and parent scopes (was only set in PARENT_SCOPE).

  • Reorder id/linked/metadata assignments in XpuptiActivityProfilerSession::handleRuntimeKernelMemcpyMemsetActivities and inline the linkedActivity lookup — no behavior change.

  • Include src/ActivityBuffers.h in XpuptiTestUtilities.cpp and hoist iterator declarations out of the for-init to satisfy MSVC.

* Refactor test/xpupti/CMakeLists.txt to handle Windows and
  multi-config generators (VS, Ninja Multi-Config):
  - Force Ninja as the inner ExternalProject generator on Windows
    and propagate $<CONFIG> via CONFIGURE_COMMAND for multi-config
  - Use WINDOWS_EXPORT_ALL_SYMBOLS and /FORCE:UNRESOLVED so the
    shared test library can build against ComputeOnXpu defined in
    the compute executable
  - Pass LINK_LIBRARY_NAME/LINK_LIBRARY_DIR instead of a hardcoded
    lib<name>.so path; inner project resolves via find_library with
    config-aware PATH_SUFFIXES
  - Forward SYCL lib path to the inner linker on Windows
  - Skip -Wl,--export-dynamic on Windows in compute/CMakeLists.txt

* Add XpuptiActivityHandlersTest executable (unit test that does
  not require the SYCL compute ExternalProject); rename make_test
  to make_sycl_test to reflect the remaining SYCL-based tests.

* Fix XPUPTI_BUILD_FLAG so -DHAS_XPUPTI is visible in both the
  current and parent scopes (was only set in PARENT_SCOPE).

* Reorder id/linked/metadata assignments in
  XpuptiActivityProfilerSession::handleRuntimeKernelMemcpyMemsetActivities
  and inline the linkedActivity lookup — no behavior change.

* Include src/ActivityBuffers.h in XpuptiTestUtilities.cpp and
  hoist iterator declarations out of the for-init to satisfy MSVC.
@meta-cla meta-cla Bot added the cla signed label May 11, 2026
@tsocha

tsocha commented May 11, 2026

Copy link
Copy Markdown
Contributor Author

@gujinghui please review it.

@gujinghui

Copy link
Copy Markdown

@tsocha
can we merge the changes of #1337 into this PR?

xpupti files including into compilation is handled in cmakefiles
@tsocha

tsocha commented May 12, 2026

Copy link
Copy Markdown
Contributor Author

@gujinghui

@tsocha can we merge the changes of #1337 into this PR?

DONE

Comment thread libkineto/src/plugin/xpupti/CMakeLists.txt
@gujinghui

Copy link
Copy Markdown

@divyanshk @scotts This PR is ready for your review. Thanks.

@tsocha tsocha changed the title Fix Windows build support for xpupti tests and [xpupti] Fix Windows build support for xpupti tests and Jun 24, 2026
@tsocha tsocha changed the title [xpupti] Fix Windows build support for xpupti tests and [xpupti] Fix Windows build support for xpupti tests and multi-config generators. Jun 25, 2026
@ZhaoqiongZ ZhaoqiongZ moved this to Aged Pending Review in PyTorch Intel Jul 6, 2026
@gujinghui

Copy link
Copy Markdown

@ryanzhang22 @scotts
This PR is ready for your review. Thanks.

@meta-codesync

meta-codesync Bot commented Jul 13, 2026

Copy link
Copy Markdown

@ryanzhang22 has imported this pull request. If you are a Meta employee, you can view this in D111713633.

Comment thread libkineto/test/xpupti/CMakeLists.txt Outdated
POSITION_INDEPENDENT_CODE ON
WINDOWS_EXPORT_ALL_SYMBOLS ON
)
# On Windows, DLLs must resolve all symbols at link time (unlike Linux .so).

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

for my understanding: I see that the build is forced to progress despite the error with this flag enabled, but how does this end up producing a valid binary?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

It is caused by circular dependency.
The library is compiled with a missing symbol and during program loading this symbol is provided by the test .exe file, as it exports all of its symbols.

@pytorch-bot

pytorch-bot Bot commented Jul 15, 2026

Copy link
Copy Markdown

The following ciflow label(s) have been added but CI has not been triggered yet because the workflows are awaiting approval:

  • ciflow/xpu

Once a maintainer approves the workflows (scroll to the bottom of the PR page), the corresponding CI jobs will be triggered automatically. Please ping one of the reviewers if you do not have access to approve and run workflows.

@tsocha

tsocha commented Jul 16, 2026

Copy link
Copy Markdown
Contributor Author

@ryanzhang22 I have included a change from @aostrowski-hbn

Circular dependency is resolved and CMake is cleaner now.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Status: Aged Pending Review

Development

Successfully merging this pull request may close these issues.

5 participants