几个编译选项的用法和意思



Linux下,我有个名叫做fft.c的C源程序,现在要编译成可执行程序,使用intel composer.于是经过了两个步骤:

1.编译目标文件

icc -c -offload-attribute-target=mic -O3 -openmp -std=c99 -DMKL_ILP64 -I/opt/intel/composer_xe_2013_sp1.1.106/mkl/include fft.c -o fft_new.o

2.连接产生可执行文件

icc fft_new.o -openmp -Wl,--start-group /opt/intel/composer_xe_2013_sp1.2.144/mkl/lib/intel64/libmkl_intel_ilp64.a /opt/intel/composer_xe_2013_sp1.2.144/mkl/lib/intel64/libmkl_intel_thread.a /opt/intel/composer_xe_2013_sp1.2.144/mkl/lib/intel64/libmkl_core.a -Wl,--end-group -Ip-offload-option,mic,compiler,"-Wl,--start-group /opt/intel/composer_xe_2013_sp1.2.144/mkl/lib/mic/libmkl_intel_ilp64.a /opt/intel/composer_xe_2013mkl/lib/mic/libmkl_intel_thread.a /opt/intel/composer_xe_2013_sp1.2.144/mkl/lib/mic/libmkl_core.a -Wl,--end-group" -o fft_new.out

  这里的东西较多,看上去比较复杂。

1.对于第一步,编译出目标文件。这里面的几个编译选项:

-O3 :表示最大可能优化级别。各种循环优化都执行了,并且各种文件级性质也用来改善性能

-openmp:采用了openmp并行编程

-std=c99:ANSI C是89年成为了标准,被ISO认证。之后99年ISO更新了新的C标准。所以-std用来指明编译的C标准。在某些情况下,如果使用GCC,可能在有冲突的时候使用其他标准,比如:-std=gnu89

-DMKL_ILP64:这个是intel提供的编译选项,主要是一个平台的指示。

-I:指定头文件目录

-o:重命名。

2.对于第二步,链接过程。其中几个编译选项:

-openmp:同上

-Wl:Wl选项告诉编译器将后面的参数传递给链接器。

--start-group 和--stop-group:库文件参数传递的开始和结束。

--offload-option,mic:使用offload方式使用协处理器进行运算。




### Vivado 增量编译使用教程 #### 启用 Incremental Compile 功能 Vivado 的增量编译(Incremental Compile)是一项用于优化设计流程的功能,尤其适用于仅对设计进行了少量修改的情况。通过重用之前的综合布局布线结果,可以显著减少整体编译时间。 在项目模式下启用增量编译时,可以在 Tcl 脚本或者 GUI 中完成配置。以下是具体的操作说明: 1. **通过 Design Runs 窗口设置** 打开 Vivado 并加载目标工程后,在左侧导航栏找到 `Design Runs` 面板。右键点击对应的运行实例(如 impl_1),选择 `Settings...` 选项。随后会弹出一个对话框,在该窗口中勾选 `Enable Incremental Implementation` 复选框即可[^2]。 2. **Tcl 脚本命令方式** 如果更倾向于脚本化操作,也可以利用以下 Tcl 命令来激活此特性: ```tcl set_property STRATEGY {Vivado Synthesis Defaults} [get_runs synth_1] set_property STEPS.WRITE_CHECKPOINT.ARGS {-force} [get_runs synth_1] set_property incremental_checkpoint <path_to_your_checkpoint> [current_run] ``` 3. **Non-Project 模式下的设置** 对于 Non-Project 工作流而言,同样支持开启增量编译机制。只需按照如下路径进入相关菜单项并调整参数值: Assignments -> Settings -> Incremental Compilation -> Rapid Recompile 设置为 ON 即可[^3]。 #### 注意事项 为了确保最佳效果以及避免潜在错误发生,请注意以下几点建议: - 设计变更应尽可能局限在一个较小范围内; - 完整保存前次成功构建所产生的 checkpoint 文件作为基础参考; - 若改动较大则不推荐继续沿用旧有数据以免影响最终质量评估指标。 ```python # 示例 Python 伪代码展示如何自动化部分过程(仅供参考) def enable_incremental_compilation(project_name, run_instance="impl_1"): tcl_commands = [ f"open_project {project_name}", f"set_property STEPS.WRITE_CHECKPOINT.ARGS {{-force}} [get_runs {run_instance}]", f"set_property incremental_checkpoint ./checkpoints/{run_instance}_incremental.dcp [current_run]", "launch_runs {}" ] with open("enable_incr.tcl", 'w') as file: for cmd in tcl_commands: print(cmd, file=file) enable_incremental_compilation("my_design.xpr") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值