I think you should probably take your observations at face value:
Support for cudaMallocAsync:
- native windows, WDDM: yes
- native windows, TCC: no
- windows WSL2: yes
(or if you prefer, construct a directed test in each of the above 3 settings to determine support for cuda memory pools as indicated by the api mechanism)
I’m not suggesting these are hard and fast rules and may not change in the future. The instructions give the method to determine if it is supported in any particular setting. if it is not supported, then use whatever coding methodology you would have used prior to the introduction of CUDA memory pools.
I won’t be able to explain what causes the issue. Code that is designed to run in a variety of settings should acknowledge that cuda memory pools are not supported in every setting, and should properly query for support, and should behave accordingly if support is not indicated.