Coder Social home page Coder Social logo

gcc's Introduction

This directory contains the GNU Compiler Collection (GCC).

The GNU Compiler Collection is free software.  See the files whose
names start with COPYING for copying permission.  The manuals, and
some of the runtime libraries, are under different terms; see the
individual source files for details.

The directory INSTALL contains copies of the installation information
as HTML and plain text.  The source of this information is
gcc/doc/install.texi.  The installation information includes details
of what is included in the GCC sources and what files GCC installs.

See the file gcc/doc/gcc.texi (together with other files that it
includes) for usage and porting information.  An online readable
version of the manual is in the files gcc/doc/gcc.info*.

See http://gcc.gnu.org/bugs/ for how to report bugs usefully.

Copyright years on GCC source files may be listed using range
notation, e.g., 1987-2012, indicating that every year in the range,
inclusive, is a copyrightable year that could otherwise be listed
individually.

gcc's People

Contributors

jakubjelinek avatar rguenth avatar jicama avatar jwakely avatar jsm28 avatar marxin avatar davidmalcolm avatar hjl-tools avatar ubizjak avatar tob2 avatar rsandifo-arm avatar mpolacek avatar aldyh avatar ptroja avatar urnathan avatar rorth avatar zhongjuzhe avatar iains avatar tschwinge avatar segher avatar jamborm avatar edschonberg avatar arnaudcharlet avatar hpataxisdotcom avatar rsandifo avatar vnmakarov avatar ibuclaw avatar andrewwmacleod avatar nickclifton avatar sprintersb avatar

gcc's Issues

自动向量化时实现自动地址对齐

背景

使用RISC-V Vector的指令时,如果向量访存地址未对齐到操作范围的边界(具体指一条访存指令的操作范围,而不是element,例如在VLEN=128的情况下,使用vle*访问的地址 % 16 != 0),可能在某些处理器上由于拆成了两次内存访问带来显著的性能损失。而处理器核受限于Cache的SRAM规格、后端内存序检查等复杂性限制,通过硬件实现在一些条件下并不容易。同时,向量访存指令遭遇非对齐的地址是难以避免的,例如SPECCPU 2006中的hmmer和h264均出现该现象,而常见的memcpy、卷积操作也会触发该场景。因此希望通过编译器在向量化循环开始前,对地址进行检查,并在后续的向量操作中尽可能对齐。

目标

在编译器识别出可以自动向量化的循环后,生成代码时根据地址的偏移量访存指令使得:

  1. 循环的首轮在计算的同时完成对齐操作
  2. 循环后续轮次全部生成对齐到向量访存粒度的访存指令。

需在GCC或LLVM实现该功能并提交到上游。可以仅针对RVV的unit stride实现。

难度

困难

导师

陈泱宇 [email protected]
周耀阳 [email protected]

产出要求

  • 在 GCC 或 LLVM 主线版本的自动向量化时实现自动地址对齐
  • 对正确性进行验证
  • 对性能在 gem5 或香山的模拟器上进行评估
  • 将优化提交到编译器上游的 PR / 邮件列表

能力要求

  • 熟悉 GCC 或 LLVM 编译器
  • 熟悉乱序处理器微架构
  • 熟悉 RISC-V Vector 指令集

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.