当前位置: 首页 > 编程日记 > 正文

中科大硬核“毕业证”:“一生一芯”计划下,5位本科生带自研芯片毕业

作者 | 包云岗

编辑 | 伍杏玲

本文经作者授权转载自包云岗知乎

【CSDN编者按】近日,中国科学院大学五位本科生的硬核“毕业证”引发IT圈热议,在“一生一芯”培养计划下,由五位2016级本科生主导完成一款64位RISC-V处理器SoC芯片设计并实现流片,命名为“果壳(NutShell)”。该款芯片成功运行Linux操作系统以及学生自己编写的国科大教学操作系统UCAS-Core。

6 月 2 日, “一生一芯”团队学生代表向中国科学院大学毕业答辩委员会演示处理器芯片的功能,交出这份超预期的本科毕业设计“答卷”,实现带着自己设计的处理器芯片毕业目标。目前该话题在知乎上已有超百万浏览:

笔者曾在《我在做开源芯片》有幸采访过该计划负责人、中科院计算所研究员包云岗,这几年来他带领团队研究开源芯片,欲尝试用开源思路改变中国芯片被“掐脖子”的局面,“一生一芯”则是关键的计划之一,下面由包云岗亲自阐述这个用代码照亮未来的故事:

酝酿

2018年11月8日,乌镇,世界互联网大会,经过9个月筹备工作,中国开发指令生态(RISC-V)联盟正式成立。

晚上在乌镇的一家餐馆庆祝时,坐在我边上的一位老师问了个问题:“以后打算怎么做开源芯片生态?”其实这也是在2018年期间我经常问自己的一个问题,我有一个很粗的想法——能不能让学生参与到开源芯片生态建设中——经常会浮现出来。

听了那位老师的问题,我在脑海中又浮现出这个想法,然后就在饭桌上一边整理思路一边介绍如何将教学和开源芯片结合起来。这应该是“一生一芯”计划的最初萌芽。        

那时还没想到“一生一芯”这个名字,但已经大致形成了这样的目标——让本科生也能做处理器芯片,让本科生能带着自己设计的处理器芯片毕业。但联盟成立后,这个想法并没有实质性推动。

2019年5月16日华为被美国列入实体名单,全国震惊。各界都在想能为华为做些什么,我们也在思考。

但是,我们是做开源芯片,华为暂时还用不上;我们采用的是开放的RISC-V指令集,而华为的主力芯片都是基于ARM。看起来我们是无法帮助华为解决燃眉之急了。

但和华为专家交流后,他们说短期内的需求华为自己基本能应对,他们更需要的是中长期的先进技术,而最需要的是处理器芯片设计人才。因为华为的芯片架构设计团队很多在美国硅谷,由于美国的出口管制,虽然是华为的全资子公司,但其技术也不能输入到华为总部。这导致华为在美国的芯片设计人才不能再发挥作用,但在国内又招不到这样的人才。这才是华为的心腹之患。

华为在国内找不到处理器芯片设计人才的情况是在意料之中。2017年,我曾安排组里的学生统计过2008~2017十年的体系结构顶级会议ISCA论文第一作者的情况,最后统计数据发现这些优秀人才 85%选择在美国就业,仅有 4%在中国就业,差距巨大。这和国内很多大学不开展处理器芯片设计相关教学与研究密切相关。


事实上,类似的人才危机美国也曾经历过,1982 年全美上千所大学中只有不到100 位教授和学生从事半导体相关的研究 。为了应对人才危机,美国国防部高级研究计划署 (DARPA) 在1981年启动MOSIS 项目,为大学提供流片服务,通过MPW模式大幅降低芯片设计门槛。30 余年来MOSIS为大学和研究机构流了60000多款芯片,培养了数万名学生。

由此可见,降低芯片设计门槛,让学生能设计自己的芯片并流片,可大幅提高人才培养效率。这和我此前的构想和目标完全一致。我们不能再耽误了,要加速人才培养计划。

正式启动

我自作主张地给这个计划起了个名字:“一生一芯”。初衷是希望有一天能让每一个学生都能带着自己设计的芯片毕业,不管未来是不是真得能实现,这至少听起来是一个美好的理想,而且还有一点烂漫——后来很多人听到这个名字,第一印象大多是“一辈子做一颗芯片”。还有女生有更浪漫地理解:“一生一心一意爱一人”。不管如何,看来大家对这个名字似乎还都不反感。

然后,我又联系了几位国科大本科生,询问他们愿不愿意参加这个“一生一芯”计划当小白鼠。出于意料地是,这些准00后(98/99出生)都表示愿意挑战一下,愿意当小白鼠。

6月20日,我在开源芯片工作组群向大家宣布:启动“一生一芯”计划!这并不是研制产品级芯片,而是一次教学实践。很快唐丹老师为未来的芯片起好了内部代号“COOSCA”,三门课Computer Organization/Operating System/Computer Architecture的缩写。

随后开始组建教学团队,随着项目的进行教学团队也在不断扩大:唐丹老师和工程师刘彤负责SoC架构设计指导,余子濠老师负责处理器核设计(其实子濠还是博士生,但因为在国内计算机系统教学领域很有名,所以我们也半开玩笑地叫他老师),张科老师负责项目协调、与国科大对接,并和常轶松老师、赵然老师一起在FPGA模拟仿真方面进行指导,解壁伟老师和李峄工程师在后端物理设计上给予支持,深圳大学蔡晔老师则参与帮助设计PCB板卡,另外蒋德钧老师和王卅老师是国科大本科操作系统任课老师,在操作系统方面给予支持,两位博士生王诲喆与徐易难也担任起助教的角色,帮助答疑解惑。而我自己,则更像是一个啦啦队长,给大家打鸡血。 

教学团队开始行动起来了,大家讨论制定总体方案,确定技术路线,选择基础平台,搭建开发环境,选择流片工艺和班车……参加首期“一生一芯”计划的同学也最终确定,一共有五位,他们是金越、王华强、王凯帆、张林隽和张紫飞。这五位同学通过了计算所暑期夏令营面试,均被录取为计算所研究生,其中金越导师是陈明宇研究员,王华强导师是蒋德钧副研究员,王凯帆是孙凝晖院士,张林隽和张紫飞的导师则是我。但接下来的时间,他们将组成一个团队,一起挑战带着自己设计的处理器芯片毕业这个任务。

8月20日,当唐丹老师和解壁伟老师终于落实中芯国际110nm工艺的流片渠道后,“一生一芯”计划一切准备就绪。

8月27日,参加“一生一芯”计划的首批五位同学和教学团队一起在我的办公室开了一次简单但意义重大的动员大会。“一生一芯”计划正式启动!

四个月高强度开发

开弓没有回头箭。唐丹老师确定了最合适的流片班车是12月17日,距离动员大会不到4个月!这样芯片能在4月份完成封装,返回进行测试。如果一切顺利,那就可以赶上五月底或六月初的国科大本科毕业答辩,到时可以在答辩现场展示芯片。但是如果错过这趟班车,那就需要再等2个月赶下一趟班车,这就意味着芯片不可能在毕业答辩时返回。“一生一芯”团队需要跟时间赛跑。

我们在确定总体方案时有两个决定:

一是用Chisel开发,此前我们实验室做过Chisel与Verilog在开发效率和开发质量上的对比实验,证明Chisel能数倍替身开发速度,同时开发质量不比Verilog差,相关结果发表在论文《芯片敏捷开发实践:标签化RISC-V》。

二是以余子濠为南大开发的一款教学RISC-V处理器核为基础进行改进,这主要是因为余子濠在开发这款处理器的过程中构建了丰富的工具,包括NEMU软件模拟器、指令差分测试框架等,这些都有助于加速开发。而教学处理器功能还很基础,要能运行Linux并且支持流片,需要新增大量新功能,包括RV64IM/RVC/RVA等指令扩展、时钟中断、硬件填充的TLB、M/S/U特权级、缺页异常、Cache预取、SDRAM控制器、外围I/O设备……这是一种贴近实战的开发模式——实际的产品研发和科研工作中,往往不是总是从头开始,更多的是在已有的基础上,增加新的功能,提高性能等等。这就需要培养学生“理解-消化-创新”的能力。

接下来是4个月高强度的开发,然而有些关键模块的工作原理是课堂上没有介绍过的,同学们还需要进行一些探索性的尝试,有时甚至需要将此前的设计推倒重来,他们会因此感到焦虑或沮丧,这对他们的心态也是很大的考验。教学团队不仅仅需要给予技术指导,还需要对学生的心态进行正确的引导,告诉他们不确定性是探索过程中的客观规律,然后引导他们去总结探索失败的经验,去深刻地分析当前方案不可行的原因,从而加深对问题的理解,让他们正确认识到探索失败的意义。

虽然任务极具挑战,但不断有进展。每取得一个小里程碑,大家都会记录下那个时刻,精确到分钟,因为觉得未来有一天也许用得上。后来,这些时刻真的用上了,就是宣传视频中的那条时间线。这个过程中,国科大各方给了很大的支持,从校领导到本科部、计算机学院各级都很关心和重视;在中科院计算所,所长孙凝晖院士、主管教学的陈熙霖副所长、教育处李琳老师等都给予全方位的保障与支持。这也赋予了“一生一芯”团队某种使命感,更激发了大家的斗志。

12月19日,COOSCA 1.0芯片版图冻结。当唐丹老师告知版图已经正式提交,大家就如高考交卷,终于舒了一口气,却又悬起了一颗心。

疫情中的测试验证

等待芯片返回是一种既期盼又担忧的感觉。这种感觉又进一步被突如其来的疫情放大了。当1月23日宣布武汉封城后疫情不断发展,我们也越来越担忧正在流片中的那颗COOSCA芯片还能不能按时回来,还能不能赶上毕业答辩。出乎意外的是芯片基本按照预期时间返回了,在这里我们要对中芯国际和封测企业的员工们表达深深的敬意!

然而疫情还是对测试工作产生了影响,因为学生不能返校,无法到在现场调试与测试。余子濠、蔡晔和刘彤三位挺身而出,协助调试测试工作。测试验证工作其实也是非常具有挑战性,因为从底层PCB版图、内存颗粒到中间处理器设计、到上层操作系统、应用软件,每个层次都可能出问题。哪怕一个小问题,都会造成芯片无法正常工作。

经过大约1个月的调试测试,终于证明芯片一切正常,可以启动Linux操作系统。但也发现了芯片的I/O模块存在Bug,影响了SD卡的读写。测试验证也是充满了戏剧性。一开始调试时比较保守,将芯片降到了50MHz,没想到系统出现了很多问题。后来把芯片频率从50MHz跳到了200MHz,结果原来很多问题都消失了,能稳定地运行Linux。又进一步把频率提高到了350MHz,启动Linux出现了问题,但是可以稳定地运行RT-Thread。这个频率和后端仿真基本一致。这也验证了用Chisel开发和Verilog开发对后端物理设计并没有很大的影响。

毕业答辩演示

2020年6月2日,国科大本科生毕业设计答辩日。五位同学分别介绍了他们基于COOSCA处理器核的进一步优化工作:

  • 王华强:《基于RISC-V的乱序多发射处理器设计》

  • 张紫飞:《基于RISC-V的向量处理单元设计》

  • 张林隽:《开源处理器分支预测器的设计与性能优化》

  • 金越:《基于敏捷开发语言的开源处理器非阻塞缓存的设计与实现》

  • 王凯帆:《RISC-V平台下的二进制翻译与优化》

其中王凯帆的毕业设计中使用了COOSCA核,也是他们自己设计的核首次在科研中得到应用。

王华强同学代表“一生一芯”团队展示了COOSCA芯片的功能。他进一步又将这个核改进为乱序多发射,在FPGA上进行了测试验证,结果显示比COOSCA核的IPC提升了一倍。他的毕业设计也获得了国科大校级优秀毕业设计。

五位本科生,实现了带着自己设计的处理器芯片毕业这个目标!

后来,王凯帆又将国科大操作系统课程上同学们自己编写的UCAS-Core移植到了COOSCA核上,实现了用自己写的CPU运行自己写的操作系统这个小目标。

“果壳”公开亮相

CRVA联盟将于7月18日召开RISC-V年中技术研讨会,“一生一芯”团队决定让王华强提交一份设计报告,正式向社区介绍COOSCA核的设计。提交前,大家觉得COOSCA是一个内部代号,现在要公开亮相了,应该有个正式一点的名字。同学们讨论后,决定改名为“果壳(NutShell)”,和国科大的“国科”同音。可以看得出来,他们对国科大确实有些深厚的情感。

五位同学开始一起为“果壳”的首次亮相做了大量准备工作:王凯帆整理了代码以及相应的文档,并在GitHub上开源,王华强整理了一份介绍“果壳”设计的报告PPT。7月18日,王华强在技术研讨会第二个出场,介绍了果壳的设计细节和一些开发过程中的经验体会。

果壳”设计开源链接:https://github.com/OSCPU/NutShell

7月22日,王华强又收到了“果壳”被RISC-V Global Forum被接收的通知。9月3日,王华强同学将代表团队向全球业界介绍“果壳”的设计,这也是“果壳”首次在国际舞台上亮相。看了一下这次RISC-V全球论坛的日程,报告均来自世界各地的业界资深专家,还包括图灵奖得主David Patterson教授。国科大本科生能登上RISC-V全球论坛介绍他们设计的处理器核,这在国际上也是非常难得了。作为教学团队成员,我们内心也有一份自豪。

收获与体会

我们在调研中发现和“一生一芯”计划目标最接近的是2017年春季开始UC Berkeley开了一门新课  EE194/290C “28nm SoC for IoT”,目标是设计一个SoC芯片,集成各种IP模块,包括一个Berkeley开发的RISC-V Rocket处理器核。这门课以流片为目标,2017年春由9位本科生与1位研究生参加,通过1学期完成了流片,但未提供信息证明芯片能正常工作。

伯克利EE194/290C这门课是根据已有的RISC-V核和其他IP核进行SoC集成。而“一生一芯”与EE194/290C课程的区别在于要让本科生直接设计一款64位RISC-V处理器,然后在这个核的基础上,学生们需进一步集成与验证一系列外围IP,最终形成一个能运行Linux操作系统的SoC芯片,这极具挑战。

一年前,我们不知道这个目标是不是可行,最终能不能成功。但如今,我们探了回路,并且把路走通了,证明是可行的。这个摸索的过程积累了不少经验,也充满了教训。五位同学作为小白鼠参与首期“一生一芯”计划,成长了很多。他们不仅在项目中掌握了处理器芯片设计所需的专业知识,也锻炼出了优秀人才所具备的出色心理素质。一起来看看他们的感悟:

如今,这五位同学正在参与一个更有挑战的项目,开发一款高性能乱序多发射RISC-V处理器核的设计。

一年前,他们在做“果壳”时还有些吃力,现在已是这个新团队中的骨干,和其他博士生和工程师们一起攻坚克难。去掉团队中蔡晔、唐丹和我这三位40岁以上的中年人,这支队伍平均年龄只有23.1岁,但他们表现出来的战斗力却是惊人的——不到三个星期就从头开始完成了乱序处理器主流水线的设计与实现,并且通过CoreMark测试。

等到他们30岁时,就可以说已经是处理器芯片和计算机系统设计领域的“老兵”了。那时,他们将进入各自的工作岗位,也许去工业界研发产品,也许在学术界做科研。相信那时他们的创造力会得到更大的发挥和展现。我对这批年轻人的未来充满期待。

从教学团队角度来看,除了前期在总体方案、环境平台等方面需做好充分准备以外,在开发过程中有四方面指导尤其重要(以下为余子濠老师总结):

  1. 项目规划和分工。学生在开发初期不一定能完全掌握芯片中各个模块之前的关系,此时需要教师对学生的工作进行较为细致的分工,让学生通过一些初期的任务来认识芯片的全貌。随着项目的进行,学生对芯片的认识逐渐清晰之后,教师进行的分工可以向粗略的方向转变,向学生提出清晰的任务目标,并让学生尝试提出自己的解决方案。

  2. 导学生了解项目中的每一处细节。芯片是一个复杂的系统,学生需对芯片每一个模块的行为都有所了解,还需要了解程序在芯片上运行的每一处细节。但是学生一开始往往不能从课程设计的模式中转变过来,认为只需要了解自己任务相关的模块即可,不去主动了解其它模块,不去了解软件层次的行为。这导致他们在遇到问题会想不出解决的思路。此时教师需要对学生进行引导,让他们主动去认识芯片甚至是软件行为的每一处细节。在遇到困难的时候,这些认识就会成为解决问题的线索,顺着线索去追溯问题的过程又会进一步加深学生对这些认识的理解,从而形成良性循环。

  3. 指导学生使用在课堂学习的知识解决开发中遇到的实际问题。芯片开发过程中可能会遇到各种困难,一些表面上看像是硬件设计的问题,最终可能是软件配置错误造成的。解决这些困难需要学生站在全局的视角来分析问题,并与课堂上学习到的知识建立联系,从中寻找解决问题的可能性。教师需要引导学生根据观测到的现象进行思维的发散,主动思考可能与哪些学过的知识建立联系。如果学生面对一些比较困难的问题,也会需要教师进行点拨。

  4. 引导学生正确认识探索过程中的不确定性。在一款功能完整的芯片,有一些关键模块的原理是课堂上没有详细介绍的,学生要正确地实现这些模块,需要一个探索的过程。这意味着学生不能像课程作业那样按部就班地完成,而是会经历设计方案的调整,甚至是整个方案的推倒重来。这容易导致学生感到焦虑或沮丧,因此教师需要对学生的心态进行正确的引导,告诉他们不确定性是探索过程中的客观规律,然后引导学生去总结探索失败的经验,去深刻地分析当前方案不可行的原因,从而加深对问题的理解,让学生正确认识到探索失败的意义。

花絮

为国科大发布会准备的视频,最后有彩蛋:

同学们自己设计“一生一芯”Logo的过程:

“一生一芯”Logo 最终版

最后,再看一下“一生一芯”计划的宣传视频吧:

来源:

https://www.zhihu.com/question/409298856/answer/1363569013


推荐阅读

  • Python, C++和Java代码互翻,Facebook开发首个自监督神经编译器

  • 残差网络的前世今生与原理 | 赠书

  • 为什么说机器学习是预防欺诈的最佳工具?

  • MongoDB 计划从“Data Sprawl”中逃脱

  • 离岸密码的未来:概述

相关文章:

美团选择电影票

2019独角兽企业重金招聘Python工程师标准>>> 特点: 1可以放大 (两根手指),可以看到缩略图 2可以左右滑动 3上下滑动 步骤: 1绘制座位 在美团点击 转载于:https://my.oschina.net/yanglingui/blog/776852

邮件发送类,支持HTML格式,支持优先级设置

www.chinacs.net 2002-5-9 中文C#技术站 邮件发送类&#xff0c;支持HTML格式&#xff0c;支持优先级设置。通过SOCKET类实现的using System;using System.Text;using System.IO;using System.Net;using System.Net.Sockets; namespace Blood.Com.ClassLib{ /// <summary&…

手绘10张图,把CSRF跨域攻击、JWT跨域认证说得明明白白的

作者 | 写代码的明哥来源 | Python编程时光这篇文章本应该是属于 HTTP 里的一部分内容&#xff0c;但是我看内容也挺多的&#xff0c;就单独划分一篇文章来讲下。什么是跨域请求要明白什么叫跨域请求&#xff0c;首先得知道什么叫域。域&#xff0c;是指由 协议 域名 端口号 …

WYSE Thin Clinet 常用快捷键

1. 同时按住Ctrl Alt Up&#xff08;向上方向键&#xff09;&#xff0c;即可将远程连接由全屏状态切换到Window状态2. 同时按住Ctrl Alt Down&#xff08;向下方向键&#xff09;&#xff0c;即可在远程连接进程间切换&#xff08;类似于Windows系统的Alt Tab功能&…

CSS3模拟IOS滑动开关

前言 H5站点需要IOS滑动按钮的效果,想了想似乎CSS3能搞起,就折腾出来了...挺简单的..请看注释效果 代码 <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <title>CSS3模拟IOS开关</title> <style t…

PyTorch 1.6、TensorFlow 2.3、Pandas 1.1同日发布!都有哪些新特性?

作者 | 肖智清出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;7月29日&#xff0c;PyTorch 1.6、TenorFlow 2.3、Pandas 1.1恰巧同时发布。这三个库都是定期滚动更新&#xff0c;大约每个季度更新一次小版本。在AI内卷化达到“灰飞烟灭”的今日&#xff0c;仅仅会对P…

ENC28j60以太网芯片驱动程序简介

转载&#xff1a; 本介绍可分为三块内容&#xff1a; 1.以太网数据帧结构 符合IEEE802.3标准的以太网帧的长度是介于64-1516字节之间。主要由目标MAC地址、源MAC地址、类型/长度字段、数据有效负载、可选填充字段和循环冗余校验组成&#xff0c;另外在通过以太网介质发送数据包…

在ASP.NET中获取文件属性

www.chinacs.net 2001-8-13 中文C#技术站 在ASP.NET中获取文件属性&#xff08;Retrieving File Information In ASP.NET&#xff09;By Steven Smith 使用ASP.NET我们可以很容易的得到文件的相关信息&#xff0c;包括&#xff1a;文件名、路径、扩展名、大小和创建以及使用日…

javascript运动系列第九篇——碰撞运动

前面的话 碰撞可以分为碰壁和互碰两种形式&#xff0c;上篇介绍了碰壁运动&#xff0c;本文将从浅入深地介绍碰撞运动的互碰形式 碰撞检测 对于互碰形式的碰撞运动来说&#xff0c;首先要解决的是碰撞检测。对于矩形元素的碰撞检测前面的博文已经详细介绍过&#xff0c;下面主要…

Asp.Net 使用 GDI+ 绘制3D饼图入门篇源码

出处&#xff1a;www.knowsky.com 作者&#xff1a;www.knowsky.com <script languageJavaScript src"/ad/ad.js"></script> topn3dpie.aspx------------------<% Page language"c#" CodeBehind"topn3dpie.aspx.cs" AutoEventW…

【Visual C++】游戏开发笔记十三 游戏输入消息处理(二) 鼠标消息处理

本系列文章由zhmxy555编写&#xff0c;转载请注明出处。 http://blog.csdn.net/zhmxy555/article/details/7405479作者&#xff1a;毛星云 邮箱&#xff1a; happylifemxyqq.com 欢迎邮件交流编程心得上一节我们讲解了键盘消息处理相关的知识。键盘加鼠标作为目前人机交互…

当最懂 5G 的中国移动遇见云,移动云专题赛正式启动!

根据《中国云计算产业发展白皮书》预测&#xff0c;2023年中国云计算产业规模将超过3000亿人民币&#xff0c;其中&#xff0c;中国政府和企业上云率将超过60%。在国家新基建战略的大力推动下&#xff0c;5G和云计算迎来了巨大的发展契机。作为中国移动5G战略的重要组成部分&am…

spring配置文件详解【总结】

知其然&#xff0c;知其所以然 <?xml version"1.0" encoding"UTF-8"?> <beans:beans xmlns"http://www.springframework.org/schema/mvc" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance…

ucontext实现的用户级多线程框架3(实现echo服务器)

前面一篇文章实现了一个抢先式的用户级多线程框架&#xff0c;现在用那个框架编写一个echo服务&#xff0c; 因为只是个实验&#xff0c;所以代码写得比较杂乱&#xff0c;还有很多可能出错的情况也没有处理&#xff0c;这些在今后的进一 步研究中都会慢慢修改&#xff0c;下面…

asp.net 2.0中用GRIDVIEW插入新记录

出处&#xff1a;www.knowsky.com 作者&#xff1a;www.knowsky.com <script languageJavaScript src"/ad/ad.js"></script> name"mq" marginwidth"0" marginheight"0" src"../../ad.html" frameborder"no…

我在攻克机器学习硕士学位的那些年

编者按&#xff1a;人工智能发展日趋成熟&#xff0c;也成为众多开发者职业生涯的首选方向。然而相较于其他领域&#xff0c;人工智能中的深度学习、机器学习、计算视觉、神经网络等技术更为错综复杂&#xff0c;进修难度也更胜一筹。对此&#xff0c;对于入门和想要进阶的学生…

POJ 3174 暴力枚举

思路&#xff1a; 暴力枚举三个点 判一判 搞定 &#xff08;x1*y1x2*y2&#xff09; x1、y1、x2、y2为他们两两的差 //By SiriusRen #include <cstdio> using namespace std; int n,cnt; struct Point{int x,y;}point[888]; struct ans{int x,y,z;}ans[888]; int main…

TensorFlow、PyTorch夹缝之下:后浪的进击和野望

作者 | Just出品 | AI科技大本营&#xff08;rgznai100&#xff09;“我发现&#xff0c;软件研发总会延期。”一流科技CEO袁进辉说。按照他的预期&#xff0c;深度学习框架OneFlow做两年就能开源给开发者检验&#xff0c;但时间向后延长了近一年半&#xff0c;“确实预计的不准…

在Win 2003中配置ASP.net环境

作者&#xff1a;未知大家知道&#xff0c;Microsoft为了更好地预防恶意用户和攻击者的攻击&#xff0c;在默认情况下&#xff0c;没有将 IIS6.0 安装到 Windows Server 2003 家族的成员上。而且&#xff0c;当我们最初安装 IIS6.0 时&#xff0c;该服务在高度安全和"锁定…

网页中的数学公式

无意中发现一个在网页中显示数学公式的解决方案,MathJax&#xff0c;太崇拜这些人了&#xff01;他们才是真正地IT人&#xff0c;哪像国内我们这些民工&#xff1f; 代码如下&#xff1a; <!DOCTYPE html><html><head><title>MathJax AsciiMath Test P…

php删除目录下的所有文件和目录

<?php /*** 递归实现删除目录下的所有的文件和文件夹* param $dir 要删除的目录* param bool $deleteRootToo 是否删除根目录 默认不删除http://www.manongjc.com/article/1333.html*/ function unlinkRecursive($dir, $deleteRootToo false) {if(!$dh opendir($dir)){re…

DZX2无法读取会员短消息

我们在升级Discuz论坛时&#xff0c;如果没升级好&#xff0c;可能会出现各种各样的问题。比如登陆会员&#xff0c;但点“短消息”会出现错误&#xff0c;如下&#xff1a;提示&#xff1a;UCenter info: MySQL Query ErrorSQL:SELECT COUNT(*) FROM [Table]pm_members m WHER…

ASP.NET 如何操作文件

本文由chenyangasp版权所有&#xff0c;可以转载&#xff0c;复制&#xff0c;粘贴&#xff0c;并请注明出处&#xff0c;但不得修改&#xff01; 在asp.net操作文件的所有concept都在system.io namespace中&#xff0c;这个namespace包含读写操作文件所必需的类。 本文将详细…

摊牌了:我就靠这几点,搞定了算法面试官

很多时候&#xff0c;你即使提前复习了这些最常见的面试算法题&#xff0c;你依旧无法通过算法面试&#xff01;为什么&#xff1f;1. 你在提前准备复习的时候&#xff0c;在网上找了半天相应题目的分析文章&#xff0c;但你看了就是不懂。2. 你在面试的时候&#xff0c;卡壳了…

Spoooooky CSS 选择器

2019独角兽企业重金招聘Python工程师标准>>> 让我们今年有一些万圣节主题的帖子精神&#xff01;我会从超过 GRAVE.eR.CSS选择器中挑选一些将冻结你骨头的选择器。也许不可能&#xff0c;但他们至少有点怪异。 迟钝的猫头鹰选择器&#xff08;the lobotomized owl s…

关于无法创建aps.web项目的解决办法

出处&#xff1a;CSDN 作者&#xff1a;ahking <script languageJavaScript src"/ad/ad.js"></script> 1、当站点主目录没有创建应用程序&#xff1a; 通过FP扩展虚拟目录的方式来建立WEBAPP,步骤如下&#xff1a; &#xff08;1&#xff09;、右击站…

国内ntp时间服务器ip地址

NTP&#xff08;Network Time Protocol&#xff09;是由美国德拉瓦大学的David L. Mills教授于1985年提出&#xff0c;除了可以估算封包在网络上的往返延迟外&#xff0c;还可独立地估算计算机时钟偏差&#xff0c;从而实现在网络上的高精准度计算机校时&#xff0c;它是设计用…

谷歌顶级量子科学家详述他为何从谷歌辞职

加州大学圣塔芭芭拉分校&#xff08;UCSB&#xff09;的教授John Martinis作者 | Paul Smith-Goodson译者 | 天道酬勤&#xff0c;责编 | Carol 约翰马丁尼斯&#xff08;John Martinis&#xff09;教授从Google辞职的消息在整个量子学界引起了轩然大波。消息宣布几天后&#x…

论文笔记之:Generative Adversarial Text to Image Synthesis

Generative Adversarial Text to Image Synthesis ICML 2016 摘要&#xff1a;本文将文本和图像练习起来&#xff0c;根据文本生成图像&#xff0c;结合 CNN 和 GAN 来有效的进行无监督学习。 Attribute Representation: 是一个非常具有意思的方向。由图像到文本&#xff0c;可…

ADO.NET 2.0 中的架构

Bob BeaucheminDevelopMentor 适用于&#xff1a;Microsoft ADO.NET 2.0Microsoft Visual Studio 2005C# 编程语言 摘要&#xff1a;了解在 ADO.NET 中对于从您的数据源访问元数据的增强支持。下载相关的 SchemasSample.exe 示例代码。 本页内容 深入了解新的公共元数据 API究…