trilinos / Trilinos

Primary repository for the Trilinos Project
https://trilinos.org/
Other
1.22k stars 570 forks source link

Kokkos: Compilation with MSVC(Visual Studio 19) + ICC #6745

Closed alessiocacciatori closed 2 years ago

alessiocacciatori commented 4 years ago

Question

@trilinos/\<Kokkos>

Hi team, I am trying to compile entire Trilinos suite under MSVC(+ICC). Right now I managed to compile Kokkos + OpenMP but this came with quite a substantial effort and coding that raised many questions.

Basically we've found some issue that I would like to discuss before (possibly) submitting the emended code.

1) _KokkosHostBarrier.cpp Line 103. The function _trywait(void) calls the static function _trywait(int *, const int, const int) passing non-static members (m_buffer...). Problem is: HostBarrier methods are often called by their static methods (e.g _KokkosHostThreadTeam.hpp, line 139).

This, of course, is an error and I am surprised on how GCC can overcome this.

2) cas128_t is defined twice (_KokkosAtomicAssembly.hpp and _KokkosAtomicWindows.hpp) Solved this by removing definition in _KokkosAtomicAssembly.hpp but I am not sure what the differences are.

3) _atomic_compareexchange with _cas128t (_Impl::cas128_t atomic_compareexchange<) has a conversion error: tmp.t = dest; Indeed it is trying to convert a pointer to cas128_t to cas128_t. Solved with tmp.t = *dest;

4) _atomic_compareexchange with SFINAE generates quite a lot of redefinition errors. Solved this by removing all SFINAE definitions and adding proper specialized bodies.

So, I am not sure if what we considered as errors are actual errors. Are we doing right with the proposed fixes (with those fixes we managed to compile Kokkos on Windows)?

Thank you in advance, Alessio

ndellingwood commented 4 years ago

@trilinos/kokkos

Also adding @ibaned and @crtrott as I think they have worked on Windows support in Kokkos somewhat recently.

mhoemmen commented 4 years ago

https://github.com/kokkos/kokkos/issues/1533

ibaned commented 4 years ago

Yes, we're working on this ourselves and have addressed the issues you listed. We still have remaining issues with excessive SFINAE in the View::operator() declarations that we're working through.

alessiocacciatori commented 4 years ago

Hi all, Thank you for the prompt feedback! Glad to see that, somewhat, we were moving in the right direction.

@ibaned : is there any roadmap on MSVC deployment that you may share (So that we could focus on other aspects of the SW we're developing)?

Or, maybe we can cooperate by sharing our list of modifications if you think that this may help you.

ibaned commented 4 years ago

Hi @alessiocacciatori, our progress is tracked in this WIP PR: https://github.com/kokkos/kokkos/pull/2655 We would like to get this done by Kokkos version 3.1

github-actions[bot] commented 3 years ago

This issue has had no activity for 365 days and is marked for closure. It will be closed after an additional 30 days of inactivity. If you would like to keep this issue open please add a comment and/or remove the MARKED_FOR_CLOSURE label. If this issue should be kept open even with no activity beyond the time limits you can add the label DO_NOT_AUTOCLOSE. If it is ok for this issue to be closed, feel free to go ahead and close it. Please do not add any comments or change any labels or otherwise touch this issue unless your intention is to reset the inactivity counter for an additional year.

github-actions[bot] commented 2 years ago

This issue was closed due to inactivity for 395 days.