WSL2 上的设备内存分配失败
Device memory allocation fails on WSL2
我正在尝试 运行 在 WSL2 上使用 Cuda Thrust 函数的简单 C++ 程序。程序似乎在 运行 时间内未能分配设备内存。我一直在 Microsoft visual studio 中使用 Thrust,我没有收到任何错误。
CMakeLists.txt:
cmake_minimum_required(VERSION 3.8 FATAL_ERROR)
project(proj LANGUAGES CXX CUDA)
add_executable(proj
proj.cu
)
proj.cu:
#include<thrust/host_vector.h>
#include<thrust/device_vector.h>
#include<thrust/fill.h>
int main()
{
//thrust::host_vector<int> h_vec(10);
//thrust::fill(h_vec.begin(), h_vec.end(), 1);
thrust::device_vector<int> d_vec(10);
//thrust::fill(d_vec.begin(), d_vec.end(), 1);
return 1;
}
输出:
terminate called after throwing an instance of 'thrust::system::system_error'
what(): get_max_shared_memory_per_block :failed to cudaGetDevice: unknown error
Aborted (core dumped)
如果我注释 device_vector 行,并改用宿主向量,它 运行 没有错误。
附加信息:
- GeForce GTX 950M
- Windows11家。构建 22000.51.
- WSL2: Ubuntu-18.04
- Cuda 编译工具,9.1 版,V9.1.85
在我post这个问题之前,我已经看到了here中的说明,并且都下载并安装了WSL的CUDA驱动程序,并加入了windows内部程序和升级到 windows 11 版本。但是它没有用。
但我也安装了 Ubuntu 18.04。我认为它是安装 Ubuntu 20.4 而不是使程序 运行 最后没有错误!
所以,这就是我解决这个问题的方法:
-从 Microsoft 商店安装 Ubuntu 20.04(它要求我先下载 运行 WSL 修复程序,我下载了)
-在powershell中,我删除了Ubuntu 18.04
wsl --unregister Ubuntu-18.04
将 Ubuntu-18.04 替换为您的发行版名称。你可以通过
在powershell中获取它的名字
wsl --list
-已安装 cmake 和 g++-9(gcc-9 已安装)
-使用 here
中的说明下载了 cuda 工具包
然后
cmake -DCMAKE_CUDA_COMPILER=/usr/local/cuda-11.0/bin/nvcc ..
make
./proj
我正在尝试 运行 在 WSL2 上使用 Cuda Thrust 函数的简单 C++ 程序。程序似乎在 运行 时间内未能分配设备内存。我一直在 Microsoft visual studio 中使用 Thrust,我没有收到任何错误。
CMakeLists.txt:
cmake_minimum_required(VERSION 3.8 FATAL_ERROR)
project(proj LANGUAGES CXX CUDA)
add_executable(proj
proj.cu
)
proj.cu:
#include<thrust/host_vector.h>
#include<thrust/device_vector.h>
#include<thrust/fill.h>
int main()
{
//thrust::host_vector<int> h_vec(10);
//thrust::fill(h_vec.begin(), h_vec.end(), 1);
thrust::device_vector<int> d_vec(10);
//thrust::fill(d_vec.begin(), d_vec.end(), 1);
return 1;
}
输出:
terminate called after throwing an instance of 'thrust::system::system_error'
what(): get_max_shared_memory_per_block :failed to cudaGetDevice: unknown error
Aborted (core dumped)
如果我注释 device_vector 行,并改用宿主向量,它 运行 没有错误。
附加信息:
- GeForce GTX 950M
- Windows11家。构建 22000.51.
- WSL2: Ubuntu-18.04
- Cuda 编译工具,9.1 版,V9.1.85
在我post这个问题之前,我已经看到了here中的说明,并且都下载并安装了WSL的CUDA驱动程序,并加入了windows内部程序和升级到 windows 11 版本。但是它没有用。
但我也安装了 Ubuntu 18.04。我认为它是安装 Ubuntu 20.4 而不是使程序 运行 最后没有错误!
所以,这就是我解决这个问题的方法:
-从 Microsoft 商店安装 Ubuntu 20.04(它要求我先下载 运行 WSL 修复程序,我下载了)
-在powershell中,我删除了Ubuntu 18.04
wsl --unregister Ubuntu-18.04
将 Ubuntu-18.04 替换为您的发行版名称。你可以通过
在powershell中获取它的名字wsl --list
-已安装 cmake 和 g++-9(gcc-9 已安装)
-使用 here
中的说明下载了 cuda 工具包然后
cmake -DCMAKE_CUDA_COMPILER=/usr/local/cuda-11.0/bin/nvcc ..
make
./proj