康奈尔大学 CS 6120 高级编译器自主在线课程:聚焦编程语言实现!

【课程资源】

CS 6120 课程有丰富的资源链接,包括 课程主页课程表教学大纲课程内容Zulip 交流平台讨论区博客

【课程介绍】

CS 6120 是康奈尔大学计算机科学系(Cornell CS)由 Adrian Sampson 讲授的博士级课程,聚焦于编程语言实现。课程涵盖通用编译器主题,如中间表示、数据流和“经典”优化,也涉及更具研究性的主题,如并行化、即时编译和垃圾回收。课程学习包括阅读论文和开源编程任务,使用 LLVM专门为该课程设计的教育性中间表示(IR)

本页面列出了在想象中的大学学习该课程的课程安排,可获得四个想象学分(无评分)。课程有一个线性的时间线,穿插着需要阅读的论文。每节课都有视频和文字笔记,部分课程还有需要完成的 _实现任务_。这些任务或多或少都是开放性的,旨在通过将抽象概念转化为实际代码,巩固对这些概念的理解。课程顺序是观看视频和阅读论文的建议安排。

与“真实”的 CS 6120 课程相比,自主学习版本可以忽略任务截止日期,也无法参与 Zulip 上的讨论线程。真实的 CS 6120 课程在学期末还有一个课程项目,而在自主学习版本中,学期末的任务是通过编译器的魔力改变世界。

由于授课教师是视频制作新手,请谅解视频的制作质量,尤其是早期课程的视频。CS 6120 课程是 开源的,可在 GitHub 上查看,如果发现问题,请提交 bug 报告。完成课程后,请填写 这份反馈表

【课程详情】

第 1 课:欢迎与概述

包含 视频,需阅读 《在未明显出错的情况下产生错误数据!》(Todd Mytkowicz、Amer Diwan、Matthias Hauswirth 和 Peter F. Sweeney 著,发表于 2009 年 ASPLOS 会议)以及 SIGPLAN 实证评估指南

第 2 课:程序表示

程序表示视频Bril 入门视频

第 3 课:局部分析与优化

包含 简单的死代码消除视频局部值编号视频

第 4 课:数据流

数据流视频实现任务视频

第 5 课:全局分析

包含 全局分析与优化视频,需阅读 《高效路径分析》(Thomas Ball 和 James R. Larus 著,发表于 1996 年 MICRO 会议)。

第 6 课:静态单赋值

静态单赋值视频,需阅读 《使用 Alive 实现可证明正确的窥孔优化》(Nuno P. Lopes、David Menendez、Santosh Nagarakatte 和 John Regehr 著,发表于 2015 年 PLDI 会议)。

第 7 课:LLVM

包含 LLVM 简介视频编写 LLVM 通行证视频

第 8 课:循环优化

视频

第 9 课:过程间分析

视频,需阅读 《基于类型的别名分析》(Amer Diwan、Kathryn S. McKinley 和 J. Eliot B. Moss 著)。

第 10 课:别名分析

视频,需阅读 《统一的垃圾回收理论》(David F. Bacon、Perry Cheng 和 V. T. Rajan 著,发表于 2004 年 OOPSLA 会议)以及 《快速保守的垃圾回收》(Rifat Shahriyar、Stephen M. Blackburn 和 Kathryn S. McKinley 著,发表于 2014 年 OOPSLA 会议)。

第 11 课:内存管理

视频,需阅读 《SELF:一种基于原型的动态类型面向对象语言的高效实现》(C. Chambers、D. Ungar 和 E. Lee 著,发表于 1989 年 OOPSLA 会议)以及 《动态语言基于跟踪的即时类型特化》(Andreas Gal、Brendan Eich、Mike Shaver 等著,发表于 2009 年 PLDI 会议)。

第 12 课:动态编译器

包含 动态编译器视频通过推测进行跟踪视频,需阅读 《超级优化器:最小程序的研究》(Alexia Massalin 著,发表于 1987 年 ASPLOS 会议)以及 《叶绿素:面向低功耗空间架构的合成辅助编译器》(Phitchaya Mangpo Phothilimthana、Tikhon Jelvis、Rohin Shah 等著,发表于 2014 年 PLDI 会议)。

第 13 课:并发与并行

视频,需阅读 《线程不能作为库实现》(Hans - J. Boehm 著,发表于 2005 年 PLDI 会议)、《利用多媒体指令集挖掘超字级并行性》(Samuel Larsen 和 Saman Amarasinghe 著,发表于 2000 年 PLDI 会议)、《确定性并行 Java 的类型与效果系统》(Robert L. Bocchino、Vikram S. Adve、Danny Dig 等著,发表于 2009 年 OOPSLA 会议)以及 《现实编译器的形式验证》(Xavier Leroy 著,发表于 2009 年 CACM 期刊)。

第 14 课:快速编译器

暂未提及更多详细内容。

康奈尔大学 官网 —— 计算机科学系

提醒各位,若参与该自主在线课程学习,要注意视频制作质量问题,完成课程后记得填写反馈表。

「LLM那些事」系列第 4 篇《上下文窗口的边界》,文章连接:https://blog.csdn.net/houwenjin/article/details/163999753。 演示什么:在「预测」Sheet 的黄色格子里输入一句话(默认「来泡一杯」),四个「模型」——分别只统计最后 1 / 2 / 3 / 4 个字的 n-gram 查表——同时预测下一个字。同一个输入,看的上下文越长,候选越少、预测越确定: ┌────────────────┬──────────┬───────────────┬──────┐ │ 只看最后几个字 │ 用的前缀 │ 候选下一字数 │ 预测 │ ├────────────────┼──────────┼───────────────┼──────┤ │ 1 个 │ 杯 │ 3(茶/子/水) │ 模糊 │ ├────────────────┼──────────┼───────────────┼──────┤ │ 2 个 │ 一杯 │ 2(茶/水) │ 收窄 │ ├────────────────┼──────────┼───────────────┼──────┤ │ 3 个 │ 泡一杯 │ 1(茶) │ 确定 │ ├────────────────┼──────────┼───────────────┼──────┤ │ 4 个 │ 来泡一杯 │ 1(茶) │ 确定 │ └────────────────┴──────────┴───────────────┴──────┘
源码下载地址: https://pan.quark.cn/s/a4b39357ea24 笔记本的散热风扇管理 ---------------------------------------- 09 November 2006. 对于版本20061109的变更概述如下: 1) ACPI CA核心子系统:在源操作数是一个操作区域的场景下,对负载ASL操作符进行了优化。仅需映射操作区域内存,而不是执行逐字节读取。 (区域必须为SystemMemory类型,见下文。)修正了源操作数为区域字段的负载ASL操作符问题。也允许缓冲区对象作为源操作数。 BZ 480 解决了负载ASL操作符允许源操作数为任意类型操作区域的问题。现被限制为仅SystemMemory类型的区域,符合ACPI规范。 BZ 481 对新表管理器代码进行了额外的清理和优化。AcpiEnable将在所有必需的ACPI表未加载时失败(FADT, FACS, DSDT)。 BZ 477 在acobject.h中添加了#pragma pack(8/4),以确保此头文件中的结构始终编译为对齐。ACPI_OPERAND_OBJECT已被手动优化为对齐,并在字节打包时无法工作。示例代码和数据大小:这些是Microsoft Visual C++ 6.0 32位编译器生成的、与操作系统无关的acpica.lib的大小。调试版本的代码包含调试输出跟踪机制,具有更大的代码和数据大小。上一个版本:非调试版本:78.1K代码,17.1K数据,95.2K总计 调试版本:155.4K代码,63.1K数据,218.5K总计 当前版本:非调试版本:77.9K代码,17.0K数据,94.9K总计 调试版本:155.2K代码,63.1K数据,...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值