Skip to content

Conversation

@yasahi-hpc
Copy link
Collaborator

This PR addresses the oneAPI 2025 deprecations as found in Nightly builds.

@yasahi-hpc yasahi-hpc self-assigned this Jun 3, 2025
Copy link
Member

@tpadioleau tpadioleau left a comment

Choose a reason for hiding this comment

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

The changes are ok to me. I think there are remaining deprecation warnings like

/work/fft/src/KokkosFFT_SYCL_plans.hpp:126:51: warning: 'CONJUGATE_EVEN_STORAGE' is deprecated [-Wdeprecated-declarations]
  126 |   plan->set_value(oneapi::mkl::dft::config_param::CONJUGATE_EVEN_STORAGE,
/work/fft/src/KokkosFFT_SYCL_plans.hpp:112:9: warning: 'set_value' is deprecated: Use set_value(config_param, const std::vector<std::int64_t>&) instead. [-Wdeprecated-declarations]
  112 |   plan->set_value(oneapi::mkl::dft::config_param::INPUT_STRIDES,

plan->set_value(oneapi::mkl::dft::config_param::FWD_STRIDES,
in_strides.data());
plan->set_value(oneapi::mkl::dft::config_param::OUTPUT_STRIDES,
plan->set_value(oneapi::mkl::dft::config_param::BWD_STRIDES,

Choose a reason for hiding this comment

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

It looks like the macros FWD_STRIDES and BWD_STRIDES are available in older versions of Intel MKL also. Have INPUT_STRIDES and OUTPUT_STRIDES alone been deprecated?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

According to the errors, INPUT_STRIDES and OUTPUT_STRIDES have been deprecated.

Choose a reason for hiding this comment

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

FWD_STRIDES and INPUT_STRIDES are having the same meaning. Same with BWD_STRIDES and OUTPUT_STRIDES. I was curious about that.

@yasahi-hpc
Copy link
Collaborator Author

yasahi-hpc commented Jun 3, 2025

The changes are ok to me. I think there are remaining deprecation warnings like

/work/fft/src/KokkosFFT_SYCL_plans.hpp:126:51: warning: 'CONJUGATE_EVEN_STORAGE' is deprecated [-Wdeprecated-declarations]
  126 |   plan->set_value(oneapi::mkl::dft::config_param::CONJUGATE_EVEN_STORAGE,
/work/fft/src/KokkosFFT_SYCL_plans.hpp:112:9: warning: 'set_value' is deprecated: Use set_value(config_param, const std::vector<std::int64_t>&) instead. [-Wdeprecated-declarations]
 112 |   plan->set_value(oneapi::mkl::dft::config_param::INPUT_STRIDES,

Good catch.
I think the former is resolved.
The latter, we need to pass vectors directly, not pointers.

It may be that we can remove set_value(oneapi::mkl::dft::config_param::CONJUGATE_EVEN_STORAGE by using the default in the newer version

https://www.intel.com/content/www/us/en/docs/onemkl/developer-reference-dpcpp/2025-1/configuration-setting-member-functions.html#DFT-DESCRIPTOR-CLASS-TEMPLATE-CONFIGURATION-SETTING-FUNCTIONS

@yasahi-hpc
Copy link
Collaborator Author

@tpadioleau

Are you fine with the current change? Or you think it is better to suppress set_value(oneapi::mkl::dft::config_param::CONJUGATE_EVEN_STORAGE ?

Since I cannot test this on Intel GPU now, I would like to keep it until I confirm that it is OK to be removed

@tpadioleau
Copy link
Member

Should we wait until we can test all the changes to merge then ?

@tpadioleau
Copy link
Member

Has Kokkos fixed all these warnings about this_sub_group ?

@yasahi-hpc
Copy link
Collaborator Author

Has Kokkos fixed all these warnings about this_sub_group ?

Yes, with this
kokkos/kokkos#7918

In the nightly, you may find almost no warnings from kokkos codes

@yasahi-hpc yasahi-hpc force-pushed the address-oneAPI-2025-deprecations branch from fcd62a7 to 642696a Compare October 1, 2025 18:00
@yasahi-hpc
Copy link
Collaborator Author

People from Aurora and Intel told me the correct way to set up the descriptor with new arguments. Thanks a lot!
I have confirmed on Aurora that the code works correctly.

@tpadioleau @science-enthusiast
May I have your another review please

Copy link
Member

@tpadioleau tpadioleau left a comment

Choose a reason for hiding this comment

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

That is good news but I cannot tell if we are addressing the warnings given the spurious warnings coming from Kokkos. Could we find a way to remove them ?

@yasahi-hpc
Copy link
Collaborator Author

That is good news but I cannot tell if we are addressing the warnings given the spurious warnings coming from Kokkos. Could we find a way to remove them ?

From nightly with newest Kokkos and OneAPI 2025, the warnings are from KokkosFFT side. All of these warnings should have been addressed in the PR.

/opt/intel/oneapi/mkl/2025.1/include/oneapi/mkl/dfti.hpp:18:2: warning: "Header 'oneapi/mkl/dfti.hpp' is deprecated. Please use oneapi/mkl/dft.hpp instead" [-W#warnings]
   18 | #warning "Header 'oneapi/mkl/dfti.hpp' is deprecated. Please use oneapi/mkl/dft.hpp instead"
      |  ^

/work/fft/src/KokkosFFT_SYCL_plans.hpp:24:15: warning: unused variable 'once' [-Wunused-variable]
   24 |   static bool once = [] {
      |               ^~~~
/work/fft/src/KokkosFFT_SYCL_plans.hpp:112:51: warning: 'INPUT_STRIDES' is deprecated: Use FWD/BWD strides instead. [-Wdeprecated-declarations]
  112 |   plan->set_value(oneapi::mkl::dft::config_param::INPUT_STRIDES,
      |                                                   ^
/opt/intel/oneapi/mkl/2025.1/include/oneapi/mkl/dft.hpp:51:31: note: 'INPUT_STRIDES' has been explicitly marked deprecated here
   51 |     INPUT_STRIDES           [[deprecated("Use FWD/BWD strides instead.")]]
      |                               ^

/work/fft/src/KokkosFFT_SYCL_plans.hpp:114:51: warning: 'OUTPUT_STRIDES' is deprecated: Use FWD/BWD strides instead. [-Wdeprecated-declarations]
  114 |   plan->set_value(oneapi::mkl::dft::config_param::OUTPUT_STRIDES,
      |                                                   ^
/opt/intel/oneapi/mkl/2025.1/include/oneapi/mkl/dft.hpp:53:31: note: 'OUTPUT_STRIDES' has been explicitly marked deprecated here
   53 |     OUTPUT_STRIDES          [[deprecated("Use FWD/BWD strides instead.")]]
      |                               ^

/work/fft/src/KokkosFFT_SYCL_plans.hpp:126:51: warning: 'CONJUGATE_EVEN_STORAGE' is deprecated [-Wdeprecated-declarations]
  126 |   plan->set_value(oneapi::mkl::dft::config_param::CONJUGATE_EVEN_STORAGE,
      |                                                   ^
/opt/intel/oneapi/mkl/2025.1/include/oneapi/mkl/dft.hpp:49:31: note: 'CONJUGATE_EVEN_STORAGE' has been explicitly marked deprecated here
   49 |     CONJUGATE_EVEN_STORAGE  [[deprecated]]  = DFTI_CONJUGATE_EVEN_STORAGE,
      |                               ^

Copy link
Member

@tpadioleau tpadioleau left a comment

Choose a reason for hiding this comment

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

In some parts of the PR, we are changing the implementation for versions <20250100. If we allow this, can't we only keep the version >=20250100 ? Otherwise maybe keep the old implementation for <20250100 ?

@yasahi-hpc
Copy link
Collaborator Author

In some parts of the PR, we are changing the implementation for versions <20250100. If we allow this, can't we only keep the version >=20250100 ? Otherwise maybe keep the old implementation for <20250100 ?

That is a good point.
The problem is that I am not sure whether the version >=20250100 is functional for our requirement of IntelLLVM 2023.0.0+.
As soon as we make the minimum compiler to IntelLLVM 2025.0.0+, we can safely drop the older implementation.

@tpadioleau
Copy link
Member

In some parts of the PR, we are changing the implementation for versions <20250100. If we allow this, can't we only keep the version >=20250100 ? Otherwise maybe keep the old implementation for <20250100 ?

That is a good point. The problem is that I am not sure whether the version >=20250100 is functional for our requirement of IntelLLVM 2023.0.0+. As soon as we make the minimum compiler to IntelLLVM 2025.0.0+, we can safely drop the older implementation.

Then I would consider keeping the safe old implementation when <20250100.

@yasahi-hpc
Copy link
Collaborator Author

yasahi-hpc commented Oct 2, 2025

In some parts of the PR, we are changing the implementation for versions <20250100. If we allow this, can't we only keep the version >=20250100 ? Otherwise maybe keep the old implementation for <20250100 ?

That is a good point. The problem is that I am not sure whether the version >=20250100 is functional for our requirement of IntelLLVM 2023.0.0+. As soon as we make the minimum compiler to IntelLLVM 2025.0.0+, we can safely drop the older implementation.

Then I would consider keeping the safe old implementation when <20250100.

Do you mean that the default should be the new version like

#if INTEL_MKL_VERSION < 20250100
#include <oneapi/mkl/dfti.hpp>
#else
#include <oneapi/mkl/dft.hpp>
#endif

@yasahi-hpc
Copy link
Collaborator Author

@tpadioleau I have fixed accordingly. May I have another review?

Copy link
Member

@tpadioleau tpadioleau left a comment

Choose a reason for hiding this comment

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

LGTM, thanks

@yasahi-hpc
Copy link
Collaborator Author

Thanks! I will merge this.
Hope all the warnings are suppressed in nightly

@yasahi-hpc yasahi-hpc merged commit b15fce5 into kokkos:main Oct 2, 2025
25 checks passed
@yasahi-hpc yasahi-hpc deleted the address-oneAPI-2025-deprecations branch October 2, 2025 15:47
@yasahi-hpc
Copy link
Collaborator Author

@tpadioleau

Nightly looks almost good.

https://github.com/kokkos/kokkos-fft/actions/runs/18210223243/job/51849125743

I do not know how to suppress

These options as listed are not supported.
For more information, use '-qnextgen-diag'.
option list: 
	-Winline

@tpadioleau
Copy link
Member

@tpadioleau

Nightly looks almost good.

https://github.com/kokkos/kokkos-fft/actions/runs/18210223243/job/51849125743

I do not know how to suppress

These options as listed are not supported.
For more information, use '-qnextgen-diag'.
option list: 
	-Winline

Can you check that this flag is being added by googletest ?

@yasahi-hpc
Copy link
Collaborator Author

@tpadioleau
Nightly looks almost good.
https://github.com/kokkos/kokkos-fft/actions/runs/18210223243/job/51849125743
I do not know how to suppress

These options as listed are not supported.
For more information, use '-qnextgen-diag'.
option list: 
	-Winline

Can you check that this flag is being added by googletest ?

How can I check that?

@tpadioleau
Copy link
Member

@tpadioleau
Nightly looks almost good.
https://github.com/kokkos/kokkos-fft/actions/runs/18210223243/job/51849125743
I do not know how to suppress

These options as listed are not supported.
For more information, use '-qnextgen-diag'.
option list: 
	-Winline

Can you check that this flag is being added by googletest ?

How can I check that?

You can build in verbose mode

cmake --build ... --verbose

@yasahi-hpc
Copy link
Collaborator Author

@tpadioleau
Nightly looks almost good.
https://github.com/kokkos/kokkos-fft/actions/runs/18210223243/job/51849125743
I do not know how to suppress

These options as listed are not supported.
For more information, use '-qnextgen-diag'.
option list: 
	-Winline

Can you check that this flag is being added by googletest ?

How can I check that?

You can build in verbose mode

cmake --build ... --verbose

Can I test this in nightly?
On Aurora, I cannot built with oneMKL 2025+.

The oneAPI is 2025+ but oneMKL is 24.347.

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

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants