当前位置: 首页 > news >正文

UBUNTU22.04,配置wine中调用cuda

 实验目标

客户要求:

有一个程序需要运行在云服务器上,云服务器为云容器,云容器操作系统类型为linux,程序包是基于windows环境开发的,且程序需要调用英伟达的GPU做运算,云容器不能支持虚拟化,于是乎,考虑搭建wine环境,用于运行支持exe,wine环境中需要配置NVIDIA库,用于支持NVIDIA,次实验仅供参考(适用于exe程序需要调用GPU做运算参考例子)

环境:

docker云容器

系统版本:ubuntu22.04 

cuda:12.1

显卡驱动:550.107

docker容器:官方镜像,不支持嵌套docker,虚拟化

英伟达信息:输出信息如下

(base) root@e875ed63543f:~# nvidia-smi
Wed Nov 20 06:30:49 2024
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 550.107.02             Driver Version: 550.107.02     CUDA Version: 12.4     |
|-----------------------------------------+------------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id          Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |
|                                         |                        |               MIG M. |
|=========================================+========================+======================|
|   0  NVIDIA GeForce RTX 4090        On  |   00000000:4F:00.0 Off |                  Off |
| 30%   32C    P8             29W /  450W |       2MiB /  24564MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------++-----------------------------------------------------------------------------------------+
| Processes:                                                                              |
|  GPU   GI   CI        PID   Type   Process name                              GPU Memory |
|        ID   ID                                                               Usage      |
|=========================================================================================|
|  No running processes found                                                             |
+-----------------------------------------------------------------------------------------+
(base) root@e875ed63543f:~# nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2023 NVIDIA Corporation
Built on Mon_Apr__3_17:16:06_PDT_2023
Cuda compilation tools, release 12.1, V12.1.105
Build cuda_12.1.r12.1/compiler.32688072_0
(base) root@e875ed63543f:~# cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=22.04
DISTRIB_CODENAME=jammy
DISTRIB_DESCRIPTION="Ubuntu 22.04.4 LTS"
(base) root@e875ed63543f:~#

 

安装cuda12.1

并配置驱动,步骤省略,我其他博客有记录

IT杂物铺-CSDN博客

Ubuntu22.04.4安装配置CUDA12.5,Cdnn官方详细版本_ubuntu 22.04.4-CSDN博客

wine-9.21安装

官方网站参考:

Debian/Ubuntu · Wiki · wine / wine · GitLab

sudo dpkg --add-architecture i386sudo mkdir -pm755 /etc/apt/keyringssudo wget -O /etc/apt/keyrings/winehq-archive.key https://dl.winehq.org/wine-builds/winehq.keysudo wget -NP /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/ubuntu/dists/jammy/winehq-jammy.sourcessudo apt updatesudo apt install --install-recommends winehq-develsudo apt install --install-recommends winetricks

安装完毕,执行wine  --version查看版本,执行winecfg,目录会创建.wine 目录

(base) root@e875ed63543f:~# wine --version
wine-9.21
(base) root@e875ed63543f:~# winecfg
0024:fixme:ntdll:create_logical_proc_info Improve CPU info reporting: system supports 144 logical cores, but only 32 supported!
002c:fixme:ntdll:create_logical_proc_info Improve CPU info reporting: system supports 144 logical cores, but only 64 supported!
0034:fixme:ntdll:create_logical_proc_info Improve CPU info reporting: system supports 144 logical cores, but only 64 supported!
003c:fixme:ntdll:create_logical_proc_info Improve CPU info reporting: system supports 144 logical cores, but only 64 supported!
0044:fixme:ntdll:create_logical_proc_info Improve CPU info reporting: system supports 144 logical cores, but only 64 supported!
0050:fixme:ntdll:create_logical_proc_info Improve CPU info reporting: system supports 144 logical cores, but only 64 supported!
0044:err:vulkan:vulkan_init_once Failed to load libvulkan.so.1
0074:fixme:ntdll:create_logical_proc_info Improve CPU info reporting: system supports 144 logical cores, but only 64 supported!
0044:err:winediag:nodrv_CreateWindow Application tried to create a window, but no driver could be loaded.
0044:err:winediag:nodrv_CreateWindow L"The explorer process failed to start."
0044:err:systray:initialize_systray Could not create tray window
00b8:fixme:ntdll:create_logical_proc_info Improve CPU info reporting: system supports 144 logical cores, but only 64 supported!
00d0:fixme:ntdll:create_logical_proc_info Improve CPU info reporting: system supports 144 logical cores, but only 64 supported!
00f0:fixme:ntdll:create_logical_proc_info Improve CPU info reporting: system supports 144 logical cores, but only 64 supported!
010c:fixme:ntdll:create_logical_proc_info Improve CPU info reporting: system supports 144 logical cores, but only 64 supported!
011c:fixme:ntdll:create_logical_proc_info Improve CPU info reporting: system supports 144 logical cores, but only 32 supported!
0124:fixme:ntdll:create_logical_proc_info Improve CPU info reporting: system supports 144 logical cores, but only 64 supported!
0124:err:winediag:nodrv_CreateWindow Application tried to create a window, but no driver could be loaded.
0124:err:winediag:nodrv_CreateWindow L"Make sure that your display server is running and that its variables are set."
(base) root@e875ed63543f:~# ll .wine/
total 3088
drwxr-xr-x 4 root root     117 Nov 20 06:25 ./
drwx------ 1 root root     239 Nov 20 06:27 ../
-rw-r--r-- 1 root root      12 Nov 20 05:58 .update-timestamp
drwxr-xr-x 2 root root      26 Nov 20 05:58 dosdevices/
drwxr-xr-x 7 root root     101 Nov 20 05:59 drive_c/
-rw-r--r-- 1 root root 3127457 Nov 20 06:25 system.reg
-rw-r--r-- 1 root root   24008 Nov 20 06:25 user.reg
9-rw-r--r-- 1 root root    4026 Nov 20 06:25 userdef.reg
(base) root@e875ed63543f:~#

 

添加NVIDIA库

(依赖环境参见,项目中的cuda版本)

文件我上传了一份

【免费】wine下的NVIDIA库支持资源-CSDN文库

 

项目地址:

GitHub - SveSop/nvidia-libs: Collection of nVidia libraries for use with Wine or Steam Proton.

 

脚本下载地址

https://github.com/SveSop/nvidia-libs/releases/download/v0.7.20/nvidia-libs-0.7.20.tar.xz

 

执行安装,WINEPREFIX 为你的.wine目录,我的是/root/.wine 

WINEPREFIX=/your/wine/prefix ./setup_nvlibs.sh install

我本机测试输出如下,正式版忘记截图保存了

wx@wx-virtual-machine:~/nvidia-libs-release$ WINEPREFIX=/home/wx/.wine/  /home/wx/nvidia-libs-release/setup_nvlibs.sh  install
[1/2] nvcuda :Creating DLL override...Creating symlink to nvcuda.dll.so...
[2/2] nvapi :Creating DLL override...Creating symlink to nvapi.dll...
[1/4] 64 bit nvcuda :Creating DLL override...Creating symlink to nvcuda.dll.so...
[2/4] 64 bit nvoptix :Creating DLL override...Creating symlink to nvoptix.dll.so...
[3/4] 64 bit nvapi64 :Creating DLL override...Creating symlink to nvapi64.dll...
[4/4] 64 bit nvofapi64 :Creating DLL override...Creating symlink to nvofapi64.dll...
Symlinks created in /home/wx/.wine/. Do NOT remove this source folder!
OBS! NVML is NOT enabled by default. See Readme_nvml.txt for info or run nvml_setup.sh
You need to REMOVE old overrides if older version of nvml have been used in /home/wx/.wine/

 

检查dll文件

(base) root@e875ed63543f:~# ldd .wine/drive_c/windows/system32/nvcuda.dlllinux-vdso.so.1 (0x00007fff8bd91000)libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f3ef8550000)/lib64/ld-linux-x86-64.so.2 (0x00007f3ef8833000)
(base) root@e875ed63543f:~# ldd /usr/lib/x86_64-linux-gnu/libcuda.solinux-vdso.so.1 (0x00007ffd650d0000)libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f68806b4000)libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f688048b000)libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f6880486000)libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f6880481000)librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f688047c000)/lib64/ld-linux-x86-64.so.2 (0x00007f6882376000)
(base) root@e875ed63543f:~#

 

执行脚本运行测试,(使用wine 运行bat,bat脚本中调用exe程序)

(base) root@e875ed63543f:~/run# wine run1.bat
0024:fixme:ntdll:create_logical_proc_info Improve CPU info reporting: system supports 144 logical cores, but only 32 supported!
002c:fixme:ntdll:create_logical_proc_info Improve CPU info reporting: system supports 144 logical cores, but only 64 supported!
0034:fixme:ntdll:create_logical_proc_info Improve CPU info reporting: system supports 144 logical cores, but only 64 supported!
003c:fixme:ntdll:create_logical_proc_info Improve CPU info reporting: system supports 144 logical cores, but only 64 supported!
0044:fixme:ntdll:create_logical_proc_info Improve CPU info reporting: system supports 144 logical cores, but only 64 supported!
0050:fixme:ntdll:create_logical_proc_info Improve CPU info reporting: system supports 144 logical cores, but only 64 supported!
0044:err:vulkan:vulkan_init_once Failed to load libvulkan.so.1
0074:fixme:ntdll:create_logical_proc_info Improve CPU info reporting: system supports 144 logical cores, but only 64 supported!
0044:err:winediag:nodrv_CreateWindow Application tried to create a window, but no driver could be loaded.
0044:err:winediag:nodrv_CreateWindow L"The explorer process failed to start."
0044:err:systray:initialize_systray Could not create tray window
00b8:fixme:ntdll:create_logical_proc_info Improve CPU info reporting: system supports 144 logical cores, but only 64 supported!
00d0:fixme:ntdll:create_logical_proc_info Improve CPU info reporting: system supports 144 logical cores, but only 64 supported!
00f0:fixme:ntdll:create_logical_proc_info Improve CPU info reporting: system supports 144 logical cores, but only 64 supported!
010c:fixme:ntdll:create_logical_proc_info Improve CPU info reporting: system supports 144 logical cores, but only 64 supported!
011c:fixme:ntdll:create_logical_proc_info Improve CPU info reporting: system supports 144 logical cores, but only 32 supported!
?Yo?A???i??A??C?????u?A>?ea?aNpipei.txt?oa?eO??i?ae???T*123456
??o?aN?au??a?Ua?ii?o??cA:  1
?>???o?aN?Yo?A?????o?: 8
?y>?Ea?ea?aN?i??ai??i??A (Y/N): y
??C??e?a???n: 7.6.0.exe -gpu -gpuId 0 -lianghao 8 -i pipei.txt
0128:fixme:ntdll:create_logical_proc_info Improve CPU info reporting: system supports 144 logical cores, but only 64 supported!
0128:err:winediag:ntlm_check_version ntlm_auth was not found. Make sure that ntlm_auth >= 3.0.25 is in your path. Usually, you can find it in the winbind package of your distribution.
0128:err:ntlm:ntlm_LsaApInitializePackage no NTLM support, expect problems
2?3!Eu3E v7.60 for gpu_cudaC?oo?o&o|oA??O??aAaI?TG @fakagege
OyE??a??EUE?3E1|?!
Search: 2 patterns [lianghao]
Start Wed Nov 20 06:42:50 2024
Base Key: D6DF9DA47578F49D0590380C4A11907C08C008DB3E2F7F181EDFDA5B9068A314
012c:fixme:nvcuda:wine_cuGetProcAddress_v2 (cuD3D11GetDevices, 3020, 0) The SYMBOL ADDRESS was NOT found! Returned CU_GET_PROC_ADDRESS_SYMBOL_NOT_FOUND
012c:fixme:nvcuda:wine_cuGetProcAddress_v2 (cuD3D11CtxCreateOnDevice, 3020, 0) The SYMBOL ADDRESS was NOT found! Returned CU_GET_PROC_ADDRESS_SYMBOL_NOT_FOUND
012c:fixme:nvcuda:wine_cuGetProcAddress_v2 (cuD3D11GetDirect3DDevice, 3020, 0) The SYMBOL ADDRESS was NOT found! Returned CU_GET_PROC_ADDRESS_SYMBOL_NOT_FOUND
012c:fixme:nvcuda:wine_cuGetProcAddress_v2 (cuD3D10GetDevices, 3020, 0) The SYMBOL ADDRESS was NOT found! Returned CU_GET_PROC_ADDRESS_SYMBOL_NOT_FOUND
012c:fixme:nvcuda:wine_cuGetProcAddress_v2 (cuD3D10CtxCreateOnDevice, 3020, 0) The SYMBOL ADDRESS was NOT found! Returned CU_GET_PROC_ADDRESS_SYMBOL_NOT_FOUND
012c:fixme:nvcuda:wine_cuGetProcAddress_v2 (cuD3D10GetDirect3DDevice, 3020, 0) The SYMBOL ADDRESS was NOT found! Returned CU_GET_PROC_ADDRESS_SYMBOL_NOT_FOUND
012c:fixme:nvcuda:wine_cuGetProcAddress_v2 (cuD3D10RegisterResource, 2010, 0) The SYMBOL ADDRESS was NOT found! Returned CU_GET_PROC_ADDRESS_SYMBOL_NOT_FOUND
012c:fixme:nvcuda:wine_cuGetProcAddress_v2 (cuD3D10UnregisterResource, 2010, 0) The SYMBOL ADDRESS was NOT found! Returned CU_GET_PROC_ADDRESS_SYMBOL_NOT_FOUND
012c:fixme:nvcuda:wine_cuGetProcAddress_v2 (cuD3D10MapResources, 2010, 0) The SYMBOL ADDRESS was NOT found! Returned CU_GET_PROC_ADDRESS_SYMBOL_NOT_FOUND
012c:fixme:nvcuda:wine_cuGetProcAddress_v2 (cuD3D10UnmapResources, 2010, 0) The SYMBOL ADDRESS was NOT found! Returned CU_GET_PROC_ADDRESS_SYMBOL_NOT_FOUND
012c:fixme:nvcuda:wine_cuGetProcAddress_v2 (cuD3D10ResourceSetMapFlags, 2010, 0) The SYMBOL ADDRESS was NOT found! Returned CU_GET_PROC_ADDRESS_SYMBOL_NOT_FOUND
012c:fixme:nvcuda:wine_cuGetProcAddress_v2 (cuD3D10ResourceGetSurfaceDimensions, 3020, 0) The SYMBOL ADDRESS was NOT found! Returned CU_GET_PROC_ADDRESS_SYMBOL_NOT_FOUND
012c:fixme:nvcuda:wine_cuGetProcAddress_v2 (cuD3D10ResourceGetMappedArray, 2010, 0) The SYMBOL ADDRESS was NOT found! Returned CU_GET_PROC_ADDRESS_SYMBOL_NOT_FOUND
012c:fixme:nvcuda:wine_cuGetProcAddress_v2 (cuD3D10ResourceGetMappedPointer, 3020, 0) The SYMBOL ADDRESS was NOT found! Returned CU_GET_PROC_ADDRESS_SYMBOL_NOT_FOUND
012c:fixme:nvcuda:wine_cuGetProcAddress_v2 (cuD3D10ResourceGetMappedSize, 3020, 0) The SYMBOL ADDRESS was NOT found! Returned CU_GET_PROC_ADDRESS_SYMBOL_NOT_FOUND
012c:fixme:nvcuda:wine_cuGetProcAddress_v2 (cuD3D10ResourceGetMappedPitch, 3020, 0) The SYMBOL ADDRESS was NOT found! Returned CU_GET_PROC_ADDRESS_SYMBOL_NOT_FOUND
012c:fixme:nvcuda:wine_cuGetProcAddress_v2 (cuD3D9GetDevices, 3020, 0) The SYMBOL ADDRESS was NOT found! Returned CU_GET_PROC_ADDRESS_SYMBOL_NOT_FOUND
012c:fixme:nvcuda:wine_cuGetProcAddress_v2 (cuD3D9CtxCreateOnDevice, 3020, 0) The SYMBOL ADDRESS was NOT found! Returned CU_GET_PROC_ADDRESS_SYMBOL_NOT_FOUND
�012c:fixme:nvcuda:wine_cuGetProcAddress_v2 (cuD3D9GetDirect3DDevice, 2000, 0) The SYMBOL ADDRESS was NOT found! Returned CU_GET_PROC_ADDRESS_SYMBOL_NOT_FOUND
012c:fixme:nvcuda:wine_cuGetProcAddress_v2 (cuD3D9RegisterResource, 2000, 0) The SYMBOL ADDRESS was NOT found! Returned CU_GET_PROC_ADDRESS_SYMBOL_NOT_FOUND
012c:fixme:nvcuda:wine_cuGetProcAddress_v2 (cuD3D9UnregisterResource, 2000, 0) The SYMBOL ADDRESS was NOT found! Returned CU_GET_PROC_ADDRESS_SYMBOL_NOT_FOUND
012c:fixme:nvcuda:wine_cuGetProcAddress_v2 (cuD3D9MapResources, 2000, 0) The SYMBOL ADDRESS was NOT found! Returned CU_GET_PROC_ADDRESS_SYMBOL_NOT_FOUND
012c:fixme:nvcuda:wine_cuGetProcAddress_v2 (cuD3D9UnmapResources, 2000, 0) The SYMBOL ADDRESS was NOT found! Returned CU_GET_PROC_ADDRESS_SYMBOL_NOT_FOUND
�012c:fixme:nvcuda:wine_cuGetProcAddress_v2 (cuD3D9ResourceSetMapFlags, 2000, 0) The SYMBOL ADDRESS was NOT found! Returned CU_GET_PROC_ADDRESS_SYMBOL_NOT_FOUND
012c:fixme:nvcuda:wine_cuGetProcAddress_v2 (cuD3D9ResourceGetSurfaceDimensions, 3020, 0) The SYMBOL ADDRESS was NOT found! Returned CU_GET_PROC_ADDRESS_SYMBOL_NOT_FOUND
012c:fixme:nvcuda:wine_cuGetProcAddress_v2 (cuD3D9ResourceGetMappedArray, 2010, 0) The SYMBOL ADDRESS was NOT found! Returned CU_GET_PROC_ADDRESS_SYMBOL_NOT_FOUND
012c:fixme:nvcuda:wine_cuGetProcAddress_v2 (cuD3D9ResourceGetMappedPointer, 3020, 0) The SYMBOL ADDRESS was NOT found! Returned CU_GET_PROC_ADDRESS_SYMBOL_NOT_FOUND
012c:fixme:nvcuda:wine_cuGetProcAddress_v2 (cuD3D9ResourceGetMappedSize, 3020, 0) The SYMBOL ADDRESS was NOT found! Returned CU_GET_PROC_ADDRESS_SYMBOL_NOT_FOUND
012c:fixme:nvcuda:wine_cuGetProcAddress_v2 (cuD3D9ResourceGetMappedPitch, 3020, 0) The SYMBOL ADDRESS was NOT found! Returned CU_GET_PROC_ADDRESS_SYMBOL_NOT_FOUND
012c:fixme:nvcuda:wine_cuGetProcAddress_v2 (cuD3D9Begin, 2000, 0) The SYMBOL ADDRESS was NOT found! Returned CU_GET_PROC_ADDRESS_SYMBOL_NOT_FOUND
012c:fixme:nvcuda:wine_cuGetProcAddress_v2 (cuD3D9RegisterVertexBuffer, 2000, 0) The SYMBOL ADDRESS was NOT found! Returned CU_GET_PROC_ADDRESS_SYMBOL_NOT_FOUND
012c:fixme:nvcuda:wine_cuGetProcAddress_v2 (cuD3D9UnregisterVertexBuffer, 2000, 0) The SYMBOL ADDRESS was NOT found! Returned CU_GET_PROC_ADDRESS_SYMBOL_NOT_FOUND
012c:fixme:nvcuda:wine_cuGetProcAddress_v2 (cuD3D9MapVertexBuffer, 3020, 0) The SYMBOL ADDRESS was NOT found! Returned CU_GET_PROC_ADDRESS_SYMBOL_NOT_FOUND
012c:fixme:nvcuda:wine_cuGetProcAddress_v2 (cuD3D9UnmapVertexBuffer, 2000, 0) The SYMBOL ADDRESS was NOT found! Returned CU_GET_PROC_ADDRESS_SYMBOL_NOT_FOUND
012c:fixme:nvcuda:wine_cuGetProcAddress_v2 (cuD3D9End, 2000, 0) The SYMBOL ADDRESS was NOT found! Returned CU_GET_PROC_ADDRESS_SYMBOL_NOT_FOUND
012c:fixme:nvcuda:wine_cuDeviceGetLuid Fix this LUID: dead0000-00000000
GPU: GPU #0 NVIDIA GeForce RTX 4090 (128x0 cores) Grid(1024x128)

结尾输出GPU信息正确,环境库已生效,ubuntu下运行exe调用GPU程序成功运行

http://www.jsqmd.com/news/46702/

相关文章:

  • macos制作可以启动的iso引导文件
  • MySQL 8.0.12 时区设置和修改
  • 676
  • 2025年主流学习机品牌差异化分析与选购指南
  • 6667
  • 2025年铁基络合剂源头厂家权威推荐榜单:铁基催化剂/络合铁脱硫催化剂/高效脱硫剂源头厂家精选
  • 记录双系统笔记本系统损坏恢复步骤
  • 学习差的孩子适合用学习机吗?有推荐的品牌吗?​ 2025年学困生专用AI学习机评估与推荐
  • 2025年AI学习机与线下补课效果对比分析
  • 写给0-1岁的初创公司合伙人(48):运气与概率——区分“赌博”与“投资”
  • 2025年PET收缩机源头厂家权威推荐榜单:PET自动收缩机/PP收缩机/PE收缩机源头厂家精选
  • FCN全卷积网络 (Fully Convolutional Network)——第一个成功地将深度学习应用于语义分割
  • 中电金信与中国金融科技的共振之路
  • 【Ai自习室创业靠谱吗,有推荐的加盟/代理品牌吗?】2025年智适应自习室创业投资深度解析
  • 成都恒利泰国产H3-TCP-2-10+ 功分器替代Mini-CircuitsTCP-2-10+
  • 宜搭在线js上点击按钮实现打印div效果
  • Boost都有哪些功能
  • 网页前端 加水印
  • CAN网关的作用到底是什么?(转载)
  • macos虚拟机-演示篇三配置clover/opencore引导
  • 2025年智适应Ai自习室市场前景与加盟投资指南
  • 题解:NFLSOI#31351. 小吃
  • xilinx在线升级+flash操作+N25Q128
  • Day23、24:2025年10月13日、14日,星期一、二,休息。
  • 【ESSC|连续三届检索】第四届教育科学与社会文化国际学术会议(ESSC 2025)
  • Day25:2025年10月15日,星期三,上班。
  • 【完结20章】AI Agent+MCP从0到1打造个人专属编程智能体
  • 2025年市场热门的河道护坡石笼网公司怎么选择,抗冲击抗腐蚀石笼网/柔韧抗压石笼网/双隔板石笼网河道护坡石笼网直销厂家有哪些
  • 2025年深圳废旧18650电池回收公司权威推荐榜单:动力18650电池回收/大量回收18650锂电池/18650电池组回收源头公司精选
  • gearman如何实现负载均衡