Documentation Home
> Sun Studio 12:Fortran 编程指南
Sun Studio 12:Fortran 编程指南
Book Information
索引
数字和符号
A
B
C
D
F
G
I
L
M
N
O
P
S
T
U
V
X
Y
Z
版
帮
绑
保
被
编
变
标
别
并
捕
不
参
程
抽
初
纯
错
打
大
单
等
递
调
动
读
度
断
段
对
多
二
反
非
分
浮
公
功
共
过
函
宏
环
换
回
霍
计
监
间
建
接
静
可
库
跨
扩
类
链
列
流
逻
命
目
内
平
求
区
全
上
舍
实
时
事
收
手
受
输
数
顺
随
条
突
外
位
未
文
系
下
显
线
写
信
性
修
选
循
疑
移
已
异
易
溢
印
映
用
优
语
预
源
约
运
展
栈
直
指
子
自
前言
第 1 章 简介
1.1 标准一致性
1.2 Fortran 95 编译器的功能
1.3 其他 Fortran 实用程序
1.4 调试实用程序
1.5 Sun 性能库
1.6 区间运算
1.7 手册页
1.8 自述文件
1.9 命令行帮助
第 2 章 Fortran 输入/输出
2.1 从 Fortran 程序内部访问文件
2.1.1 访问命名文件
2.1.2 不用文件名打开文件
2.1.2.1 打开作为临时文件
2.1.2.2 已打开
2.1.2.3 预连接或隐式命名单元
2.1.3 不使用 OPEN 语句打开文件
2.1.4 向程序传递文件名
2.1.4.1 通过运行时参数和 GETARG
2.1.4.2 通过环境变量和 GETENV
2.1.4.3 命令行 I/O 重定向和管道
2.2 直接 I/O
2.3 二进制 I/O
2.4 流 I/O
2.5 内部文件
2.6 大端字节序和小端字节序平台之间的二进制 I/O
2.7 传统 I/O 注意事项
第 3 章 程序开发
3.1 使用 make 实用程序简化程序构建
3.1.1 Makefile
3.1.2 make 命令
3.1.3 宏
3.1.4 覆盖宏值
3.1.5 make 中的后缀规则
3.1.6 .KEEP_STATE 与特殊依赖性检查
3.2 用 SCCS 进行版本跟踪和控制
3.2.1 用 SCCS 控制文件
3.2.1.1 创建 SCCS 目录
3.2.1.2 插入 SCCS ID 关键字
3.2.1.3 创建 SCCS 文件
3.2.2 签出和签入文件
第 4 章 库
4.1 认识库
4.2 指定链接程序调试选项
4.2.1 生成加载映射
4.2.2 列出其他信息
4.2.3 一致编译和链接
4.3 设置库搜索路径和顺序
4.3.1 标准库路径的搜索顺序
4.3.1.1 静态链接
4.3.1.2 动态链接
4.3.2 LD_LIBRARY_PATH 环境变量
4.3.3 库搜索路径和顺序-静态链接
4.3.3.1 -l library 选项的命令行顺序
4.3.3.2 -Ldir 选项的命令行顺序
4.3.4 库搜索路径和顺序-动态链接
4.3.4.1 在生成时指定动态库
4.3.4.2 在运行时指定动态库
4.3.4.3 修复动态链接期间的错误
4.4 创建静态库
4.4.1 权衡静态库
4.4.2 简单静态库的创建
4.4.2.1 静态库中的替换
4.4.2.2 对静态库中的例程进行排序
4.5 创建动态库
4.5.1 权衡动态库
4.5.2 位置无关代码和 –xcode
4.5.3 绑定选项
4.5.3.1 –Bdynamic | -Bstatic
4.5.3.2 –dy | -dn
4.5.3.3 64 位环境中的绑定
4.5.4 命名惯例
4.5.5 一个简单动态库
4.5.6 初始化公共块
4.6 随 Sun Fortran 编译器提供的库
4.7 可发送库
第 5 章 程序分析和调试
5.1 全局程序检查 (-Xlist)
5.1.1 GPC 概述
5.1.2 如何调用全局程序检查
5.1.2.1 屏幕输出
5.1.2.2 缺省输出功能
5.1.2.3 文件类型
5.1.3 -Xlist 和全局程序检查的一些示例
5.1.4 跨例程全局检查的子选项
5.1.4.1 子选项语法
5.1.4.2 -Xlist 及其子选项
5.2 特殊编译器选项
5.2.1 下标边界 (–C)
5.2.2 未声明的变量类型 (–u)
5.2.3 编译器版本检查 (–V)
5.3 使用 dbx 调试
第 6 章 浮点运算
6.1 简介
6.2 IEEE 浮点运算
6.2.1 –ftrap=mode 编译器选项
6.2.2 浮点异常
6.2.2.1 回顾性摘要
6.2.3 处理异常
6.2.4 捕获浮点异常
6.2.5 非标准运算
6.3 IEEE 例程
6.3.1 标志和 ieee_flags()
6.3.1.1 用 ieee_flags 关闭所有警告消息。
6.3.1.2 用 ieee_flags 检测异常
6.3.2 IEEE 极值函数
6.3.3 异常处理程序和 ieee_handler()
6.3.3.1 建立异常处理程序函数
6.3.3.2 编写用户异常处理程序函数
通过处理程序检测异常
通过处理程序定位异常
6.4 调试 IEEE 异常
6.5 更深层次的数值风险
6.5.1 避免简单下溢
6.5.2 以错误答案继续
6.5.3 过度下溢
6.6 区间运算
第 7 章 移植
7.1 回车控制
7.2 使用文件
7.3 从科学大型机移植
7.4 数据表示
7.5 霍尔瑞斯数据
7.6 非标准编码措施
7.6.1 未初始化的变量
7.6.2 别名使用和 -xalias 选项
7.6.2.1 通过伪参数和全局变量别名使用
7.6.2.2 随 Cray 指针带来的别名使用
7.6.2.3 随 Fortran 95 指针带来的别名使用
7.6.2.4 由索引越界造成的别名使用
7.6.2.5 由实际参数造成的别名使用
7.6.2.6 -xalias 缺省设置
7.6.3 模糊优化
7.6.3.1 条状提取
7.6.3.2 循环展开
7.7 时间和日期函数
7.8 疑难解答
7.8.1 结果贴近,但不够贴近
7.8.2 程序失败而不警告
第 8 章 性能剖析
8.1 Sun Studio 性能分析器
8.2 time 命令
8.2.1 对 time 输出的多处理器解释
8.3 tcov 剖析命令
8.3.1 增强的 tcov 分析
第 9 章 性能与优化
9.1 编译器选项的选择
9.1.1 性能选项
9.1.1.1 -fast
9.1.1.2 -On
9.1.1.3 PRAGMA OPT=n
9.1.1.4 利用运行时配置文件反馈信息进行优化
9.1.1.5 -dalign
9.1.1.6 -depend
9.1.1.7 -fsimple=2
9.1.1.8 -unroll=n
9.1.1.9 -xtarget=platform
UltraSPARC-III 和 UltraSPARC-IV 支持
64 位 x86 平台支持
9.1.1.10 使用 -xipo 进行过程间优化
9.1.1.11 添加 PRAGMA ASSUME 断言
9.1.2 其他性能策略
9.1.3 使用已优化的库
9.1.4 消除性能抑制因素
9.1.4.1 删除关键循环中的 I/O
9.1.4.2 消除子程序调用
9.1.4.3 合理化杂乱代码
9.1.5 查看编译器注释
9.2 进阶读物
第 10 章 并行化
10.1 基本概念
10.1.1 加速-期望目标
10.1.2 程序并行化步骤
10.1.3 数据依赖性问题
10.1.3.1 依赖于数据的循环
10.1.3.2 递归
10.1.3.3 约简
10.1.3.4 间接寻址
10.1.4 编译以实现并行化
10.1.5 线程数
10.1.6 栈、栈大小和并行化
10.2 自动并行化
10.2.1 循环并行化
10.2.2 数组、标量和纯标量
10.2.3 自动并行化标准
10.2.3.1 直观依赖性
10.2.3.2 自动并行化抑制因素
10.2.3.3 嵌套循环
10.2.4 具有约简操作的自动并行化
10.2.4.1 识别的约简操作
10.2.4.2 数值准确性和约简操作
10.3 显式并行化
10.3.1 可并行化的循环
10.3.1.1 作用域规则:专用和共享
10.3.1.2 循环中的子程序调用
10.3.1.3 显式并行化抑制因素
10.3.1.4 显式并行化时的 I/O
10.3.2 OpenMP 并行化指令
10.4 环境变量
10.5 调试并行化的程序
10.5.1 调试时的首要步骤
10.6 进阶读物
第 11 章 C-Fortran 接口
11.1 兼容性问题
11.1.1 函数还是子例程?
11.1.2 数据类型的兼容性
11.1.3 大小写敏感性
11.1.4 例程名中的下划线
11.1.5 按引用或值传递参数
11.1.6 参数顺序
11.1.7 数组索引和顺序
11.1.7.1 数组索引
11.1.7.2 数组顺序
11.1.8 文件描述符和 stdio
11.1.9 库与使用 f95 命令链接
11.2 Fortran 初始化例程
11.3 按引用传递数据参数
11.3.1 简单数据类型
11.3.2 COMPLEX 数据
11.3.3 字符串
11.3.4 一维数组
11.3.5 二维数组
11.3.6 结构
11.3.7 指针
11.4 按值传递数据参数
11.5 返回值的函数
11.5.1 返回简单数据类型
11.5.2 返回 COMPLEX 数据
11.5.2.1 32 位平台
11.5.2.2 64 位 SPARC 平台
11.5.3 返回 CHARACTER 串
11.6 带标号的 COMMON
11.7 在 Fortran 与 C 之间共享 I/O
11.8 交替返回
11.9 Fortran 2003 与 C 的互操作性
© 2010, Oracle Corporation and/or its affiliates