» 您尚未登录:请 登录 | 注册 | 标签 | 帮助 | 小黑屋 |


发新话题
打印

[数码手机] 华为的这个方舟编译器水很深啊

微博上一位专业人士叫北京塞冬的文章:

劳伦斯利弗莫尔国家实验室(LLNL)是美国以核武器研发为主的两个国家实验室之一(另一个是洛斯阿拉莫斯)。提到核武器,就离不开超级计算机,LLNL目前拥有全球排名第二的超级计算机“红杉”(图1,http://top500.org,2018年11月),用于核试验模拟(图2,LLNL官网)。40多年前,LLNL启动了一个名叫“S-1"的超级计算机项目,该项目有许多斯坦福学生/毕业生参与。这是斯坦福计算机系的相关记录:http://t.cn/EXvhylm

S-1项目产生了一系列影响,包括:
1、商业化EDA工具诞生:项目的两位前期主力设计了自动化工具用于研发流程,几年后创立了世界上最早的(之一)商业EDA公司——Valid Logic Systems。

2、在体系结构上:对DEC、MIPS等公司的RISC指令集产生影响,引入了“分支预测”和基于目录的缓存一致性技术等。

3、S-1项目还对编译器产生了重要影响:GNU之父Richard Stallman最初就是基于该项目配套的编译器来编写C语言前端,后来由于性能原因又重写了一个编译器——GCC由此诞生。

在参与S-1项目的斯坦福学生中,有一位叫周志德的华人,他于1977-1983年在斯坦福读博,是该项目编译器的主力研发之一。毕业后,周志德去了Daisy Systems,该公司和上面提到的Valid Logic Systems齐名,是当时最知名的EDA创业公司之一。在Daisy Systems,周开发了DABL(一个类似VHDL的硬件设计语言)配套的编译器。

周后来陆续在MIPS和SGI任职,在SGI期间领衔开发了Pro64编译器,后来演化为著名的Open64编译器,周因此树立了全球编译器顶级权威的地位。此后,周又加入过Cognigine(一家网络处理器公司),参与创立了PathScale和ICube(图4,周的LinkeIn)。PathScale公司的首位CTO,就是上面提到的S-1项目的两位前期主力之一,也是上面提到过两次的Valid Logic Systems的创始人。PathScale的7位创始人中,有4位是S-1项目的参与者。

到21世纪,编译器已经是计算机产业链中相对成熟的领域,CPU体系结构从百花齐放走向高度垄断,编译优化的价值也不再显著,除国际头部大厂外,其余公司很少再有大的投入。作为一个诞生于21世纪的编译器创业公司,PathScale的结局就是被反复卖了好几轮。我的本科毕设就是编译器相关。在5-10年前,对中国学生而言,如果研究方向是编译器、甚至整个偏底层的系统软件方向,那么完全对口的工作可能就只有国际头部大厂,或者体制内的几家“中国芯"研究单位。由于当时国内信息产业在基础投入上的不足,相关领域毕业生只有转方向做搜索、做推荐、做游戏、做机器学习,做应用、做上层,才有广泛的就业机会。

作为编译器领域的顶级大佬,周志德在离开PathScale后,和英伟达出身的Simon Moy一起,创立了一家处理器设计公司ICube,他们提出了融合了CPU和GPU的新概念——UPU。在这个年代,决定一款处理器生死的,更多是生态。想要开创一款新处理器(不一定是全新架构),要么有全新的应用(比如与AI相伴而生的NPU、TPU),要么体量大到能自建生态(消费电子巨头)。这几年,随着国内信息产业规模的壮大,国内巨头在基础领域的投入不断增加,除上层应用以外,偏底层、偏系统方向的机会也越来越多。

四年多前,周志德(Fred Chow)加入华为,成为华为编译器技术首席科学家。周志德曾短暂呆过的Cognigine公司也早已被华为收购。昨天的华为发布会,让我感到惊喜的是,在如今这个年代,会有一家国内消费电子公司把编译器作为一大亮点来介绍——从组装到整合,再到核心元器件逐渐自主化、系统深度优化/自研,自己曾经放弃和退缩的道路,如今正在成为现实。

华为在基础研发上的持续高投入,加上手机终端市占率向全球第一迈进,使得“自建生态”的梦想,对一家中国公司而言首次成为可能——哪怕在商业上并无必要,但至少在技术上已不再遥不可及——从OS到底层系统软件到SoC,技术储备增加了华为战略战术打法的可能性。对于相关方向的毕业生而言,机会也比前几年增加了。我在读书时很崇拜的几位编译器和OS大牛师兄,前几年还都在惠普、英特尔、英伟达、vmware,现在则要么在头部芯片创业公司,要么在华为,从物质回报来看也不错,算是熬出来了。所以,“产业升级”、“基础研发”,这些都是和个人命运息息相关的。我还是期待华为能做得更大更强,同时也期待能诞生更多的华为,能有更多的中国巨头企业能利用自己的市场优势从应用向基础进军。


TOP

个人猜测的方舟的机制:
【1】各个app厂商还是只开发和维护java版本,不会产生分裂;
【2】app上传到各个手机大厂的软件商店,由软件商店内部根据自家手机硬件来编译为so的机器码;
【3】用户从本家软件商店下载后得到最优化的版本运行。当然,也可以从外部源下载通用版本,可能效率会差一点。



TOP

posted by wap, platform: Android
引用:
原帖由 @u571  于 2019-4-13 13:15 发表
那应用商店维护起来成本不是高的吓人,你重新编译之后还得要测试,我不信菊花会自己弄这些事

估计还是跟“吓人的”技术一样,需要开发商自己编译打包,反正微信支付宝这些APP是肯定不会用这玩意的
想不通有什么高成本的,事实上你的手机也能做,现在只是搬到软件商店的服务器而已。


TOP

posted by wap, platform: Android
引用:
原帖由 @卖哥  于 2019-4-13 14:03 发表
不是新编译的不允许上架官方市场,然后第三方安装默认是关的,大部分人也不知道怎么开。
再过一年,第三方安装关掉,彻底垄断应用发行。

本帖最后由 卖哥 于 2019413 14:08 通过手机版编辑
完全不给从外源下app不可能,华为海外销量比国内都高了,但是外源下载的运行效率没有store的高,这是很有可能的,真的如我想象的那样,那么华为并不会真的得罪app厂商,因为你不需要专门为华为开发一套,只需要上传华为商店由它编译为自己需要的版本就能得到利好了,安卓并不会就此碎片化,从而得到ios的专有系统的好处

TOP

posted by wap, platform: Android
引用:
原帖由 @MacPhisto  于 2019-4-13 14:59 发表
都出编译器了,那还用Java干嘛。像苹果那样自己搞一套语言不是更好。
到时候一个语言编译出三个版本,ios安卓都能跑。干死谷歌苹果。
我最不喜欢的语言就是Java,但是我觉得华为还是会挺Java的,毕竟各级别的编程人员都好找。

TOP

posted by wap, platform: Android
引用:
原帖由 @李鬼  于 2019-4-13 15:02 发表
Android App Bundle了解一下
我知道app bundle,但是Google play的bundle有很大缺陷:
1,bundle里各个版本还是要各个app厂商来自己编译,这会造成app版本爆炸,因为Google play是面向所有手机商的,你不知道硬件信息,所以各种组合就会导致必须编译几十种版本;
2,由于每一个版本还是app厂商进行编译,所以对于具体手机商来说,会不会针对某台手机进行优化,就是未定之数,比如华为就一直深受其害,腾讯的大型游戏以前一直不给华为优化。现在通过上传Java版本给商店,商店在具体编译时,就有可能会有针对性的优化,特别像华为这样有自己的CPU,gpu甚至npu的厂商。

TOP

posted by wap, platform: Android
引用:
原帖由 @MacPhisto  于 2019-4-13 15:06 发表
挺Java干嘛。接口是你的?类库是你的?还是虚拟机是你的?
能出编译器那就是直接兜底端了。上层还用别人家的东西?想想谷歌为什么要搞Kotlin出来。
都说得很清楚了,Java各种级别的程序员都好找,你华为技术再先进,也要不断有人来研发吧。

TOP

引用:
原帖由 李鬼 于 2019-4-13 15:27 发表


你真的知道?
不要看定义,你自己搞过app就知道了,大部分都还是要自己编译的。

TOP

引用:
原帖由 李鬼 于 2019-4-13 15:33 发表


喷了
这是Google I/O 2018上新推出的功能
我知道,这个技术一出来我就和公司的程序员讨论过了,但是可以看到,你一样要把各种环境什么的配置好,比如高分辨率、低分辨率,各种语言,arm64还是mips等,都要自己配置好,然后google play会给在具体用户下载的时候进行裁剪。

这个技术我觉得和方舟肯定还是有不同的,最主要,google和开发者可能都没有足够的人力和精力去具体实现每种特殊设备的独有特性,这些是具体设备厂家才有的。还是以腾讯为例,它的大型游戏以前很久都没有针对华为的麒麟芯片和mali gpu做优化,那么google会做这个优化吗?不可能的。

那么如果腾讯把游戏的java字节码上传到华为的商店,在具体转换为机器码的时候,华为就可以针对性的把对高通Adreno gpu的特殊指令转换为对自己mali gpu的对应指令(甚至部分转由npu来辅助),从而得到类似的性能优化。

当然这只是我猜测了。但是如果真的是这样的化,实际上对app厂商是利好的,它们可以事实上不会再针对具体设备进行优化,而是把这些交给不同厂家的商店来进行,这就像光纤的最后100米入户一样,具体的性能优化可以由手机大厂来进行了。

所以华为有信心把这个技术公开,这个基本上对各个app开发员来说没什么用,对像华为这样的自己设计cpu、gpu、npu的厂家,利好更多。

TOP

引用:
原帖由 MacPhisto 于 2019-4-13 15:54 发表
posted by wap, platform: 红米Note3
程序员换语言很容易。没听说哪个程序员只会一门语言吃饭的。否则苹果谷歌推新语言都是吃饱了撑的么。
程序员转语言容易,框架转语言就问题大了。

我见过一开始找大牛定了用python搞整个框架,然后基本是很难招到程序员的,最后大牛跑了,老板找了一个新的大牛来,又重新用java整个个新的。

TOP

posted by wap, platform: Android
引用:
原帖由 @原始恶魔  于 2019-4-13 16:16 发表
甲骨文在一天java就不可能翻身。大家都在想着怎么彻底甩脱呢。
不是有openjdk了?现在应该天塌不下来,Google和IBM挡在前面呢。

TOP

posted by wap, platform: Android
引用:
原帖由 @MacPhisto  于 2019-4-13 16:31 发表
框架是设计思路,跟语言关系不大。没听说过哪个框架只能用某个语言写的。语言最多只是提供语法糖。

毕竟框架是上层的东西。编译器和语言才是基础设施。
瞎扯,语言和框架关系太大了,Python做框架以模块为主,各种对象和功能都以函数和嵌入对象为主,Java则要做对象树,各个对象要类继承,这两个差太远了。

TOP

posted by wap, platform: Android
引用:
原帖由 @MacPhisto  于 2019-4-13 16:31 发表
框架是设计思路,跟语言关系不大。没听说过哪个框架只能用某个语言写的。语言最多只是提供语法糖。

毕竟框架是上层的东西。编译器和语言才是基础设施。
语言和框架绑定至深,很多框架换了语言基本废掉了,比如c++的特点是静态类型检查和泛型,所以stl框架出来了,其他语言都做不出stl的高效和简洁。
而UI系统框架天然要求面向对象和类型反射,所以c++几乎没有好的UI库,搞个qt都是用了不少对c++进行扩充的非法手段,反而Java的UI库非常好。unity为什么以c#为开发,tensorflow为什么主要以python为主,docker为什么以go进行开发,都是如此。

TOP

引用:
原帖由 MacPhisto 于 2019-4-13 17:09 发表
posted by wap, platform: iPad
你说的这些是语法糖。写起来方便点,不代表别的语言不能写。

框架说白了是设计模式的集合。数据流,代码流。这些都是抽象概念,和具体的语言特性没关系。
樵夫砍柴之前还要磨刀呢,具体框架很多特性都是和语言有关的,换个语言,这些特性都没了,那个框架就废掉了,我还没看见一个框架换了语言还存在的,上面举了一堆框架依赖语言的例子,要不你举个例子?

TOP






本帖最近评分记录
  • XI-NIAN 激骚 +1 最骚 Rated by wap 2019-4-14 19:16

TOP

发新话题
     
官方公众号及微博