...
首页> 外文期刊>Journal of Parallel and Distributed Computing >Source level merging of independent programs
【24h】

Source level merging of independent programs

机译:独立程序的源代码级合并

获取原文
获取原文并翻译 | 示例
           

摘要

In here we describe a technique to merge at source level two (and hence more) independent C programs. Due to the independence of the programs, the merged program has more parallelism that can be extracted by the underlying compiler and CPU. Thus it is expected that the execution time of the merged program will be better than the time obtained by executing the two programs separately. The usefulness of such merging for embedded systems has been studied and demonstrated by the works of Dean and others with the Thrint compiler for merging threads at Assembly level. The main contribution of this work is an efficient algorithm for matching sub-components considering the inside structure of the sub-components and not only their execution frequency. Two novel techniques for balancing the merge of sub-components are presented:rn1. Residual loop merging (RLM) as a way to merge loops with different nesting and execution frequency levels.rn2. Using the remaining iterations formed after merging two non-equal loops (loops with different number of iterations) in future mergings of other loops.rnThese two abilities allow the proposed algorithm to simplify the matching process and overcome merging problems related to deep nested structure. We also consider the problem of merging function calls and make extensive use of cloning (and not only inlining as is the case with previous works). The final tool is the first complete system for merging C-programs at source level supporting profile and structure based matching.rnThe main use of merging is to speed up embedded systems that usually execute independent threads or processes that can potentially be merged. Our experimental results suggest that the proposed merging technique can speedup the execution of two independent programs by 10%-20% for about half of mergings that have been tested.
机译:在这里,我们描述了一种在源代码级合并两个(因此还有更多)独立的C程序的技术。由于程序的独立性,合并后的程序具有更多的并行性,可以由基础编译器和CPU提取。因此,期望合并程序的执行时间将比通过分别执行两个程序获得的时间更好。 Dean和其他人使用Thrint编译器在汇编级别合并线程的过程已经研究并证明了这种合并对于嵌入式系统的有用性。这项工作的主要贡献是一种有效的算法,该算法不仅考虑子组件的内部结构,而且还考虑了子组件的执行频率,从而匹配子组件。提出了两种用于平衡子组件合并的新颖技术:rn1。残留循环合并(RLM)作为合并具有不同嵌套和执行频率级别的循环的一种方式。使用在合并其他两个不相等的循环(迭代次数不同的循环)之后的其余循环中形成的剩余迭代。这两种功能使所提出的算法能够简化匹配过程并克服与深层嵌套结构相关的合并问题。我们还考虑了合并函数调用的问题,并广泛使用了克隆(并且不仅像以前的作品那样是内联的)。最终的工具是第一个完整的系统,用于在源级别上合并C程序,从而支持基于概要文件和结构的匹配。合并的主要用途是加快通常执行独立线程或可能被合并的进程的嵌入式系统的速度。我们的实验结果表明,对于大约一半已测试的合并,建议的合并技术可以将两个独立程序的执行速度提高10%-20%。

著录项

相似文献

  • 外文文献
  • 中文文献
  • 专利
获取原文

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号