1. 入门指南
2. 使用命令行选项
3. 多核 CPU 优化
4. 使用函数内联
5. 使用 GPU
6. 使用 OpenACC
7. 使用 OpenMP
8. 使用 Stdpar
9. PCAST
10. 使用 MPI
11. 创建和使用库
12. 环境变量
13. 分发文件 - 部署
14. 跨语言调用
15. 64 位环境的编程注意事项
16. C++ 和 C 内联汇编与内联函数
NVIDIA HPC 编译器用户指南
»
目录
v25.1 |
PDF
|
存档
目录
1. 入门指南
1.1. 概述
1.2. 创建示例
1.3. 调用命令行 NVIDIA HPC 编译器
1.3.1. 命令行语法
1.3.2. 命令行选项
1.4. 文件名约定
1.4.1. 输入文件
1.4.2. 输出文件
1.5. Fortran、C++ 和 C 数据类型
1.6. 平台特定注意事项
1.6.1. 在 Linux 上使用 NVIDIA HPC 编译器
1.7. 编译器特定于站点的自定义
1.7.1. 使用 siterc 文件
1.7.2. 使用用户 rc 文件
1.8. 常用开发任务
2. 使用命令行选项
2.1. 命令行选项概述
2.1.1. 命令行选项语法
2.1.2. 命令行子选项
2.1.3. 命令行冲突选项
2.2. 命令行选项帮助
2.3. 性能入门
2.3.1. 使用 -fast
2.3.2. 其他与性能相关的选项
2.4. 常用选项
2.5. 浮点次正规数
3. 多核 CPU 优化
3.1. 优化概述
3.1.1. 局部优化
3.1.2. 全局优化
3.1.3. 循环优化:展开、向量化和并行化
3.1.4. 过程间分析 (IPA) 和优化
3.1.5. 函数内联
3.2. 优化入门
3.2.1. -help
3.2.2. -Minfo
3.2.3. -Mneginfo
3.2.4. -dryrun
3.2.5. -v
3.3. 局部和全局优化
3.3.1. -Msafeptr
3.3.2. -O
3.4. 使用 -Munroll 进行循环展开
3.5. 使用 -Mvect 进行向量化
3.5.1. 向量化子选项
3.5.2. 使用 SIMD 指令的向量化示例
3.6. 使用 -Mipa 进行过程间分析和优化
3.6.1. 构建不带 IPA 的程序 – 单步
3.6.2. 构建不带 IPA 的程序 – 多步
3.6.3. 使用 Make 构建不带 IPA 的程序
3.6.4. 构建带 IPA 的程序
3.6.5. 构建带 IPA 的程序 – 单步
3.6.6. 构建带 IPA 的程序 – 多步
3.6.7. 使用 Make 构建带 IPA 的程序
3.6.8. 关于 IPA 的问题
4. 使用函数内联
4.1. C++ 和 C 中的自动函数内联
4.2. 调用过程内联
4.3. 使用内联库
4.4. 创建内联库
4.4.1. 使用内联库
4.4.2. 依赖项
4.4.3. 更新内联库 – Makefiles
4.5. 内联期间的错误检测
4.6. 示例
4.7. 内联限制
5. 使用 GPU
5.1. 概述
5.2. 术语
5.3. 执行模型
5.3.1. 主机函数
5.4. 内存模型
5.4.1. 分离的主机和加速器内存注意事项
5.4.1.1. 加速器内存
5.4.1.2. 暂存内存缓冲区
5.4.1.3. 缓存管理
5.4.1.4. 控制设备内存管理的环境变量
5.4.2. 托管和统一内存模式
5.4.2.1. 托管内存模式
5.4.2.2. 统一内存模式
5.4.3. 内存池分配器
5.4.4. 拦截释放
5.4.5. 选择编译器内存模式的命令行选项
5.5. 设备代码中的 Fortran 指针
5.6. 在计算内核中调用例程
5.7. 支持的处理器和 GPU
5.8. CUDA 版本
5.9. 计算能力
5.10. PTX JIT 编译
6. 使用 OpenACC
6.1. OpenACC 编程模型
6.1.1. 并行级别
6.1.2. 启用 OpenACC 指令
6.1.3. OpenACC 支持
6.1.4. OpenACC 扩展
6.2. 编译 OpenACC 程序
6.2.1. -[no]acc
6.2.2. -gpu
6.3. 用于多核 CPU 的 OpenACC
6.4. 带有 CUDA 统一内存的 OpenACC
6.5. OpenACC 错误处理
6.6. OpenACC 和 CUDA 图
6.7. 主机和设备行程计数选项
6.7.1. 何时使用
-gpu=tripcount:device
或
-gpu=tripcount:host
6.8. 环境变量
6.9. 分析加速器内核
6.10. OpenACC 运行时库
6.10.1. 运行时库定义
6.10.2. 运行时库例程
6.11. 支持的内联函数
6.11.1. 支持的 Fortran 内联函数汇总表
6.11.2. 支持的 C 内联函数汇总表
7. 使用 OpenMP
7.1. 环境变量
7.2. 回退模式
7.3. 循环
7.4. OpenMP 子集
7.5. 使用 metadirective
7.6. 将目标构造映射到 CUDA 流
7.7. 非连续数组切片
7.8. 带有 CUDA 统一内存的 OpenMP
7.9. 多设备支持
7.10. 与 CUDA 的互操作性
7.11. 与其他 OpenMP 编译器的互操作性
7.12. GNU STL
8. 使用 Stdpar
8.1. GPU 内存模式
8.2. Stdpar C++
8.2.1. Stdpar C++ 简介
8.2.2. NVC++ 编译器并行算法支持
8.2.2.1. 使用 -stdpar 选项启用并行算法
8.2.3. Stdpar C++ 简单示例
8.2.4. 并行算法的 OpenACC 实现
8.2.5. GPU 加速并行算法的编码指南
8.2.5.1. 并行算法和设备函数注释
8.2.5.2. 并行算法中的数据管理
8.2.5.3. 并行算法和函数指针
8.2.5.4. 随机访问迭代器
8.2.5.5. 与 C++ 标准库的互操作性
8.2.5.6. GPU 代码中无异常
8.2.6. NVC++ 实验性功能
8.2.6.1. 多维跨度
8.2.6.2. 发送器和接收器
8.2.6.3. 线性代数
8.2.7. Stdpar C++ 更大示例:LULESH
8.2.8. 与 OpenACC 的互操作性
8.2.8.1. 数据管理指令
8.2.8.2. 外部设备函数注释
8.2.9. GPU 并行算法入门
8.2.9.1. 支持的 NVIDIA GPU
8.2.9.2. 支持的 CUDA 版本
8.3. Stdpar Fortran
8.3.1. 在 GPU 上调用 DO CONCURRENT 中的例程
8.3.2. GPU 数据管理
8.3.3. 与 OpenACC 的互操作性
8.3.4. 与 CUDA Fortran 的互操作性
9. PCAST
9.1. 概述
9.2. 带有“黄金”文件的 PCAST
9.3. 带有 OpenACC 的 PCAST
9.4. 限制
9.5. 环境变量
10. 使用 MPI
10.1. 在 Linux 上使用 Open MPI
10.2. 使用 MPI 编译器包装器
10.3. 测试和基准测试
11. 创建和使用库
11.1. 在 C++ 和 C 中使用内置数学函数
11.2. 使用系统库例程
11.3. 在 Linux 上创建和使用共享对象文件
11.3.1. 创建和使用共享对象文件的过程
11.3.2. ldd 命令
11.4. 使用 LIB3F
11.5. LAPACK、BLAS 和 FFT
11.6. 与 ScaLAPACK 链接
11.7. C++ 标准模板库
11.8. NVIDIA 性能库 (NVPL)
11.9. 与 nvmalloc 库链接
12. 环境变量
12.1. 设置环境变量
12.1.1. 在 Linux 上设置环境变量
12.2. HPC 编译器相关环境变量
12.3. HPC 编译器环境变量
12.3.1. FORTRANOPT
12.3.2. FORT_FMT_RECL
12.3.3. GMON_OUT_PREFIX
12.3.4. LD_LIBRARY_PATH
12.3.5. MANPATH
12.3.6. NO_STOP_MESSAGE
12.3.7. PATH
12.3.8. NVCOMPILER_FPU_STATE
12.3.9. NVCOMPILER_TERM
12.3.10. NVCOMPILER_TERM_DEBUG
12.3.11. PWD
12.3.12. STATIC_RANDOM_SEED
12.3.13. TMP
12.3.14. TMPDIR
12.4. 在 Linux 上使用 Environment Modules
12.5. 堆栈回溯和 JIT 调试
13. 分发文件 - 部署
13.1. 在 Linux 上部署应用程序
13.1.1. 运行时库注意事项
13.1.2. 64 位 Linux 注意事项
13.1.3. Linux 可再发行文件
13.1.4. Linux 可移植性的限制
13.1.5. 可再发行 (REDIST) 文件的许可
14. 跨语言调用
14.1. 调用约定概述
14.2. 跨语言调用注意事项
14.3. 函数和子例程
14.4. 大写和小写约定、下划线
14.5. 兼容的数据类型
14.5.1. Fortran 命名公共块
14.6. 参数传递和返回值
14.6.1. 按值传递 (%VAL)
14.6.2. 字符返回值
14.6.3. 复数返回值
14.7. 数组索引
14.8. 示例
14.8.1. 示例 – Fortran 调用 C
14.8.2. 示例 - C 调用 Fortran
14.8.3. 示例 – C++ 调用 C
14.8.4. 示例 – C 调用 C ++
14.8.5. 示例 – Fortran 调用 C++
14.8.6. 示例 – C++ 调用 Fortran
15. 64 位环境的编程注意事项
15.1. 64 位环境中的数据类型
15.1.1. C++ 和 C 数据类型
15.1.2. Fortran 数据类型
15.2. Linux 中的大型静态数据
15.3. 大型动态分配数据
15.4. 64 位数组索引
15.5. 64 位编程的编译器选项
15.6. 大型数组编程的实际限制
15.7. C 中的中等内存模型和大型数组
15.8. Fortran 中的中等内存模型和大型数组
15.9. Fortran 中的大型数组和小内存模型
16. C++ 和 C 内联汇编与内联函数
16.1. 内联汇编
16.2. 扩展内联汇编
16.2.1. 输出操作数
16.2.2. 输入操作数
16.2.3. 损坏列表
16.2.4. 附加约束
16.2.5. 简单约束
16.2.6. 机器约束
16.2.7. 多重备选约束
16.2.8. 约束修饰符
16.3. 操作数别名
16.4. 汇编字符串修饰符
16.5. 扩展 Asm 宏
16.6. 内联函数