Paddle
Paddle copied to clipboard
cmake编译 GPU 版本的 Paddle 出现错误 LINK : fatal error LNK1248: 映像大小(8046A000)超过允许的最大大小(80000000)
问题描述 Issue Description
根据官方文档编译2.4.2版本的GPU飞浆遇到错误
报错日志
[2720/2835] Linking CXX executable paddle\fluid\pybind\eager_legacy_op_function_generator.exe FAILED: paddle/fluid/pybind/eager_legacy_op_function_generator.exe cmd.exe /C "cd . && "C:\Program Files\CMake\bin\cmake.exe" -E vs_link_exe --intdir=paddle\fluid\pybind\CMakeFiles\eager_legacy_op_function_generator.dir --rc=C:\PROGRA~2\WI3CF2~1\10\bin\100190~1.0\x64\rc.exe --mt=C:\PROGRA~2\WI3CF2~1\10\bin\100190~1.0\x64\mt.exe --manifests -- "D:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\bin\Hostx64\x64\link.exe" /nologo @CMakeFiles\eager_legacy_op_function_generator.rsp /out:paddle\fluid\pybind\eager_legacy_op_function_generator.exe /implib:paddle\fluid\pybind\eager_legacy_op_function_generator.lib /pdb:paddle\fluid\pybind\eager_legacy_op_function_generator.pdb /version:0.0 /machine:x64 /ignore:4049 /ignore:4217 /ignore:4006 /ignore:4221 /NODEFAULTLIB:MSVCRT.LIB /INCREMENTAL:NO /subsystem:console && cd ." LINK: command "D:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\bin\Hostx64\x64\link.exe /nologo @CMakeFiles\eager_legacy_op_function_generator.rsp /out:paddle\fluid\pybind\eager_legacy_op_function_generator.exe /implib:paddle\fluid\pybind\eager_legacy_op_function_generator.lib /pdb:paddle\fluid\pybind\eager_legacy_op_function_generator.pdb /version:0.0 /machine:x64 /ignore:4049 /ignore:4217 /ignore:4006 /ignore:4221 /NODEFAULTLIB:MSVCRT.LIB /INCREMENTAL:NO /subsystem:console /MANIFEST /MANIFESTFILE:paddle\fluid\pybind\eager_legacy_op_function_generator.exe.manifest" failed (exit code 1248) with the following output: 正在创建库 paddle\fluid\pybind\eager_legacy_op_function_generator.lib 和对象 paddle\fluid\pybind\eager_legacy_op_function_generator.exp LINK : fatal error LNK1248: 映像大小(8044B000)超过允许的最大大小(80000000) [2721/2835] Linking CXX executable paddle\fluid\eager\auto_code_generator\eager_generator.exe FAILED: paddle/fluid/eager/auto_code_generator/eager_generator.exe cmd.exe /C "cd . && "C:\Program Files\CMake\bin\cmake.exe" -E vs_link_exe --intdir=paddle\fluid\eager\auto_code_generator\CMakeFiles\eager_generator.dir --rc=C:\PROGRA~2\WI3CF2~1\10\bin\100190~1.0\x64\rc.exe --mt=C:\PROGRA~2\WI3CF2~1\10\bin\100190~1.0\x64\mt.exe --manifests -- "D:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\bin\Hostx64\x64\link.exe" /nologo @CMakeFiles\eager_generator.rsp /out:paddle\fluid\eager\auto_code_generator\eager_generator.exe /implib:paddle\fluid\eager\auto_code_generator\eager_generator.lib /pdb:paddle\fluid\eager\auto_code_generator\eager_generator.pdb /version:0.0 /machine:x64 /ignore:4049 /ignore:4217 /ignore:4006 /ignore:4221 /NODEFAULTLIB:MSVCRT.LIB /INCREMENTAL:NO /subsystem:console && cd ." LINK: command "D:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\bin\Hostx64\x64\link.exe /nologo @CMakeFiles\eager_generator.rsp /out:paddle\fluid\eager\auto_code_generator\eager_generator.exe /implib:paddle\fluid\eager\auto_code_generator\eager_generator.lib /pdb:paddle\fluid\eager\auto_code_generator\eager_generator.pdb /version:0.0 /machine:x64 /ignore:4049 /ignore:4217 /ignore:4006 /ignore:4221 /NODEFAULTLIB:MSVCRT.LIB /INCREMENTAL:NO /subsystem:console /MANIFEST /MANIFESTFILE:paddle\fluid\eager\auto_code_generator\eager_generator.exe.manifest" failed (exit code 1248) with the following output: 正在创建库 paddle\fluid\eager\auto_code_generator\eager_generator.lib 和对象 paddle\fluid\eager\auto_code_generator\eager_generator.exp LINK : fatal error LNK1248: 映像大小(8046A000)超过允许的最大大小(80000000) [2722/2835] Linking CXX executable paddle\fluid\pybind\op_function_generator.exe FAILED: paddle/fluid/pybind/op_function_generator.exe cmd.exe /C "cd . && "C:\Program Files\CMake\bin\cmake.exe" -E vs_link_exe --intdir=paddle\fluid\pybind\CMakeFiles\op_function_generator.dir --rc=C:\PROGRA~2\WI3CF2~1\10\bin\100190~1.0\x64\rc.exe --mt=C:\PROGRA~2\WI3CF2~1\10\bin\100190~1.0\x64\mt.exe --manifests -- "D:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\bin\Hostx64\x64\link.exe" /nologo @CMakeFiles\op_function_generator.rsp /out:paddle\fluid\pybind\op_function_generator.exe /implib:paddle\fluid\pybind\op_function_generator.lib /pdb:paddle\fluid\pybind\op_function_generator.pdb /version:0.0 /machine:x64 /ignore:4049 /ignore:4217 /ignore:4006 /ignore:4221 /NODEFAULTLIB:MSVCRT.LIB /INCREMENTAL:NO /subsystem:console && cd ." LINK: command "D:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\bin\Hostx64\x64\link.exe /nologo @CMakeFiles\op_function_generator.rsp /out:paddle\fluid\pybind\op_function_generator.exe /implib:paddle\fluid\pybind\op_function_generator.lib /pdb:paddle\fluid\pybind\op_function_generator.pdb /version:0.0 /machine:x64 /ignore:4049 /ignore:4217 /ignore:4006 /ignore:4221 /NODEFAULTLIB:MSVCRT.LIB /INCREMENTAL:NO /subsystem:console /MANIFEST /MANIFESTFILE:paddle\fluid\pybind\op_function_generator.exe.manifest" failed (exit code 1248) with the following output: 正在创建库 paddle\fluid\pybind\op_function_generator.lib 和对象 paddle\fluid\pybind\op_function_generator.exp LINK : fatal error LNK1248: 映像大小(8044D000)超过允许的最大大小(80000000) ninja: build stopped: subcommand failed.
版本&环境信息 Version & Environment Information
Paddle version: N/A Paddle With CUDA: N/A
OS: Windows 10 GCC version: N/A Clang version: N/A CMake version: version 3.17.0 Libc version: N/A Python version: 3.8.19
CUDA version: 11.2.152 Build cuda_11.2.r11.2/compiler.29618528_0 cuDNN version: 8.2.1 Nvidia driver version: 474.82 Nvidia driver List: GPU 0: Quadro K6000
你好,这个问题可能是因为编译所有GPU架构导致包的体积偏大。查询发现你的显卡的计算能力是35 https://developer.nvidia.cn/cuda-gpus?utm_source=hacpai.com , paddle2.4.2已经要求显卡的计算能力为50及以上。你可以通过在camke 中指定 -DCUDA_ARCH_BIN=35 尝试下 。此外你也可以参考如下链接,包含有相似问题的解决方案 https://github.com/search?q=repo%3APaddlePaddle%2FPaddle+fatal+error+LNK1248&type=issues
谢谢,原因是编译时使用了-DCUDA_ARCH_NAME=All 参数编译所有GPU导致了,使用auto默认编译本地环境GPU已经可以了。