Advanced Fruits问题

Advanced Fruits(hdu 1503)问题

问题描述:

The company “21st Century Fruits” has specialized in creating new sorts of fruits by transferring genes from one fruit into the genome of another one. Most times this method doesn’t work, but sometimes, in very rare cases, a new fruit emerges that tastes like a mixture between both of them.

A big topic of discussion inside the company is “How should the new creations be called?” A mixture between an apple and a pear could be called an apple-pear, of course, but this doesn’t sound very interesting. The boss finally decides to use the shortest string that contains both names of the original fruits as sub-strings as the new name. For instance, “applear” contains “apple” and “pear” (APPLEar and apPlEAR), and there is no shorter string that has the same property.

A combination of a cranberry and a boysenberry would therefore be called a “boysecranberry” or a “craboysenberry”, for example.

Your job is to write a program that computes such a shortest name for a combination of two given fruits. Your algorithm should be efficient, otherwise it is unlikely that it will execute in the alloted time for long fruit names.

阅读更多...

Dire wolves问题

Dire wolves问题

问题描述:

Dire wolves, also known as Dark wolves, are extraordinarily large and powerful wolves. Many, if not all, Dire Wolves appear to originate from Draenor.

Dire wolves look like normal wolves, but these creatures are of nearly twice the size. These powerful beasts, 8 - 9 feet long and weighing 600 - 800 pounds, are the most well-known orc mounts. As tall as a man, these great wolves have long tusked jaws that look like they could snap an iron bar. They have burning red eyes. Dire wolves are mottled gray or black in color. Dire wolves thrive in the northern regions of Kalimdor and in Mulgore.

Dire wolves are efficient pack hunters that kill anything they catch. They prefer to attack in packs, surrounding and flanking a foe when they can.

— Wowpedia, Your wiki guide to the World of Warcra

阅读更多...

文献阅读04-多面体抽象语法树的生成不仅仅是扫描多面体

[文献阅读04]-多面体抽象语法树的生成不仅仅是扫描多面体

题目: Polyhedral AST Generation Is More Than Scanning Polyhedra

​ 多面体的抽象语法树生成比代码生成更重要

​ 多面体抽象语法树的生成不仅仅是扫描多面体

作者:Tobias Grosser ,Sven Verdoolaege, Albert Cohen

所在学校: 巴黎高等师范学校 École Normale Supérieure Paris

所在实验室:INRIA 法国国家信息与自动化研究所(或称法国国立计算机及自动化研究院)

发表期刊:ACM Transactions on Programming Languages and Systems

摘要:

诸如整数多面体之类的抽象数学表示已被证明对精确分析计算内核和表示复杂的循环变换很有用。这种转换依靠抽象语法树(AST)生成器将数学表示形式转换回命令式程序。这种通用AST生成器避免了求助于特定于转换的代码生成器的需要,随着转换变得越来越复杂,开发这种代码生成器可能会非常昂贵,或者在技术上非常困难。现有的AST发生器已经证明了其有效性,但是在更复杂的情况下却受到限制。具体来说,(1)它们不支持或可能无法使用涉及模算术的分段调度或映射来生成复杂转换的控制流;(2)它们对生成专业化的代码提供有限的支持,这些代码公开了紧凑,直线,可矢量化的内核,这些内核具有开发现代硬件的最佳性能所必需的高算术强度; (3)它们不支持内存局部变换(no support for memory layout transformations); (4)它们无法充分控制AST生成策略,从而无法将其应用于复杂的特定领域优化。

我们提出了一种新的AST生成方法,该方法将经典的多面体扫描扩展到皮尔斯伯格算术(Presburger arithmetic)的全部通用性,包括其中存在的量化变量和分段调度,并介绍了用于检测组件(检测分量)和移动步幅的新优化方法。不局限于控制流的生成,我们公开了从任意分段的拟仿射表达式生成抽象语法树(AST)表达式的功能,从而可以将抽象语法树(AST)生成器用于数据局部变换。我们通过多面体展开,用户控制的版本控制以及根据AST表达式的位置对AST生成进行特殊化的支持来对此进行补充,并通过对所用AST生成策略进行细粒度用户控制来完成这项工作。利用这种AST生成的一般化思想,我们介绍了如何实现复杂的特定域的转换,而无需编写专用的代码生成器,而是依靠参数化到特定问题域的通用AST生成器。

类别和主题描述符: D.3.4(编程语言):处理器;—编译器,优化

一般术语:算法,性能

额外的关键字和短语:多面体编译,代码生成,展开,索引集分裂,皮尔斯伯格(Presburger)关系

阅读更多...

文献阅读03-模板计算的有效自动并行化

[文献阅读03]-模板计算的有效自动并行化

题目:Effective Automatic Parallelization of Stencil Computations

​ 模板计算的有效自动并行化

作者:Sriram Krishnamoorthy , Muthu Baskaran , Uday Bondhugula , J. Ramanujam , Atanas Rountev , P Sadayappan

​ 俄亥俄州立大学计算机科学与工程系

​ 路易斯安那州立大学电子与计算机工程学系计算与技术中心

摘要:模版计算的性能优化已在文献中得到广泛研究,因为它们出现在许多计算密集型的科学和工程应用中。还开发了可以转换顺序模板代码以优化数据局部性和并行性的编译器框架。但是,通常需要循环倾斜才能沿时间维度分块模板代码,从而导致分块流水线并行执行中的负载不均衡。在本文中,我们开发了一种模板代码自动并行化的方法,该方法明确解决了分块过程的负载均衡执行问题。提供的实验结果证明了该方法的有效性。

关键词:模板计算,分块,自动并行化,负载均衡

1.介绍

​ 模板计算是许多科学/工程代码中出现的一类非常重要的计算。涉及模板的计算领域包括那些使用显式时间积分方法计算偏微分方程数值解的领域(例如,气候/天气/海洋建模,使用有限差分时域方法的计算电磁学代码),以及执行平滑和其他基于相邻像素的计算的多媒体/图像处理应用。计算机科学领域已经有一些解决模板计算性能优化的前期工作(例如[24,19,18,10])。由于模板计算的特点是有一个规则的计算结构,它们可以进行自动编译时分析和转换,以优化并行性利用和数据局部性。然而,正如稍后通过一个例子所阐述的,现有的编译器框架在生成针对并行性和数据局部性进行优化的高效代码方面存在局限性。

阅读更多...

文献阅读02-在多面体模型中生成代码比你想象的要容易

[论文阅读]-在多面体模型中生成代码比你想象的要容易

论文题目:Code Generation in the Polyhedral Model Is Easier Than You Think

在多面体模型中生成代码比你想象的要容易

摘要:多面体模型在自动并行化和优化方面取得了许多进展。广泛的研究表明,该计算模型为推理和应用程序转换提供了方便的抽象。然而,代码生成的复杂性一直是在优化编译器时使用多面体表示的一个障碍。首先,代码生成器很难处理生成的代码大小和控制开销,这可能会破坏转换所获得的理论上的好处。其次,这一步骤通常是耗时的,阻碍了在生产编译器中集成多面体框架或基于反馈的迭代优化方案。此外,当前的代码生成算法只覆盖了有限的可能转换函数集。本文讨论了处理非幺模、非可逆、非积分甚至非一致函数的一般变换框架,并提出了对最先进的代码生成算法的几个改进。研究了两个方向:生成代码的大小和代码生成器的效率。实验证明,改进后的方法能够处理实际问题。

1.介绍

​ 通常的编译器中间表示(如抽象语法树)不适用于复杂的程序重构。简单的优化,例如常数折叠或标量替换可以实现,而不需要对这种刚性数据结构进行艰难的修改。但更复杂的转换,如循环反转、倾斜、平铺等,会修改执行顺序,这与语法相去甚远。一个基于程序和转换的线性代数表示的模型出现在80年代,以解决这个问题:多面体(或多面体)模型。

阅读更多...

文献阅读01-基于多面体模型的编译黑魔法

[论文阅读01]-基于多面体模型的编译“黑魔法”

摘要:多面体模型具备应用范围广、表示能力强、优化空间大等优点,代表了程序自动并行化领域众多方向最先进的水平,成为国际上多个编译研发团队的研究热点;同时,多面体模型抽象程度高、实现难度大、面临问题多的特征,阻碍了基于该模型的编译技术在发展相对滞后地区的普及.

本篇首先描述了多面体模型的原理,揭示了基于多面体模型的编译流程,并指出了该领域的主要研究内容;接下来,从程序并行性、数据局部性和其他领域上的扩展应用这3 个方面对该领域上的研究进展进行了介绍;最后,对该研究领域当前面临的挑战和潜在的研究方向进行了总结.

多面体发展的背景:

多核架构下编译程序不仅要考虑如何发掘程序的并行性,而且还要考虑如何提升程序的数据局部性。程序开发人员还要越过处理器厂商设计的编程模型“门槛”。这些因素导致了并行应用程序的开发远远落后于处理器架构发展的这一事实,自动并行化工具是在多核架构上开发并行应用程序的一种行之有效但非常具有挑战性的方法,这种方法通过将串行程序自动转换为并行程序,能够让应用程序开发人员从复杂的并行代码编写任务中解脱出来,因此受到了广泛的关注。

阅读更多...

2020考研-个人经验分享

一、前言

下面都是个人的一些考研经验,给各位读者做个参考,不喜勿喷,谢谢。

1. 考研期间的心态问题

个人认为考研不仅仅是一场选拔性考试,更是一场心理承受能力上的角逐。就个人而言,我数学考试时,直接错把高数第四道大题的答案写到了答题卡第三道大题的位置,我考试时的心态可想而知。鉴于上述经历,所以,我想把这个放在最开始。

首先,我想先和大家分享下何凯文老师对于自信的解释。他说:“自信不是你相信自己在某一件事情上一定能够成功,而是你坚信自己选择的路是正确的”。我觉得这句话真的很适合考研这件事情,没有人在考试之前,就可以做到坚信自己一定能够上岸。所以,如果你觉得考研的选择是对的,可以让你实现你的梦想,可以让你以后挣更多的钱,那么你就是一个自信的人,至少,在考研这件事情上,你可以说我有自信。

阅读更多...

请我喝杯咖啡吧~

支付宝
微信