-
Notifications
You must be signed in to change notification settings - Fork 23
Add CUDA 13 support and remove CUDA 11 support #1302
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
Several MSVC issues to resolve:
I'll pick this up once I return from annual leave |
4a8f7ae to
7cb7825
Compare
|
The curand warnings can be suppressed via CMake, and I've narrowed down the subpackges which are required. CI updates need expanding to other workflows still (only updated the minimal set to avoid significant CI builds for now) and manual c++ and python test suite execution required with CUDA 13 on linux and windows, but will likely hold off until I've resolved #1150. Readme etc will also need updating still. I'll update the list in the original post. |
|
Some new C++20 warnings to address (linux) And under msvc others + an error in jitify 2 due to use of |
|
Windows VS2022 + CUDA 13.0 c++ tests passed on my 3060ti. Should probably re-run in the future when this PR is tidied up and merge-able |
|
Windows CUDA 13 C++20 Pyflamegpu (swig >= 4.1.0) pytests all pass |
281f8d7 to
a60806e
Compare
|
C++20 is mostly working, just an outstanding issue with pyflamegpu on windows with CUDA 12.0 in c++20 mode. I need to jump into windows and install CUDA 12.0 to debug this really. Reproduced locally with CUDA 12.0 on windows. Unsurpsingly (And unfortunately) bumping swig to 4.2.1 or 4.3.0 does not resolve this issue (seeing as it's fine in newer CUDA releases). The issue occurs within msvc's When using Swig 4.3.0, this is hit during the template<typename OutIterator>
class SwigPyIterator_T : public SwigPyIterator
...
ptrdiff_t distance(const SwigPyIterator &iter) const
{
const self_type *iters = dynamic_cast<const self_type *>(&iter);
if (iters) {
return std::distance(current, iters->get_current());
} else {
throw std::invalid_argument("bad iterator type");
}
}
...
SWIGINTERN PyObject *_wrap_RunLogMap_rbegin(PyObject *self, PyObject *args) {
...
resultobj = SWIG_NewPointerObj(swig::make_output_iterator(static_cast< const std::map< unsigned int,flamegpu::RunLog >::reverse_iterator & >(result)),
swig::SwigPyIterator::descriptor(),SWIG_POINTER_OWN);
return resultobj;
...
}As using a newer CUDA compiler does not encouter this issue, it's most likely a compiler / stdlib mismatch issue that swig is just exposign to us, we could:
Manually forcing However this is pretty dirty, would mean we can't use any c++20 features in our |
|
Due to the above MSVC + CUDA < 12.4 +
I'm becoming more and more inclined to just bump our windows pyflamegpu builds to 12.4 + 13.0 (or even 13.0 only) as so much time has been spent recently fighting Windows CI that maintaining support for older versions is becoming more and more of a time sink, and will probably just break at some random point in the future for no good reason. |
9e03b6c to
b17512b
Compare
|
For now, I've bumped windows wheel support to CUDA >= 12.4, and updated CI accordingly including an extra windows job checking non-python CUDA 12.0 support on windows. |
|
I belive this is now ready, subject to a tweak and rebase after the visualisation PR is merged and is still blocked by #1150. Unfortunately this does complicate our python wheel / support story which I had been trying to avoid. I'm open to us only having a single CUDA version supported for python binary wheels on Windows which would slightly simplify things? (colab still requires CUDA 12 for linux (12.4 drivers, but on tesla hardware with 12.5 installed currently) I've manually tested c++ and python test suites on both linux and windows, and checked visualiastion still runs on linux (C++ and python). |
…not quiet. Caches the most recently found version to emit a warning in case the minimum version has been increased.
…DA 13.0 on Windows
… second is reversed'
…in JSONStateReader.cu
…gle char to a std::string
…equired by c++20 pyflamegpu
…ssions on Windows CMake uses the nvcc version, which is the same for 13.0 and 13.0 update 1, so the suppression must be applied for all 13.0 releases
…t due to c++20 errors
… job without python building
…24b51dd5dd2 (merged cuda 13 support)
…. Some message tweaks too
Update the supported CUDA versions from CUDA 11.2-12.x, to 12.0-13.x.
Python Wheels provided for CUDA 12.0+ and 13.0+ on Windows, and CUDA 12.4+ and 13.0+ on Windows.
std::formatetc)Depends on #1150
Closes #1292