编程语言与软件工程2016research.google.com
GPUCC——一个开源 GPGPU 编译器
GPUCC – An Open-Source GPGPU Compiler
进阶 · 约 45 分钟读完前置知识:编译原理、CUDA/GPU 编程、LLVM 基础
导读
GPUCC 是 Google 开源的一个 GPGPU 编译器,论文介绍其设计与实现,目标是无需依赖 NVIDIA 专有的 NVCC 即可编译 CUDA/GPU 代码。评论区指出该编译器后来已并入 LLVM 主干,将随 LLVM 3.9 发布。
HN 关注点:因为这是 Google 内部使用的编译器,且与 TensorFlow 早期性能问题、LLVM 生态以及 CUDA 闭源工具链的替代方案密切相关。
后来怎么样
GPUCC 的实现后来进入 LLVM 主干(LLVM 3.9),成为 Clang/LLVM 编译 CUDA 代码的重要基础,提供了一条不依赖 NVCC 的开源 GPGPU 编译路径。
HN 评论精选
这几条评论里:质疑 1 补充 3
补充TensorFlow 早期的性能问题只在 NVCC 下暴露,因为 Google 内部用的是 GPUCC。
我不太了解这方面(不是我的专业领域),但我觉得这个 G+ 帖子很有意思:帖子说 TensorFlow 初期性能落后的很大一部分原因是,很多性能问题只有在 NVCC 下才会暴露,而他们内部一直用的是 GPUCC。
haberman查看英文原文
I don't know much about this (it's not my area of expertise), but I thought this G+ post was interesting: https://plus.google.com/u/0/+VincentVanhoucke/posts/6RQmgqcmx2d It says that a lot of the reason TensorFlow initially lagged in performance is because a lot of those performance issues only manifested under NVCC, whereas they had been using GPUCC internally.
补充GPUCC 已并入 LLVM 主干,将随 3.9 发布。
这现在已经是 LLVM trunk 的一部分了(即将发布的 3.9 版本)。
namtrac查看英文原文
This is part of llvm trunk (upcoming 3.9 release) now: http://llvm.org/docs/CompileCudaWithLLVM.html
补充论文作者 Eli Bendersky 的 C++ 网站资源丰富、值得一读。
我看到论文作者里有 Eli Bendersky 的名字;他的网站有很多有趣的 C++ 文章,其中一些我还认真打印出来贴进了我的“真正有用的东西”笔记本。如果你是 C++ 程序员,那里有很多值得一读的内容。我在存档里没看到具体讲这个的,但也许值得期待。
EliRivers查看英文原文
I see Eli Bendersky's name on this; his site ( http://eli.thegreenplace.net/ ) has a number of interesting C++ articles, some of which I've even carefully printed out and taped into my notebook of really useful things. If you're a C++ programmer, there are a lot of useful reads on there. I don't see anything specifically about this in the archives, but maybe that's something to look forwards to.
质疑质疑为何不投资 OpenCL 2.1 编译器而非 CUDA 工具链。
不禁让人想问,他们为什么不把这份精力投入到打造一个出色的 OpenCL 2.1 编译器上呢。
wmf查看英文原文
One wonders why they didn't invest that effort in making an awesome OpenCL 2.1 compiler instead.
相关资源
从这篇论文所有 HN 讨论帖的全部评论里整理出来的链接。
历次讨论
- 2016Hacker News 讨论帖195 分 · 53 评
同领域还值得读
Google 的软件工程(2017)
Software Engineering at Google (2017)
介绍了 Google 的软件工程实践,包括其单一代码库(monorepo)、几乎全部开发在主干进行而非分支、代码审查、构建系统 Blaze、协议缓冲区等工具与流程,并讨论了频繁重…
编程语言与软件工程2017 · 1,127 分 · 465 评 · 引用 15入门 · 约 45 分钟编辑精选Peter Naur:编程作为理论构建 (1985)
Peter Naur – Programming as Theory Building (1985)
Peter Naur 1985 年的经典论文《Programming as Theory Building》提出:编程的本质不是写代码或文档,而是在程序员头脑中构建对程序及其运行…
编程语言与软件工程2016 · 629 分 · 74 评入门 · 约 45 分钟编辑精选SciPy 1.0:Python 科学计算的基础算法
SciPy 1.0: fundamental algorithms for scientific computing in Python
这篇发表于 Nature Methods 的论文介绍了 SciPy 1.0——Python 科学计算生态的基石库,涵盖其核心算法模块(优化、积分、插值、线性代数等)、软件架构与社…
编程语言与软件工程2020 · 387 分 · 98 评入门 · 约 45 分钟编辑精选Lisp 的历史(1979)
History of Lisp (1979)
这是 Lisp 发明者 John McCarthy 于 1979 年为 HOPL(编程语言史)会议撰写的回顾文章,讲述 Lisp 的起源、设计动机与早期演进,文中也涉及 if 表…
编程语言与软件工程2018 · 352 分 · 44 评入门 · 约 45 分钟编辑精选使用 NumPy 进行数组编程
Array Programming with NumPy
这篇 Nature 文章介绍 NumPy 的数组编程模型及其在科学计算中的核心作用:以 ndarray 为中心,通过向量化操作让 Python 高效处理多维数组。
编程语言与软件工程2020 · 318 分 · 134 评入门 · 约 40 分钟编辑精选