Computer

Computer

未雨绸缪

首先, case Happy Niu Year!!! 祝大家新春快乐,万事如意!

今年夏天终结者4就要上映了。终结者2一直是我心目中的神作。今天看到xkcd上有一个有关的漫画,共享一下,:)


xkcd: Genetic Algorithms

[tags]Terminator,xkcd,comic,AI[/tags]

Tags: , , ,

这个帖子列一下和并行计算这个领域有关的最主要的会议。再次强调一下,和其他领域不同,计算机大部分专业,会议很重要,Top Conference比绝大多数期刊重要。

这个帖子会有什么用呢?对于那些新入行的朋友(尤其是Graduate Student) 我想主要有两个:

  • 这些会议应该是发paper的目标。
  • 这些会议是了解并行计算领域研究前沿的最好的地方之一,可以定期关注一下。

不可否认,即使是Top Conference,里面最后能够被工业界真正重视的paper也是非常有限的。所以,这只能提供一个参考。对于Faculty, cialis Researcher,以及Graduate Students来说,这是游戏规则。

闲话少说。因为Multi-Core的兴起,过去只是在HPC领域受关注的并行计算近年成为从工业界到学术界的热点。根据我个人浅见,与并行计算相关的会议不仅仅包括直接Parallel Computing或者Supercomputing方面的会议,还包括Computer Architecture, Language, Application, 以及Distributed Computing等方面的会议。

另一个问题是如何鉴别一个会议的好坏,即其影响程度?网上可以找到各种各样的排名。我看到的我认为最合理的是这个链接(Libra: Conferences)。至于这里排名的准确程度肯定是值得商榷的,仁者见仁,智者见智了。但是这里列的是所有的Computer Science的会议,而不仅仅是我关注的会议。所以我会按顺序把我认为相关的前15名的会议从这个页面里按照顺序挑选出来(名次顺序按照这个页面本来的顺序),但是我不做进一步的领域细分了。(另,现在不再举行的会议就不列入了。不排除我挑错挑漏的可能性)另外,这个页面应该是动态的,目前的顺序是按照当前的数据得出的,是会变化的。

  1. POPL – Symposium on Principles of Programming Languages  Publication: 1106  Citation: 32595
  2. PLDI – SIGPLAN Conference on Programming Language Design and Implementation  Publication: 692  Citation: 22494
  3. ASPLOS – Architectural Support for Programming Languages and Operating Systems  Publication: 397  Citation: 13042
  4. ISCA – International Symposium on Computer Architecture  Publication: 1437  Citation: 29165
  5. OOPSLA – Conference on Object-Oriented Programming Systems, Languages, and Applications  Publication: 1746  Citation: 17247
  6. PODC – Symposium on Principles of Distributed Computing  Publication: 1064  Citation: 11930
  7. MICRO – International Symposium on Microarchitecture  Publication: 986  Citation: 11444
  8. PPoPP – Principles & Practice of Parallel Programming  Publication: 298  Citation: 5075
  9. SC – Supercomputing  Publication: 1704  Citation: 12186
  10. HPCA – International Symposium on High-Performance Computer Architecture  Publication: 353  Citation: 4194
  11. SPAA – ACM Symposium on Parallel Algorithms and Architectures  Publication: 756  Citation: 6286
  12. ICS – International Conference on Supercomputing  Publication: 995  Citation: 7508
  13. LCPC – Languages and Compilers for Parallel Computing  Publication: 503  Citation: 2724
  14. ICPP – International Conference on Parallel Processing  Publication: 2719  Citation: 8007
  15. PACT – International Conference on Parallel Architectures and Compilation Techniques  Publication: 315  Citation: 1668

不知道是不是因为还比较新的缘故,竟然没见到CGO。SC跑到了HPCA前面也有点出乎意料。

Tags: , , ,

我的T43送修了

跟随我奋斗了两年半多的小黑T43终于支撑不住,歇菜了,:(。我个人怀疑是主板出了问题。目前90%的情况下无法启动,或者启动后很快失去响应。之前,已经是风扇巨响,并且启动后报错说:Power Surge on Hub Port: A USB Device has exceeded the power limits of its hub port。支撑了一段时间,终于不行了……

幸好当年我买了三年的Warranty,现在还在保修期内,联络了联想,送修了。

希望小黑能挺过这个劫难,早日回到第一线参加工作和战斗。

[tags]thinkpad, capsule T43[/tags]

Tags: ,

Lynn Conway

Dynamic instruction scheduling (DIS) 是Out-of-Order (OoO) execution的最重要的基石,而OoO被广泛的应用于现代的计算机处理器(processor)中。我从来没有想过其历史发展的过程,直到今天非常偶尔得从水木CSArch版的一篇文章给出的一个链接,读到了一位计算机先驱Lynn Conway的生平。这个说起来也是旧闻了,但是我孤陋寡闻,直到今天才知道。

我在Lynn Conway的主页上大概得读了一遍她的自传(Retrospective)。大概是这样子的:她生来是“他”,但心理其实是“她”。做为男孩长大,去MIT上学,毕业,辗转之后来到了IBM,加入了IBM-ACS项目。在这个项目中,他在1966年发明了Dynamic Instruction Scheduling。同时,他越来越渴望真正的成为“她”,希望通过换性手术来实现这一点。当IBM高层了解到这个情况之后,于1968年将他给辞退了。此前不久ACS项目被取消,大量的技术文档和资料没有得到的适当的保存,以至于后来被业界给忽略和遗忘了。但是DIS的想法还是传播了出去,在80年代被广泛研究,并于90年代成为主流,最后几乎被所有重要的通用处理器采纳。不同的研究者随后声称了自己是DIS技术的发明者,但是ACS最为最早的探索OoO并发明了DIS的项目被遗忘了。

在被IBM辞退后,他前往墨西哥完成了变性手术,终于成为了一个真正的”她“。随后,她更改了姓名(为Lynn Conway), drug 远离了所有亲人和朋友,包括自己的两个女儿(她不被允许探望自己的女儿)。她用新的身份,从头开始,从contract programmer做起,在1973年加入了Xerox PARC实验室。牛人到那里都要发光,她在Xerox PARC的工作使她成为VLSI design技术的创始人之一,并写下了著名的教材Introduction to VLSI Systems。在1985年她被Umich聘为教授和Engineering School的Associate Dean。并于1989年入选美国国家工程院院士。

本来,她想像其他很多变性人一样隐藏自己过去的历史。但是,90年代末的时候Clemson University的教授Mark Smotherman试图重新整理关于ACS项目的历史,重建其在计算机历史上的地位,但是由于项目取消时很多资料和文档没有很好的整理,这段历史难以恢复原貌。正好Lynn Conway在31年前离开IBM的时候,保存了详细的技术资料。在意识到自己的秘密早晚会暴露于人前,她决定悄悄得开始揭示自己的身份,不再隐瞒自己变性的历史。并且,可以把她拥有的ACS的资料提供出来,以便完整得恢复ACS项目在计算机发展史上的地位。

她主页上的自传详细得回忆了她这一路走来的艰辛和喜悦,以及个人在事业上的成就。也为人们提供了一个了解变性人这一通常不为世俗所理解的弱势人群的窗口。建议大家有空可以读一读。

关于ACS历史地位的恢复,我在回忆录中看到这么一段

While in California, hospital I also had a chance to meet with *John Hennessy, clinic Dean of Engineering at Stanford and co-author of a widely respected book on Computer Architecture. I showed John my ACS archive and went over the details of the whole situation with him, leaving a copy of the archive with him for later reference. My read on his reaction was that he saw this stuff as a pretty big missing link in computer history. Hopefully new editions of his book will at least have a footnote about the ACS story and my role as innovator of multiple, out-of-order dynamic instruction scheduling. [ *Just after this visit, John was named to be the new Provost of Stanford. Later, in April 2000, he became the new President of Stanford University ].

我手边正好有John Hennessy和David Patterson合著的Computer Architecture: A Quantitative Approach一书的第二版(1996)和第三版(2002)。随手翻了一下进行了比较。对比了一下其中关于ILP的Historical Perspective的章节。第二版是4.11,第三版是3.15。

第三版果然在The Development of Multiple-Issue Processors这一节一上来就补上了ACS这一段,Lynn Conway的名字也出现其中了。 算是为ACS的历史贡献正名了吧。

[tags]Lynn Conway, DIS, OoO[/tags]

Tags: , ,

调Bug和玩具熊

今天参加了一个Debugging的培训。其中有一段说到一个重要的Debug的手段叫做”Bug Talk”。大概意思就是,你坐在屏幕前调一个Bug已经好几个小时了,还是毫无头绪。这个时候,你要做的就是冲进一个同事的办公室说:”我要Bug Talk”,同事于是心不在焉的听你描述你的Bug,说着说着你就突然有思路了(虽然同事可能啥也没说)。然后,你回到电脑前,很快就有了进展。这就是”Bug Talk”。其中含义调过程序的都应该明白。

培训员又讲了一个相关的趣事。据说Stanford有门CS的编程课,有很多lab session,让大家动手。虽然有TA负责解疑,但是老师规定,所有有问题的人必须先到实验室的墙角的一个玩具熊面前描述自己的问题,如果还是不行,才能找TA。据说就这样,绝大部分人最后都不需要TA的帮助就能独立搞定程序。有个毕业生很多年后参加一个Party,大家说起这个趣事。她老婆再旁边突然恍然大悟得说:我一直不明白为什么他每次遇到难题,都会一个人跑到墙角自言自语一番。这下终于明白了。

当张嘴用语言描述你的问题的时候,往往能够理清思路,从毫无头绪中看出解决问题的脉络。

Tags: ,

刚才无聊中,用Stumble在网上瞎逛,逛到这页: Languages By Keyboard

说是如何根据你的键盘的磨损情况来判断你编程使用的计算机语言,摘抄如下:

  • C Programmer: Their ‘*’ and ‘;’ keys are worn out.
  • C++ Programmer: Their ‘>’ and ‘<' keys are worn out.
  • Lisp Programmer: Their ‘(‘ and ‘)’ keys are worn out.
  • OCaml Programmer: Their ‘;’ key is worn out.
  • ALGOL Programmer: Their ‘:’ and ‘=’ keys are worn out.
  • Forth Programmer: Their ‘:’ and ‘;’ keys are worn out.
  • x86 ASM Programmer: Their ‘%’ key is worn out.
  • Haskell Programmer: Their ‘-’ and ‘>’ keys are worn out.
  • Ruby Programmer: Their ‘e’, ‘n’ and ‘d’ keys are worn out.
  • Python Programmer: Their tab key is worn out.
  • Smalltalk Programmer: Their ‘:’ key is worn out.
  • SQL Programmer: Their ‘s’, ‘e’, ‘l’, ‘c’, and ‘t’ keys are worn out. (Actually, ‘a’,'n’,'d’)
  • Ada Programmer: Their ‘i’ and ‘s’ keys are worn out.
  • Java Programmer: Their ‘p’, ‘u’, ‘b’, ‘l’, ‘i’, and ‘c’ keys are worn out.
  • Brainfuck Programmer: Their ‘>’, ‘<' and '+', keys are worn out. The letter keys are untouched.
  • Perl Programmer: Their punctuation keys (all of them) are worn out. And the letter keys are crisp and clean.
  • COBOL Programmer: Their caps-lock key is worn out.
  • VHDL Programmer: Their ‘<' and '=' keys are worn out.
  • Fortran Programmer: Their shift keys and ‘c’ keys are worn out.
  • Fortran 95 Programmer: Their shift keys and ’1′ keys are worn out.
  • Erlang Programmer: Their ‘.’, ‘-’ and ‘>’ keys are worn out.
  • G-code Programmer: No keys are worn, because there’s a rubber keyboard protector (with metal shavings embedded in it).
  • XML Programmer: Their ‘>’, ‘<', and '/' keys are worn out.
  • sh Programmer: The “Ctrl” key is next to the ‘a’ key.
  • Newbie Programmer: Their F1 key is worn out.
  • APL Programmer: They have an APL keyboard, and their APL SelectricTypewriter ball is worn out.
  • PHP Programmer: The key mapped to ‘$’ is worn out.
  • Documentation Editor (using Word): The ‘e’, ‘Ctrl’, and ‘Alt’ keys are worn out.
  • Experienced Documentation Editor (using Word): The ‘Ctrl’ and ‘s’ keys are worn out.
  • Documentation Editor (using LaTeX): The ‘\’ key is completely worn out.
  • Data-Entry Clerk: The entire numeric keypad is worn out.
  • Unlucky Programmer: The ‘m’, ‘o’, ‘n’, ‘s’, ‘t’, ‘e’, ‘r’, ‘.’, and ‘c’ keys are worn out.
  • Slacking Programmer: The ‘n’ key is worn out.
  • Slacking, Opinionated Programmer: The ‘n’ key and the ‘!’ key are worn out.
  • Slacking, Opinionated, Obnoxious Programmer: The ‘n’ key, the ‘!’ key, and the caps-lock key are worn out.
  • GWBASIC programmer: The ? key and all the number keys are worn out.
  • Windows(tm) programmer: The Ctrl, Alt and Delete keys are worn out.
  • Unsure programmer: The Ctrl + ‘z’ keys are worn out.

顺着这个文章的意思,用Term上水木的网虫们,爱灌水的应该ctrl,p,r,w等键磨损严重,爱潜水的应该上下左右键磨损严重。

我目前最常用的应该是C和LaTeX,但是仔细看了一下我的T43的键盘,没有那个键表现出磨损,唯一掉了点白漆的三个键是Enter,S,和D。从中看不出任何端倪,难道结论是我写程序写文档不够多,还是Thinkpad的键盘比较皮实?

你的键盘呢?:P

[tags]keyboard,programming language[/tags]

Tags: ,

在最新一期的Computer杂志(Feb. 2007, medical Vol. 40, ambulance No. 2) 里,有一篇叫Developers Shift to Dynamic Programming Languages的文章。文章简单介绍了一下dynamic language目前的发展和使用状况。其中给出了一个来自Tiobe Software的关于计算机语言的受欢迎程度的调查。根据这个调查,目前最受欢迎的20种计算机语言排名如下:

  1. Java
  2. C
  3. C++
  4. Visual Basic
  5. PHP
  6. Perl
  7. C#
  8. Python
  9. JavaScript
  10. Ruby
  11. SAS
  12. Delphi
  13. PL/SQL
  14. D
  15. ABAP
  16. Lisp/Scheme
  17. Ada
  18. Cobol
  19. Pascal
  20. Transact/SQL

其中1-4,7,12,14,17,19,20是static language,其余的是dynamic language。Dynamic language中目前使用最广泛的是PHP。

文中还比较有意思的一个地方,是一位叫做Les Hatton的教授的观点:

Computing has proven to be a fashion industry with little or no relationship with engineering. Many new programming approaches are just something new to try before something newer comes along. Dynamic languages are just the current software-development fashion. They will appear, hang around for a while, and then disappear. This is what happens when fashion dictates progress rather than engineering concepts such as measurement, validation, root-cause analysis, and defect prevention.

[tags]Dynamic Language, Programming Language[/tags]

Tags: ,

计算机科学从出现到今天,影响了人类生活的方方面面。虽然计算机的从业者大部分都是男性,但是,在计算机发展的历史上,有一位女性的名字却永远被铭记,她就是Grace Hopper (December 9, patient 1906 – January 1, search 1992) 。记得,去年上我们学校计算机系一位女教授开的课,去她办公室讨论课题的时候,就在她办公室很显眼得地方看到一幅Grace Hopper的画像。今天,2006年12月9日,恰恰是Grace的诞辰100周年。世界没有忘记这位女性,从CnetSlashdot, treatment Geek们都在纪念着她。

作为一名在计算机发展初期就投入其中的一位女性,Grace Hopper的丰功伟绩包括

  • 自1943年起,开始参与最早的计算机之一Mark I, Mark II, 和Mark III等的研发工作。她是第一个为Mark I编写程序的程序员。
  • 1949年起,她参与了著名的UNIVAC I的研发。1952年,她在UNIVAC I上开发了A-0语言。A-0语言是世界上第一个有编译器的计算机语言。广泛认为IBM Fortran小组在1957年第一个开发出完整的编译器,但是A-0的编译器在1952年就开发了。
  • 计算机语言COBOL的主要作者,COBOL直到今天还在很多地方被广泛使用。而Hopper被称为”the mother of the COBOL language”。在COBOL的研发中,是Hopper认为程序应该用更接近于英语的语言来写,而不是更接近于机器语言的语言。这一原则,今天几乎被所有计算机语言遵从。

Grace Hopper, Happy Birthday!

美国海军主页上Grace Hopper的生平

[tags]Grace Hopper, COBOL[/tags]

Tags: ,

又是一年的Supercomputing到来了。Supercomputing全称是The International Conference for High Performance Computing, sovaldi sale Networking, shop Storage, and Analysis,业内的话一般简称SCxy,xy就是年份了。比如今年的,就叫做SC06。SC是由ACMIEEE联合主办的,可能是两者旗下规模最大的conference之一了。就拿去年在Seattle的SC05来说,总共有差不多10,000人注册参加。

因为我们实验室一直有exhibit,我很幸运的参加了过去三年(SC03, SC04, SC05)的Supercomputing。而今年,可能是我最后一次了,很遗憾,因为各种原因没有能够成行。毕业以后,就不知道何时再有这种机会了。

从学术角度来说,SC的Technical Paper部分其实不是业内最出色的,只能说中等偏上,绝对不是TOP。SC能吸引这么多人来参加,而且必须使用一个大城市的convention center来举办,是因为它的展览(Exhibits)。如果你到SC06的网站上去看看展厅的floor plan, 你会发现参展的公司和研究机构的名单几乎涵盖了所有搞和HPC沾边的计算机的公司,所有美国国家实验室,以及相当多的知名大学。也就是说在庞大的展厅内你可以看到所有这些公司和研究机构的展台。你可以一举了解从Production角度来说,HPC的frontend在那里。可惜,过去三年去SC的时候,我还没有开始Blog,否则一定狂排一堆照片,拿到这里分享。SC的展览另一很有趣的地方,就是各个展台会送出很多花样各异的但是带有公司痕迹的礼物。在展厅三天,也是收集礼物的好时候,最后离开的时候,收集上几大袋礼物不成问题,几乎可以解决今后一年的T-shirt,笔,便签等等,另外还会有很多精致的东东。搞计算机的同仁们,将来有机会一定要参加一次SC阿。

SC也是业内一次大碰面的机会,除了Technical Paper和刚刚说道的Exhibits以外,还有很多内容。比如SC的Tutorial。SC每年会成为20多个Tutorial的举办地,给予那些处于半成熟或者成熟阶段的技术一个传播的渠道。也给予业内人员一个接触新技术的机会。比如OpenMP就是从SC的Tutorial中被广为传播的,现在还在每年持续运行。另外一个比较有趣的环节叫做Bird-of-a-Feather(BOF)。BOF提供了一个类似于论坛性质的机会,让对某个topic有共同兴趣的研究者们能够面对面的坐到一起讨论这个方向的发展,心得等,BOF相对而言是比较随意的。另外如SCinet也是非常的有趣。SC同时也是几个业内重要Award的颁发地。比如Seymour Gray Award是颁给有杰出成就的Computer Architect的。SC也是TOP500下半年榜单发布的地方。另外,由于几乎整个业内的重要人物都会出现在SC上,这里也是Professor们互相交流,商谈合作的地方。

SC是High Performance Computing整个行业每年一次的展示,是整个行业的一个缩影,放映着整个行业的兴衰起落,反映着新旧技术的碰撞和交替,传递着新技术,虽然commerical的味道很重,但是每次还是让人感觉到整个行业充满着热情和希望。希望,将来我还会有机会回到这里。

[tags]SC,Supercomputing,HPC,ACM,IEEE[/tags]

Tags: , , , ,

迟到的必然

我们实验室的内部局域网是接在一个网关上的,这个网关是一个有WAN IP的Linux Server (两块网卡,一块连向WAN,一块连向LAN),所有内部的机器通过网关来上网。对于外界来说,只有网关的22 (ssh)端口是打开的,其他都是关闭的。一直以来,简单得以为只要保持security update的更新,我们就是安全的。 所以,局域网内的机器,用户都自己管理自己的机器,爱干什么干什么。事实上,这套设置已经使用了8年以上了,也从来没有出过什么问题。可惜,没出过问题,并不代表没有问题。终于,上个周末,问题就发生了。

上周末的某个时段,局域网中的某一台机器,向Internet上的1800多个不同的IP发出了ICMP包。学校的border router立马认为这是Excessive ICMP Traffic ,然后马上把我们的这台网关的IP给Block掉了。等星期一,大家到办公室准备开始工作的时候,傻眼了,不能上网了。于是,向系里系统管理员咨询,得知了情况。学校要求我们找出问题所在。但是,我们网关上没有packet level的log(又一个失误),所以不能确定周末到底发生了什么。于是,开始启动log。偏偏从这时起,所有机器都老老实实的,没有任何异常。于是要求大家开始查virus查spyware,最后终于在某台windows server上找到一个spyware具有port scan的功能,但是目前并没有启动, 不知道周末是不是曾启动过。

痛定思痛,还是只有在网关上设置严格的防火墙规则。默认把所有Forward Chain上的TCP, try UDP, ICMP包全部扔掉,除了那些通往常用端口(80, 443等有限的几个)的。同时,log所有进出的packet。

所有这些事情干完,学校才最终同意解封。

其实,我们原来的简单设置,能撑了8年,已经是奇迹了。8年以前,局域网内只有寥寥几台机器;那个时候几乎没有任何spyware。8年之后,有几十台机器;spyware泛滥。这次的事情只是迟到的必然,只能亡羊补牢了。

[tags]Network Security,Gateway,Firewall,Spyware[/tags]

Tags: , , ,

« Older entries