You need to enable JavaScript to run this app. 如何使用icc编译面向NVIDIA GPU的GPU offloading代码
优惠活动
大模型
产品
解决方案
定价
更多

如何使用icc编译面向NVIDIA GPU的GPU offloading代码

ICC 18编译适配GCC的NVIDIA GPU Offloading代码操作指南

注意:ICC 18仅支持通过OpenMP 4.5规范实现GPU卸载,若你原来的GCC代码使用的是OpenACC、GCC专属nvptx扩展等非标准OpenMP offloading语法,需要先做语法适配才能正常编译。另外ICC 18最高兼容CUDA 9.x版本,请勿使用CUDA 10及以上版本,否则会出现编译适配错误。

前置依赖配置

  • 提前安装匹配版本的CUDA工具包(推荐CUDA 9.2),将CUDA的bin目录加入PATH环境变量,lib64目录加入LD_LIBRARY_PATH环境变量
  • 配置ICC 18的运行环境,执行ICC安装路径下的bin/compilervars.sh intel64脚本完成环境变量初始化

核心编译选项

  • 启用OpenMP支持:-qopenmp(替代GCC的-fopenmp参数)
  • 指定OpenMP卸载目标为NVIDIA GPU:-qopenmp-targets=nvptx64-nvidia-cuda
  • 指定CUDA工具包安装路径:-cuda-path=<你的CUDA安装路径>,默认路径一般为/usr/local/cuda-9.2
  • (可选)指定目标NVIDIA显卡算力:-Xopenmp-target -march=sm_<算力版本号>,例如V100对应sm_70,P100对应sm_60,GTX 10系列对应sm_61
  • (可选)打印卸载调试信息:-qopenmp-offload-report,编译时会输出每个代码区域的卸载状态,方便调试

编译示例

原有GCC编译命令示例:
gcc -fopenmp -foffload=nvptx-none -O2 test.c -o test

对应ICC 18编译命令示例:
icc -qopenmp -qopenmp-targets=nvptx64-nvidia-cuda -cuda-path=/usr/local/cuda-9.2 -Xopenmp-target -march=sm_70 -O2 test.c -o test

运行注意事项

  • 运行二进制前请确认ICC运行库路径、CUDA库路径都已加入LD_LIBRARY_PATH环境变量,避免运行时找不到依赖库
  • 若出现卸载失败的运行时报错,可先添加-qopenmp-offload-report选项重新编译,检查是否有代码区域未成功被编译器识别为可卸载段

内容的提问来源于stack exchange,提问作者Suchetan B

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.21 23:06:10