I ran into a few things while trying to make things work inside of WSL2 with oneAPI's NVIDIA backend.
For some reason GCC 9 in Ubuntu 20.04 in WSL2 has an issue with the symbols of the virtual functions on the copy types not being exported. š Very strange given that we haven't seen issues with this in any other place. (It's a question of whether the compiler is smart enough to know at compile time which function it would have to call, relying on override and final declarations.)
I kept seeing a crash in one of the SYCL tests that just didn't give me a usable/understandable backtrace. š¦ In the end it turned out to be an issue with asynchronous memory copies into SYCL shared memory.
But while hunting for the issue, I ended up making copies into host jagged vectors a little smarter. (Thinking that this may be the issue behind the crash.) Ensuring that the output jagged vector of a copy would use the same memory resource for all of its std::vector components.
While at it, I also made sure that all virtual functions on the vecmem::copy and memory resource classes would use the same set of keywords. Adding virtual and final in places where they were missing before. (The first one is just a stylistic thing, but the added final keywords may help slightly in some cases.)
I ran into a few things while trying to make things work inside of WSL2 with oneAPI's NVIDIA backend.
override
andfinal
declarations.)std::vector
components.While at it, I also made sure that all virtual functions on the
vecmem::copy
and memory resource classes would use the same set of keywords. Addingvirtual
andfinal
in places where they were missing before. (The first one is just a stylistic thing, but the addedfinal
keywords may help slightly in some cases.)