• 虽然7,8年前就捧着Opengl的书在看,不过一直么有太深刻的理解,也没有写过太多的代码。

    这次需要做一个小demo,选择用opengl。我开始细分了一个曲面,大约有3000个三角形,然后变成了1万2,然后4万8。后来,我就发现自己的程序已经慢到如蜗牛一样了。

    我很好奇,一个如此之简单的模型,为何能慢到这个程度。就去google了一下,果然是因为opengl绘制命令的问题。粗暴的调用gl命令4万8千次,已经把性能杀死了。当然,解决方法是直接把模型加载到显存里面去。这个就是用VBO。

    说来惭愧,我已经读论文,看书看到各种牛逼的CUDA,OPENCL了。可是轮到写程序的时候,还是要回到每天附和着骂一百遍的老技术。贱搜搜的。

    我不是VBO的专家,有兴趣的可以看看这个链接

    大概而言,是要在显存中分配空间,绑定一个pointer,然后写入data。opengl默认提供了顶点,颜色,normal等array。对于index,有特殊的object。然后我就理解了,技术是怎么进步的。一开始固定的数组开始被诟病,然后就出现了动态的可以修改的版本。然后大家发现图形API的局限太大,就开始想着弄CUDA,然后是跨平台的OpenCL。

    最后GPGPU还是搞不定复杂的数据结构,又把位置让给了多核CPU。

  • 浅出GPU架构 - [专业领域]

    2011-05-27

    刚开始研究GPU的人,最后可能被各种名词和参数弄晕了头,GPU上面编程模型也不同,管线也不太一样。最近读了斯坦福Kayvon博士的毕业论文,里面对GPU的介绍有点意思,这里摘录几点小百科:


    如何最好的认识管线

    GPU的Pipeline会随着时代而发展,但是对于虚拟世界的抽象一直没有变过。这些抽象有:parametric patch,vertices,fragments,pixels。从建模的世界,到最后用户看到的像素,这个过程是怎么在管线里面变化的,很值得分析。

    GPU中的高频和低频

    这个是一个比较笼统的概念,作为图片而言,用户当然希望细节更多更真实,所以高频要足。但是作为GPU而言,希望计算越少越好,所以希望的是低频上的处理。例如动画,可以在骨骼节点上完成,物理可以在包围盒上完成。但是几何细节呢?恰恰相反,需要通过tessellation,displacement mapping来加入巨量高频。

    此外,很多优化是在低频空间做的。我记得冯结青老师上图形学课的时候,说图形学中的优化都来源于coherence,这就是低频空间的算法优化。

    提出来的问题是,如何用一套数据结构,保证两方面的性能。因为来来的几何只会更加复杂,如果在高频空间套用低频的优化,事情就失败了。

    GPU上的并行模型

    GPU不是万能的,GPGPU也不能挽救工业界。要想知道某一样算法能不能在GPU上优化,不妨参考下面两个限制。

    一、并行方面的限制:

    1. 算法要是线性执行的,最好很短。
    2.任务之间没有瓜葛,是相互独立的。

    二、资源访问限制

    GPU中不同类型的数据访问的方式不一样,stream,buffer,texture等。GPU适合做大块的block读取工作,不适合处理读写冲突的内容。

    经典的优化

    GPU上的算法之繁多,令人眼花缭乱,其实很多优化都是由编程模型不便造成的。这里有几个经典的优化:

    1. 剔除不产生作用的数据。例如Z-Cul。
    2. 紧凑数据结构。列如frame buffer。
    3. 减少冗余数据。例如vertex list。

    可以看出来,这些都是很好懂的部分,从算法上,减少对ALU需求,减少对MEM需求。

    固定管线存在的三大理由

    1. 可优化的。计算密集,指令很长。例如,光栅化。
    2. 没办法的。算法复杂,没有并行性。cull算法。
    3. 自身存在。硬件调度器。


     

  •  

    1. Bank Conflict

    最初遇到这个问题,是在Nvidia的GPU模型里面。如果多个线程没有很好的数据访问模式,就会引起Bank conflict。因为很迟才接触体系结构的东西,所以也不知道什么叫做一个bank,为什么会有冲突。

    后来看了一篇很老的内存架构的文章,终于想明白一些了。http://www.ece.cmu.edu/~ece548/handouts/13m_arch.pdf。我们能看到的内存是分成好几个块的,通常是8个,所谓的bank也就是这么个概念。如果有8块独立内存,我们就可以交错(interleaved memory)的安排内存空间地址,来并发访问。


    Multiple banks can provide multiple concurrent accesses

     

  •  

    今天看了GTC2010的keynote演讲,有几个地方很受震惊。一方面是他们的技术,让我之前的想法和努力,几乎化为泡影,另外一方面,也是感慨时代变化之迅速。

    Nvidia为什么要花钱在他根本不盈利的一个通用计算上,让我苦思了很久。现在我明白了,他们是在一个偶然的时候,赶上了时代的潮流。

    那就是摩尔定律的失效。

    摩尔定律的失效,让高性能计算这个非常有利润的固定领土重新成为了战场。这让我想起了美国和苏联抢占柏林的事情。你可以从一端去接近最终目标,别忘了,另外一端还有一个敌人。Nvidia是从民用领域进入专业领域的案例。

    我觉得这个和黄的眼光是有关系的,他发现的不仅是市场需要什么,而且是未来的市场需要什么。这么搞下去,AMD包括以前的ATI,被Nvidia吞并是早晚的事情。商业是无情的,如果Nvidia能够用几块显卡搞定一个CPU集群的事情,干嘛要用CPU集群呢?又笨又耗电。更何况是高性能计算中心和超级计算机之类的。

    相比于Nvidia,AMD和Intel在这个领域的投入就小的很多,Intel搞了个目前失败了的Larabee,而ATI的编程平台根本没有推广出来。CUDA这个东西,在学校的影响力已经很大了,他们正在复制微软以前做过的事情。Nvidia引导了领域内的公司的合作,就好象当年微软的DirectX统一了显卡接口一样。现在Matlab为GPU做了支持,Adobe为GPU做了支持,还有3DMax等等。

    当然,我不能说的太绝对,因为计算方法不同,GPU干不了专业集群能干的事情,不过能从很多程度上替代CPU集群。有很多案例,并且会有更多的案例被发掘。

    更可怕的是,Nvidia现在拓展了他们的业务,从PC到集群,还有移动端都有产品线。显卡是一个已经没有什么可争论的领域,而未来的盈利点的表现才是Nvidia的生死宿命。

     

  • Berkeley的计算机体系结构课程,在ituns上有下载到的版本。我这辈子上过无数的课,无数的让人昏迷到死的课,其中也包括计算机体系结构。

    而Berkeley的这位Dan Garcia,却能将一个专业课讲成一门有趣的中学手工课。在讲Pipeline之前,这位仁兄居然花了10分钟,在课堂上进行狂欢,庆祝他们终于把软件和硬件世界打通。

    我想这是一种性格吧。一种简单的,冲动的,疯狂的性格。这才是技术狂热者,狂热者不仅仅爱好计算机技术,可以爱好任何种类的技术,和艺术。我们亚洲人,太保守了,要疯狂一些。

    Be Open!

  • 今天遇到一个朋友,聊了聊他的专业。居然是用核磁共振读大脑的映像。

    原理是用核磁共振连续扫描大脑,独处一段时间的数据,分析各个脑刺激部分的信息,把这些信息输入建立好的模型。通过模型分析之后,输出大脑的映像。

    这个模型是怎么建立的呢?首先,有一个学习的过程,不断的用各种形状,颜色,等等信息去刺激大脑,然后记录相关刺激。这些离散的内容结合起来,就是一个简单的大脑反应模型了。

    据当前文献显示,目前已经能够把大脑中的映像恢复出来了,虽然很模糊,好像是一副过度缩放的图画。

    他们的下一步工作是读梦,虽然难度有点大。大脑,这个科学的最后处女之一地难道也要失守了?

    ------------

    我个人比较喜欢骇客帝国的方法,还是用物理连接的方法,读出神经信号比较直接。

     

  • Epic总裁讲的,从market point of view。

    未来的10年内,GPU这样的硬件平台速度可能会快上20倍,但是游戏产业的市场只有那么大,可能是2倍。

    所以,要做的事情,是让productivity主导performance。

    High-level programming beats low-level programming。

    高层的编程语言,战胜低级的编程语言。

    Easier hardwarebeats faster hardware!

    硬件的选择也并非越快越好。

    人们需要的是一个强大的Tool工具链。

  • 因为监听需求,买了一个HD380 Pro,在日本Amazon买的,花了1000人民币不到。

    网络上的中文资料很少,大部分都是280的评测。

    我看过一个youtube的视频,有一个人用绝对的波段平衡来测试各个监听耳机,结果是280要比380的波段平衡。不过考虑到综合的用途,还是选择了380pro。

    因为我自己还有一个HD595,所以主要对比来自于这款一样很流行的家庭娱乐级开放式耳机。

    听了几天,主要的感受发现这款耳机的解析度非常的高,细节程度很高,有一些比较普通的MP3格式的音乐,很明显的听出采样率不够的问题。而595的感觉没有这么强烈,普通的格式的音乐一样能变得比较饱满。

    低音的反应速度应该是这款耳机比较厉害的地方之一,因为没有刻意的音染,不会类似于劣质的家庭影院那样低音哄哄不绝于耳。相比于595而言,380 pro的低音要干净许多。

    因为是封闭式耳机,所以在声场上会输给595。拿595听电影配乐,你会感觉有一点家庭影院的感觉,但是380就是一个扁平的世界。

    -----

    总结而言,因为定位不同吧。595还是家庭娱乐的首选。不过380听起来比我想象中要舒服一些,也不累,更加便携,密封性还不错,公共场所不容易扰民。380的解析度和灵敏度是要超越595的。佩戴舒适度而言,还是595要好,595是天鹅绒的,还是那句话,定位不同吧。

     

  • 号外,号外。

    最新的世界500强计算机,中国深圳高性能计算中心的曙光星云现在位列第二。这个是日本、美国、德国工业化国家的后花园,而我们不请自来了。

    一些基本的信息如下: TC3600 刀片服务器,Intel X5650处理器, NVidia Tesla C2050 GPU。“Nebulae is currently the fastest system worldwide in theoretical peak performance at 2.98 PFlop/s. With a Linpack performance of 1.271 PFlop/s it holds the No. 2 spot on the 35th edition of the closely watched TOP500 list of supercomputers.”

    这样的消息在5-10年前,肯本就不会信,国家一个863根本养不起这样的项目。超级计算机领域与其说是技术密集型,还不如说是资金密集型。一个正常的集群,不用说搭建和折旧的投入资金,每年的维护,可能会在200万美元的级别。

    星河主要适用曙光的服务器,曙光是一个搞服务器的集团,并不自己产芯片或者配件。天津的星河系统,也是采用Intel,AMD这样的芯片。这次星云的异军突起,主要拜Nvidia的Tesla所赐,一片Tesla的GFlops性价比可是远远的要优于Intel的芯片。

    至于搭建超级计算机的技术,HPC领域的研究,国际参与度和热情也很高,不过在关键技术领域,还是只能看看热闹。

    总结而言。这个现象,说明国家富了,养得起这些科研和高级消费品了。另外一个方面是,希望国家搞科研,不要像搞体育一样。在领先国家普遍追求实用性能的时代,我们突然在峰值上做足了文章。这点,我只表示尽量理解,毕竟要经历这个时代的。

  • GPGPU,最近Nvidia喜欢大家叫她GPU Computing。

    这是我道听途说的一些东西,后面有主要原文网址,主要是关于GPGPU是怎么被炒热的。

    Nvidia可能有%99.999....的钱不是从GPGPU赚来。科研领域Make Sense的东西不一定在商业领域成功,比如现在有一款协处理器,就和GPU一样,插上去能做所有的事情,无比厉害。但如果是没有足够的人用,马上就会消失。GPU现在最大的商业优势之一,居然是每个电脑上都有一块这玩意儿。这块芯片当然是为了图形加速用的,但就是因为大家都有一块,所有的热情都被投射在其上。


    好吧,我们回到历史年代去找找GPGPU的前身。正所谓,历史无新事,在GPU上做一些通用计算早就开始了。当时的主要问题是没有标准的API。所以,开发者就必须把自己领域的程序用OpenGL或者DirectX的API写出来,非常痛苦。为了解决这个问题,一些人开始在原始的图形API上加了一层API来帮助编程。

    斯坦福的BrookGPUWaterloo Computer Graphic Lab的Lib Sh是最重要的两个工作。

    先说说BrookGPU。这是Stanford University Graphics Group的工作。他们当时提出了Stream Programming的概念。数据被打包成Set,形成一个stream,而不是individual的。执行数据的是kernel,可以是一个单独的kernel,或者是一个kernel链,就好像一般的pipeline一样。并行过程被kernel所隐藏,你不用指定一个循环什么的,而是告诉kernel一个保存数据的纹理。Brook后面的主要科研人员是Ian Buck,这是他的PhD毕业论文内容。2004年开始,其间中断过,2007年停止。


    Lib Sh是CGL的几个家伙想出来的,2006年停止维护,有一个叫RapidMind的公司负责商业化。

    Nvidia决定进入GPGPU战场是在2005年。他们当时雇了Ian Buck,Brook后面的推手,让他来负责设计Cuda语言。CUDA是Compute Unified Device Architecture的缩写,是Nvidia为通用计算提供的方案。籍此,Nvidia能够更加有底气的设计自己的GPU架构来适应未来的通用计算。Nvidia还提供了一些并非建立在图形API上的接口,让整个计算模型更加好用。当然Nvidia还做了很多其他的事情,比如把一直由CPU做的物理也弄到GPU里面去了。

    这个时候,我要是CPU供应商,我一定会非常紧张。通用计算本来就是CPU的天下,这样下去大家都跑过去用GPU了,岂不是末日不远了。特别是摩尔定律失效的这几年,每次大家讲个什么,都会把CPU和GPU的Peak Performance的图拿出来对比一下。最新的CPU比GPU慢了已经100倍了。

    所以,无论用什么办法,CPU的生产商,Intel,AMD之流的是挤破脑袋也要一起来玩这个游戏的。然后AMD收购了ATI,为了赶上Nvidia,ATI也从Brook中吸取营养,搞了一套自己的系统,叫做Brook+,依然有Stanford维护。

    当这些都在进行的如火如荼的时候,Apple公司为了让MacOS更好的支持未来的多核体系结构,搞出了一套叫做Grand Central的东西。Apple未雨绸缪,是有道理的,因为自从CPU撞墙之后,唯一靠谱的大大提高程序运行速度的方法就是并行了。而Grand Central就是要让程序员从各种多线程编程任务中解脱出来。Apple的某人碰巧就发现,这个东西也符合GPGPU领域的需求。于是Apple就把这套东西包装成了一个API标准,叫做OpenCL(Open Compute Language)。

    你也知道,大家在这个GPGPU领域打得晕天暗地,突然发现了一把利器,马上都聚了过来。既得利益者,不想失去江山,其他的公司又害怕被置之度外,失去这个机会。Khronos的团队集合到的人马有Intel, AMD, ATI, Nvidia, RapidMind, ClearSpeed, Apple, IBM, Texas Instruments, Toshiba, Los Alamos Nation Laboratory, Motorola, QNX等等。大家一起制定了1.0版本的协议。

    OpenCL的协议中,并行程序不仅适用多核的CPU,还能利用有很多核的GPU。令人鼓舞的是,OpenCL的协议现在被IBM Cell,ATI GPU,Nivida GPU,AMD CPU,Intel CPU写成了了驱动。

    好吧,故事就到这里结束了,从此OpenCL和王子们过着美好的生活。

    然后呢?Intel的目的是想让自己X86的基因到处存在。Nvidia的目的是让GPU吞噬CPU。。。大家都不想死。

     

     

  • “We want to run Renderman like shaders in real time, it's too hard. Because we want to render millions of pixels per second, hundreds frames per second, closely to a billion of pixels. We do hundreds operations on one pixel, but in RenderMan we do hundreds of thousands for example noise. 

    We start with very simple things, we do several operations on each pixel which we are capable of. ”

     

    图形领域的经典论文:

    在实时系统出现(GPU)之前,图形领域的很大部分在电影制作上。怎么设计一种系统,让艺术家把现实世界的内容建模到虚拟世界里面,并且尽可能完美的渲染出来。现代图形系统的奠基工作,大约发生在1984年左右。(但我们的各种图形学书中,这些都不是重点,很多书是从扫描线算法开始讲的,一下子把大家的兴趣都给干死了。谁关心直线或者圆怎么扫描出来的。更加无聊的是,考试居然还要考这些算法的代码。)

    回到主题,现代图形系统的基石是Pixar公司的RenderMan这些东西,后来不断进度,成为世界性的标准。实时系统不断的从中吸取营养,并且加入新的内容。

    84年的经典的论文包括:

    Plants, Fractals, and formal languages.  - Alvy Ray Smith
    Chap - A SIMD Graphics Processor. - Levinthal and Porter
    Distributed Ray Tracing.  - Cook, Porter, and Carpenter
    The A-Buffer.  - Loren Carpenter
    Shade Trees.  - Rob Cook
    Compositing Digital Images.  - Porer and Duff

    85年的

    An Image Synthesizer. - Ken Perlin

    Cook和Perlin的想法最后合成了RenderMan系统,他们设计了一套牛逼的接口The RISpec,用到现在。怎么说呢?现代的图形学时代是一个令人扫兴的年代,只能靠着并行系统的进步来壮壮阳。



  • 在能够比较好的控制自己的声音,体会歌曲的情绪之后,还是有一些必不可少的技巧来掌握的。附录是我很久之前写的颤音技巧,现在想来还有一些补充,就接着写了。

    直观的来讲,喉部、声带、咽部、鼻腔、更高位置的头腔都可以作为共鸣和颤抖点。所以在了解这写基本原理之后,需要不断的去控制练习这些部分的肌肉。那种结尾的大颤音呢,光是气颤还不够,所以一定是控制肌肉抖动,产生一定的音畸变。

    举几个例子吧,比如林志炫的喉咙很放松,他的中频很多小颤音,集中度也很好。刘德华的...
  • 从Avatar到3D游戏 - [其它]

    2010-02-09

    技术这个东西,常常是很委屈的。市场火的时候,就是宠妃,不火的时候就得独守深宫。

    往事1.

    最近深蓝之父许峰雄在他的官方博客中预测到,2010年是3D元年。对其在游戏领域的推广有这么一段话:

    “而在3D市场的推广中,游戏产业应该是其中的关键因素。对于现有的PC游戏而言,如果你用nVidia GPU,再加上一个高频率(120 Hz或者更高)的显示器和特制眼镜,你就能在3D效果下玩大多数现有的游戏了(注:针对3D输入信号,nVidia GPU通过编程可以快速且连续地产生两眼的影像,以达到其效果)。索尼在CES中展出的PS3可以用来玩3D游戏(索尼PS3刚好使用了nVidia GPU),不过这需要改固件(firmware)甚至其他相关硬件设备(索尼的参展人员称3D PS3只能在索尼的3D电视上使用……)

    这让我想起了一个陈年往事。2007年的秋天,我遇到一个美国海龟,博士辍学,自己搞创业。当时他带了一套设备和一纸专利来到上海。我看过他的技术,是一个液晶显示器,但是这块显示器在构造上略有不同,有两个数据接入口,分别连在笔记本的两块显卡输出口上。因为屏幕能够高速刷新,所以带上偏振镜片后,每一只眼睛能看到刚好是60Hz的图像。

    当时这个海龟想从美国找3D片源来中国推广。但他似乎也嗅到了游戏领域的前途,就问我,现在的游戏能分别的产生两个角度的图像吗?我当时的想法是从游戏源代码的角度来解决问题,多加一个camera,就能很准确定位视角。后来想想这样不行,就又想从DirectX角度来解决问题,但这样的话又要包装dll,工作量太大。如果能够从shader角度入手的话,是最简单的。

    不过我后来回去研究了一下,日本的3D电视都推出来了,谁还带个偏振镜!想象一下,网吧寂寞的帅哥们都带上牛逼的墨镜玩着劲舞团,是何等壮观啊。。。于是我无情的把海龟给抛弃了。现在再读到这篇新闻,不禁感慨,潮流是需要引导的。如果你觉得带上墨镜玩游戏是个时尚,那就是可以接受的。就好像大家都喜欢女主角的造型,在大街看到蓝皮的人,也不要惊奇拉。

    往事2.

    许峰雄的预测之二:eReaderRus,电子书是我们。最近很红的Kindle电子书从被造出来之后,没少被模仿。

    好吧,那是在2004年的冬天,我和几个非常好的朋友突然觉得,电子书的市场已经成熟了,日本sony推出了一款不错的产品。我们决定跟风弄一把,于是折腾了大约半年之后,在Arm芯片上写出了一个电子书的程序,搭了个原型。然后呢?然后大眼瞪小眼,不了了之了。

    这件事情一直刺激着我,正好后来在北京呆了一段时间,每次在王府井的图书大厦的楼梯附近,总能看到各类的电子书的尸体在那里挂着,又贵又无人问津。从技术上讲,这些东西都差不多,程序只不过是体力好的程序员的产物而已。新的kindle当然借助了更好的显示屏,但我想更多的因素是人们的思维转变。如果不是网络读物,google图书馆,平板电脑等等的东西逐渐改变了大家的习惯,电子书又如何被接受,并且流行呢?要知道,叫嚣电子阅读器市场已经成熟的企业已经不止一打了。

    ————-

    回归本文主题,技术还得看市场,东风刮的狂,周郎才能爽。加点我个人的预测吧,如果硬件不是问题的话,中国的山寨也会面临一次转型的机会。那就请设计界的朋友们多努力吧,我们可能不缺乏个人创意,我们需要的是一个愿望和一个圈子。

     

  • 如果经常去网络上看口琴大牛的视频的话,就会发现他(她)们的颤音总是拉的很好听,有时候会觉得类似于某种管乐器。一开始可能会觉得是做出来的音效,其实这是在颤音基础上做的压音。

    这是我两年前写的一段文字:

    “颤音这个词,用中文是无法去正确的理解的~

    在英文术语中,颤音有两个相关的单词——vibrato 和 tremolo。
    1. vibrato的意思是声音随着时间有节奏的改变音符的pitch(音调),或者更物理一点,有节奏的改变frequency(频率)。
    2. tremolo的意思是随着时间变化改变音符的volume(音量),在波形图上的体现是振幅(A)的变化。”


    在初级入门教学材料中,老师已经教过如何去做一个颤音了,不过那个是用手掌来辅助的。在拿麦演出的时候,手掌就帮不上忙了。所以,需要用气息来做颤音。


    人的发声系统就好像是一个气泵,隔膜压迫者气流上升,通过呼吸道到达喉咙,在喉咙这个地方产生声音。喉咙就好像是簧片,控制气息怎么出来。吹口琴也是一样,尝试着哈哈哈哈哈哈的笑一下,就会发现气流是一段一段的输出来。接下来做另外一个练习,啊--------------的一个长音,后面在隔一定频率加入一个重音啊。也就是保持气流不断的情况下,做一个间隔出现的强度变化。这就是tremolo。

    tremolo是vibrato的基础。歌唱的时候,如果在tremolo的重音处加入一个半音的变化,最终形成的结果就是vibrato,当然气流的输出控制是基础。

    我们回到口琴的领域来。试着对着口琴的某一个低音孔猛烈的吸一下,会产生一个因为气流的音变,也就是压音。同理,在tremolo的基础上,每一次的重音处,用气流来顶出一个轻微的音变,就能产生那种类似于管乐器的感觉了。

    每一个人的习惯不同,这样做产生的感觉不同,我的建议是控制在一个半音以内。如果是演奏需要的话,比如一些特别Blues感觉的效果是除外的。

    上面都是一些原理上的解释,必要的基础是压音已经会了,tremolo也已经熟悉。此外,就是要注意用喉部来控制气流的输如和输出,产生稳定的强弱变化。

     

     

  • 读书笔记:Ray-tracing strengths and opportunities

    作者:Eric Hanies

    简介:《Real-time Rendering》一书的作者,图形学界的大佬,现在在Autodesk工作。这篇报告2008年发表,对比光线追踪和光栅化算法的特点。这不是一篇系统的介绍算法的报告,恰到好处的轻轻点到了很多当前的领域问题。



    一、为什么光线追踪算法在这么多年里一直被人推崇?

    1. Size

    光线追踪的核心程序非常的小,可以用非常少的代码实现。相比而言,光栅化的算法要繁琐的多,虽然如此,光栅化算法在移动平台上还是很容被容乃的。

    2. Shape

    Intersectable == Renderable,所以光线追踪算法支持非常多样的几何形状。光栅化系统中,只存在点、线、三角形,一切的其他形式数据都要先进行tessellation。

    3. Sampling

    光线追踪算法中,采样可以是nonuniform,adaptive的。

    4. Stochastic Effects

    Motion Blur、DOF、Soft Shadow这些效果,在光线追踪算法中是自然获得的。

    5. Reflection,Refraction

    上面讲了这么多的光线追踪和光栅化效果的对比,如果都是那么好,就不会有光栅化算法出现了。有一个关键的问题,限制了光线追踪算法的应用:“The brute-force approach is ridiculously expensive”。光线追踪算法虽然精美,但是计算量实在太大了。而且GPU上用统一的数据表示,实现起来也更便宜。

    二、光栅化做的如何?

    反射。有一个理论,实际场景中,只有百分之十不到的物体是有反射特性的。所以,对于光栅化的游戏来说,这些是几乎不需要的。虽然,光线追踪算法总是炫耀一些精美的效果。

    阴影和景深。现代的游戏都能够做的不错了,但是不要忽视了一点:Buffer(这是计算机发展使上屡试不爽的时空转换术,拿空间换时间)。在GPU实现各样的算法时,大量的使用了buffer,仅仅是2000年以前叫得上名字的buffer就有30个以上了。

    举例而言,实现阴影效果的话,就用shadow maps,对于跨越两个maps的物体,再做一些增强,然后为每一个animated物体再单独使用一个map。实现透明的话,要用到alpha depth stencil buffer,即不能保证正确,还不能够做AA。至于DOF和Motion Blur,更不用提了。

    小结而言。光线追踪容易编程实现,核心的优化效果明显,和现实世界模型相吻合,更容易和艺术家沟通。目前,光栅化可以在shader中完成多种形状物体的相交。从简单的物体,到parallax occlusion,volume rendering等。能够做的实际上已经很多了。

    GPU是目前为止,唯一成功广泛应用的并行处理器,因为开发者基本不知道那是并行的。 - Matt Pharr。

    二、实时光线追踪领域

    另外一个热门的领域,Interactive Real time Rendering,简称RTRT。从1987年,AT&T的Pixel Machine上,用16K的processor实现过RTRT了。

    在2007年,已经可以在8核系统上,以HD分辨率,90FPS运行光线追踪版Quake游戏。

    未来的一个趋势是高分辨率,不管多么强大的计算能力,都能够被高分辨率用的光光的。比分辨率增长更快的是场景的复杂度,如今一个小小的模型,就可能是4-25million个quads。

    对于复杂的场景,因为光线追踪场景有O(logn)的搜索效率,许多研究基于这一点展开的。很多人对光栅化的O(n) vs. 光线追踪的 O(logn)有争议,事实上,光栅化算法采用了Hierarchical frustum culling,也用了LOD,这样的space is speed的手段,此外Occlusion Culling也实现的越来越好了。要澄清的是,即便在LOD和视点剔除都应用完毕之后,光栅化还是要处理所有的物体,因为目前遮挡剔除还很不好用。此外,小于2x2像素的三角形,对于pixel shader而言也只是浪费,只会产生一些么有形状的东西。

    "cache is king, space is speed" 这个是在业内广泛通晓的常识。

    Interactive Render里面没有最重要的效果,最重要的就是 6+ FPS,这个不实现,其他都是多余的。有人会把电影渲染搬出来,说这些那些效果很重要,但要注意的是电影渲染目前每一帧要用到20分钟-20小时不等,远远不是实时领域的事情。


    实时渲染领域的一个挑战是:Constant Cost。如果是在一个RT环境中,将视点对准一个高度反射的物体上时,ray-tree会急速膨胀,这种时候frame rate就无法维持了。类似的情况也将发生在GPU上,当Shader和算法越来越复杂的时候。

    光线追踪是一个通用的算法,不依赖于某种平台或者CPU,而光栅化依赖于API,例如要用OpenGL或者D3D。GPU曾经也是special purpose硬件,现在正变的越来越通用。硬件不应该破坏创造性,不应该去破坏上层的结构。硬件存在的唯一理由就是速度。

    硬件趋势的角度来看的话,处理器能力,内存容量,带宽都持续的增长,而延迟(latency)却没有什么太大的改变。在遇到三座大山(指令集并行潜力已尽,内存访问速度不够,能耗过大)之后,多核化是一个必然的发展方向。GPU和CPU这两种主流的芯片,目前成相互靠近,一方面CPU希望能够提高并行能力,而GPU则希望能够处理更多的通用计算。

    光线追踪本身是具备非常大的并行性的,叫massively parallel。一个重要的重要的地方,是隐藏延迟,CPU利用更牛逼的Cache,而GPU则通过多线程来隐藏延迟(GPU上的问题,请参见A Closer Look at GPUs)。对于Cache系统而言,如果miss了,那速度的牺牲是非常大的,大约是30-50倍。所以说secondary stinks。那些因为折射,反射等等而产生的光线和入射光线没有什么coherence可以利用,常常会miss cache。

     

    四、未来的趋势

    可以预测到的,一个是多核化,另外一个是架构上的组合问题,更快的核,还是很多慢一点的核之间的tradeoff。GPU上的ray-tracing也会是一个趋势,这能发掘同类系统的问题,促进其进步,也许下一个就是HPU(C->G->H的玩笑了)。有人预测光线追踪会和光栅化融合起来,不过问题是如果光线追踪作为一个补充,可能生存几率不大。此外,光线追踪所消耗的transistor还是太多,经济角度上是难以接受的。

    其余的如Cloud Computing,云计算的能力是足够大的,但网络间的带宽和延迟,会使其在交互性上缺善可呈。移动平台上的,更少的像素意味着计算需求小,多个低功耗的核也会减少能耗。电影级别的渲染呢?刚才提到过,还太远。什么样的分辨率?多少anti-aliasing?需要Motion Blur和Depth of focus吗?什么样的质量?一个电影可能有数G的纹理,RT距离这些还太远了。虽然光线追踪是照片级别真实的最好方案,Monte Carlo方法总能给出正确的效果。但我们必须简化模型,为了FPS,少用一些BRDF,light transport paths,当然每年简化的会越来越少。

    最后所有的问题回到经济问题,如果这么做更有效率,产生更多的钱,那么所有的问题最终都会被解决。


    ---------------

    这个报告是2008年的,不算是最新的,但作者确实已经在图形领域泡了20多年,见过的东西多了,我们啊,还too simple too ... sometime ...。

    我给个总结上的总结吧。

    1. 光线追踪算法在其算法原理上是照片级别真实感的最好解决方案(当然要配合上许多的其他图形算法,不是一个内核就可以高枕无忧的)。

    2. GPU上的光栅化算法因为其设计之初的考虑,做出了效果上很多的让步来获得real time。

    3. 时代不同了,并行化计算革命正在commodity领域发生,这些本来是HPC的东西要开始拿到民间来用。当前的硬件最麻烦的问题之一就是访问延迟,出发点不同,掩盖延迟的方法也不同。CPU用cache,GPU用多线程。

    4. GPU开始变得越来越通用,于是real time rendering也越发强大,更多的牛逼算法开始可以在GPU上实现,包括光线追踪的一些版本。

    5. CPU开始多核化,光线追踪终于找到了一个,与历史上就尝试过的环境(SMP?)类似的地方。

    6. 这个时候,我们就再不能把GPU当成GPU,或者把CPU当成CPU,而要把它们都当成HPU(或者XPU?),一个未来的通用计算平台,这个平台有很好的并行性,可以用多种手段隐藏延迟,可以有好的模式容纳各种app,比如光线追踪算法。当然如果对programmer friendly是必要的,但不是我关心的。

    7. 实时光线追踪RT,目前能支持的效果其实还是很有限的,为了维护帧率,和电影画面相比,还很远很远。

    8. 什么时候大家都发财了,就可以玩光线追踪游戏了。

     

  • 读书笔记:Introduction to Parallel Programming Models
    来源:Siggraph 09 Course
    作者:Tim Foley   Standford University

    当今的电脑游戏混合了数据和任务并行算法,并且运行在一个流水管线上。涉及到的并行模型分别称为:Data Parallel、Task Parallel、Pipeline Parallel Model。

    图1. 三种并行编程方式

    1. Data Parallelism 数据并行模型

    数据并行的核心思想是:让多个元素在同一个内核(kernel)上运行,单个元素之间的计算要具有独立性质。数据并行可以非常好的适应当前的计算机体系结构。其一,可以用SIMD和SIMT以降低每一个元素的计算成本;其二可以用轻量级线程(lightweight thread)隐藏内存访问延迟。

    理论模型:

    定义N个独立的work items,可以是“elements”、“fragments”、“strands”、“threads”。所有的work items都运行同样的程序:kernel。work item所使用数据[0, N)叫domain of computation

    数据的定义域可能是规则的(regular),也可能是不规则的(irregular)或者是嵌套的(nested)。

    Regular Domains:

    图2. Data Structure:Regular Array。Computation Domain:1D Interval

     
    图3. Data Structure:N-D Array。Computation Domain:N-D Interval

    图4. Data Structure:N-D Array 1-D Array。Computation Domain:1-D Array


    Hierarchical Domain:

    层次结构允许数据之间的通信,适用于sums、scans、sorts这些操作。层次数据结构往往和多级存储结构相关,例如Register、L1 Cache、L2 Cache、DRAM层次。这样的话,work item可以访问kernel的参数,自己的下一级数据(scratch memory),自己祖先的下一级数据。图5的例子中,每一个元素都计算出一个a,累加到共享变量sum中。

    图5. hierarchical data structure


     Irregular Domain:

    在bucketing或者collision时可能会用到的不规则数组。


    图6. 一种简单的in-memory实现方式

    对于kernel的运行而言,可以对每一个elements进行操作,也可以对每一个bucket进行操作。图6的实现思想是将不规则的数据结构变成flat index和存储array。当然也可以选择其他的实现方式。

    小结:数据并行的研究领域和数据类型domain有很大关系,不同的数据模型下的实现方式对效率的影响很大。

    2. Pipeline Parallelism

    管线并行的主要思想是通过划分多阶段来增加throughput。例如DX10管线是由一部分固定功能部分和可编程部分组成,可编程部分还包含了可以并行执行的kernel。管线之间用FIFO队列链接,利用了producer-customer的locality。Pipeline主要通过平衡各个管线阶段来提高效率。例如光栅化算法中,每一个输入的三角形都会产生0-N个fragment,而光线追踪算法的话,每一次hit会产生0-N个secondary光线,这就产生了imbalance。管线之间用队列交换数据,调整这个不平衡的情况。

    图7. D10管线

    GRAMPS [Sugerman et al. 2008]这篇文章讲述了如何自己建造一个管线。目前这个方面热门的研究有:核间的动态任务Dynamically scheduling workloads to cores、控制队列储存需求Controlling queue storage requirements


    3. Task Parallelism

    任务并行的主要针对异构并且非规则的工作,通过直接表达依赖关系来获取scalability。那么Task性质如何呢?

    如右图所示,Task可以被看成是一种异步函数调用,例如在Y执行之后,执行X。任务之间的关系更多的是合作关系,而不是抢占式关系。任务的调度可以在硬件或者软件层次实现。

    假设任务能够完美的分配到各个执行核上去,决定任务完成时间是线性运行部分。这个问题上Amdahl’s Law可从来不含糊。




    图8. perfect schedule

    更实际的情况里,各个任务之间存在依赖关系,如图9所示。


    图9. 任务间的dependency

    在知道task之间的依赖时,就可以把work分布在各个核之中,看上去就像是填充在空隙之间。


    图10. 考虑了dependency的任务安排

    在PS3平台中,每一个HW context有一个Work Thread来安排调度,从incoming队列中取出任务,用“work stealing”(Zhou Kun的GPU Reyes论文也是使用这个方法实现负载平衡)的方法来实现load balance。

    图11. task granularity

    接下来是任务粒度的问题,如图11,如果粒度太大,会产生很多缝隙。紧凑的任务粒度能够获得更好的利用率,不过也可能会造成调度overhead,所以要调整task的size来达到一个平衡。

    和OS的线程相比,Task也是通过调用函数来实现功能,在队列中等待被分配到执行核上去,在完成之后也能触发事件。不同的地方是Task不是抢占式(preemptive)的,而且是轻量级的create/destroy。

    小结,任务系统处理了其他模式不能解决的问题,例如异构,不规则的内容,动态产生的任务,依赖性关系等。Task并行提供了扩展性,并且能够处理负载平衡。


    4. 总结

    实际的运用中,往往是结合了三种不同的并行模型。

    Data Parallelism很容易在throughput架构上得到利用,有隐式的SIMD利用,隐藏内存访问延迟。不利的地方是,只适用于大规模,同构问题。在遇到不规则的data access或者control flow的时候,性能会急剧下降。

    Pipeline Parallelism能够处理上文提到的数据扩张的问题,并且发掘生产-消费者模型的局部性。不足的地方在于,最佳的调度策略依赖于工作负载。此外,对于当前的硬件还没有一个general-purpose的工具

    Task Parallelism能够应对不规则的动态的问题,更加灵活的处理全局app的结构。不足的地方是,对于延迟隐藏还没有automatic的支持,而且要利用SIMD的话,必须要显示的实现。

    上述三种并行模型提供了可靠的扩展性,尤其在视觉计算领域解决了很多问题。这些模型涉及到体系结构,算法和工具层面的问题。

    ---------------------------

    诸多领域,要取得高throughput和scalability的话,都会采用这三种模型的混合实现。这篇文章讲述了各个模型基本概念,最后给出了现在面临的问题。对于图形应用而言,如何采用合适的数据结构提高实现性能,如何解决任务间的负载平衡,如何解决某些关键操作的访问延迟,都是以前和未来需要研究的问题。

     

  • 一晃已经当了很久的初学者了。偶尔也会有完全不懂的人来交流,回顾这段时间的学习,有几个很大的错误,可惜没有办法回头再来一次了。如果不是想一个月速成,泡妞走人的话。还是好好的练习吧。有这么几个问题,我觉得有必要分享一下:


    1. 手指的疼痛。人的身体是会不断适应的,新鞋还磨脚呢。大约1个月时间,手指就会自然适应,之间没有任何好的办法,一定是疼过来的。

    2. 关于吉它购买。吉它一开始不要追求音质,而追求做工。最重要的如弦高要合适,琴颈摸上去要光滑,音尽量准一点。大约700RMB以上的吉它,这些都能符合吧。如果一开始买了一个非常差的吉它,很多技巧可能完全没有办法搞定。

    3. 基本功的练习。大多数热情的初学者都忽视这个问题,可能一上来学会10个和弦,然后就觉得什么都会了。就和上文所说的一样,如果要长期练下去的话,要注意咯。

    3.1 节拍器

    一开始不要追求速度,而是追求左右手的合作灵活度。即使很慢的歌,如果节奏上不准确,也是不好听的。

    3.2 爬格子

    爬格子是基础练习中最有效的一个部分,它能让你的手指撑开,适应吉它弹奏的需求,能使左右手配合灵活。

    3.3 扒谱

    这个不算基本的练习,但对提高很重要,当知道很多和弦和节奏型之后,可以尝试着从别人那里学到更多的东西,还能考验听力。感觉有点像搞科研要读论文一样的。


    总结而言,初学求稳不求快,坚持每天15分钟或者以上,一周5次或以上,细水长流。

     

  • 微软学术搜索介绍

    http://academic.research.microsoft.com/Default.aspx

    我以为微软的学术搜索引擎是一个新的东西,但其实已经很多年了。对于google和其他的搜索引擎,比如DBLP等,微软的工具操作性更加好。


    首先,分类的论文、作者、会议、期刊的搜索非常容易找到某个领域内最重要的文章和会议。

    其次,对于会议,微软有统计来的Publication和Citation数量,这两个数字结合起来,很容易辨别一个会议的级别,还有会议的规模。一般而言(我的粗略估算),Publication(P)比Citation(C)多的会议,都不算Rank2的,C/P 在3-10之间,大约是Rank2,比10高的算Rank1的。顶级的会议C/P常常在30以上。

    第三,对于某一个研究者,微软的学术搜索给出了逐年publication和citation的图示,非常好用。不仅如此,每一个学者的G-Index和H-index都有表示。如果要得到一个人的研究能力数据,参考H指数是一个不错的办法。下文是一段引用来的说法。

    “H-index 是标志一个科学家多年来研究工作影响的一个指标。最近 20 年获得诺贝尔物理学奖的物理学家的 h指数,平均值为 41。美国科学院物理学与天文学部 2005年新科院士的 h指数平均为 44,如果一个人在从事科研 20 年后(从发表第一篇论文算起),h 指数能达到 20,就算是一名成功的科学家;能达到 40,则是一名杰出的科学家,很可能只能在名牌大学或研究所才能见到;能达到 60(或 30 年后达到90),则是首屈一指的大科学家了。美国研究型大学的物理学家要获得永久教职(副教授),h 指数一般为 10 到 12,晋升为正教授则大约为 18。成为美国物理学会会士的 h 指数一般在 15 到 20,而成为美国科学院院士则一般在 45 或更高。”

     

    -------

    这个工具仅限于计算机领域的搜索,和google学术相比,功能更全面,值得推荐。

     

  • zz聊天的技巧 - [其它]

    2010-01-07


    http://www.ftchinese.com/story/001030629

    总结一下吧:不该谈正事的时候,不谈正事。关心他人的兴趣所在,不要吝啬谈论细节。

    电视剧《蜗居》中,男主角市长秘书嗔骂情人喜欢说“不会聊天”,通常这种情况发生在情人提及他的老婆时;官场小说《苍黄》中,当县办主任和新上任的县长同行,也不知该说些什么:正在进行中的领导班子选举的事不能说,有关自己顶头上司县委书记的不能说...
  • 读书笔记

    七田真一直推崇右脑记忆法,他也为外语学习出过一本书 - 《超右脑英语学习法》

    一、七田真的基本理论

    1. 左右脑差别

    左脑的记忆回路是低速记忆,而右脑的是高速记忆。左脑是语言脑,右脑是图像脑。通俗的讲,我们常说左脑是理性思维,右脑是感性思维。左脑是通过理解中心,而右脑的工作方式不同,七田真认为右脑的潜力是无限的。这个很显然是个伪证,但没有人能推翻,也就姑且这样吧。

    2. 深层记忆回路

    重复信息能够经由浅层记忆回路到达海马中的深层记忆回路,记忆分为浅层记忆和深层记忆。大脑生理学中这样讲:浅层记忆发生在表层脑侧头叶中的语言区,深层记忆发生在大脑的深层部分--旧皮层中的海马。

    浅层记忆发生在表层大脑中,很快就会消失得无影无踪。而通过大量反复的朗读和背诵,我们就能够打开深层记忆回路,大脑的素质会发生改变。深层记忆回路是和右脑连在一起的,一旦打开了这个回路,它就会和右脑的记忆回路连接起来,形成一种“优质”的记忆回路。

    更多的记忆回路请参见附1.

    3. alpha脑波

    右脑学习中有一个要点,就是学习之前先冥想。通过冥想、深呼吸和想像,大脑就能够由左脑模式转换到右脑模式的状态。所谓的右脑模式,就是alpha波模式,这个时候大脑不容易疲劳,是理想的学习状态。还有很多的alpha波音乐,就是不断在alpha波段频率出现声音刺激,不过耳机差一点的话是听不到的。

    更多alpha波的内容请参见附2.

    二、具体学习原则

    七田真虽然研究很多这方面的大脑原理,但对于实际的学习,也有一些具体的建议,比如他的七步学习法之类的。这里罗列一些语言学习的注意点和方法。

    1. 语言不是用眼睛,而是用耳朵来学的东西。

    每天多听听英语磁带吧。如果你经常沉浸在英语的声音中,只需3 个月,你会在某一天突然发现自己能够
    清楚地听懂英语了。

    2. 朗读和背诵

    每天的朗读对英语学习是很重要的。每天读课本时要发出声音,争取能够背下来。坚持这样努力下去, 记忆力就一定会发生变化。

    3. 快速看、听、读的学习

    通过眼睛和耳朵尽可能快而多地获取信息,这样就能够促进右脑的活性化。速读和速听都是有交的手段。速听就是用平常的2~4 倍的速度来听。用这种方法来听英语故事或单词, 能够让你在短时间内迅速记住大量信息。

    三、舍里曼的学习方法

    舍里曼是七田真推崇的语言学习能手,他一生掌握了很多国家的语言。下面是有关他学习方法的只言片语:

    “我带着异样的热情, 专心学习英语。但因为当时的情况比较紧迫, 所以我发明了一种简单的方法, 用它可以来学习所有的语言。这个简单方法的原则是:

    1.大量朗读,绝对不要把原文翻译出来;
    2.每天抽出一个小时,经常就自己感兴趣的对象写写作文,并根据老师的指导修改作文;
    3.把前一天改好的作文背下来,并在下次学习时背诵。

    我从少年时代开始几乎没有训练过自己的记忆力,所以我的记性不好,但是我把所有能够利用的时间都用来学习了,那时简直像是在偷时间用。为了尽快学会会话,我就在星期天参加英国教会的礼拜,常常要去两次。我在那儿听牧师传教,小声地一句一句地模仿他说话。不论去哪里,也不管是不是下雨,我都带着一本书,从书上背点儿什么东西… 我把我的这种方法跟很多人推荐过。通过这种方法方法我用半年时间掌握了英语的基础知识。”

    舍里曼每天用两个小时朗读《忒勒马科斯的冒险》。这里有一个记忆的秘诀, 就是“ 只管朗读”,大声地朗读, 这是掌握语言的秘密。他每天用两个小时“ 只管朗读”, 并且为了有个人在旁边听着,他雇了一个贫穷的犹太人,每周付给他4 法郎。这个犹太人对俄语一窍不通,但是为了赚钱他就每天来舍里曼这里坐上两个钟头。舍里曼对着他,大声地、认真地朗读小说。为什么舍里曼要这样做呢? 因为他把这种学习当做一项任务,为了完成这项任务只能这样做。他给自己制造了这样一种场面:这个犹太人来到自己的家里是因为自己花了钱,不管是讨厌也好喜欢也好,自己一定得完成今天的任务,大声朗读。在读的过程中会有很多发现,这样读完一本书就整个地记住了。

    四、其他的语言碎片

    主要的内容就是围绕一、二章中七田真的原理展开的,其余一些有意义的片段摘抄如下:

    1. 人类的大脑能根据所给条件来完成工作。如果是低速进入大脑的信息,就由左脑来加工;如果信息快速地进入大脑,就由右脑来处理。此外,信息如果输入左脑就只能从左脑输出,如果输入右脑就只能从右脑输出。右脑既不讲究理解,也不追求记忆。只要你把信息快速、大量地输入右脑, 它就能记住。

    2. 舌头和嘴唇配合起来, 多次反复地把自己已经理解的例文内容加上声音,这就是一种发音练习。理解了的东西变成声音,也就是变成了语言。把自己早就听惯了的自己的声音送到自己的耳朵里, 反复练习听音。

    3. 学习方法有以理解为中心的方法和以记忆为中心的方法。左脑学习法是以理解为中心的方法。与此相对,右脑学习法则强调背的重要性。

    4. 当你思考所背内容的意义时你就开始使用你的左脑了。如果你只是背,这时你的精神非常集中,听觉区开始兴奋,而语言区等其他区域的兴奋被抑制住了。

    5. 儿童虽然不学习语法,却能够在听到的语言中发现规律,从而自由地说出话来,这也要归功于右脑的记忆机能和自动处理机能。成人难以学好外语就是因为右脑没有处于优势地位, 而左脑长期地居于主导。

    6. 请记住,重复听的次数可以少一些,朗读的次数一定要多,最少500 遍。学习范围(学习的量)小一点儿没关系,千万不要过宽。把为数不多的文章读上它500 遍、1000 遍或2000 遍,也一定会有奇迹发生。 

    7. 要把自己想说的背诵下来说,这种训练是很有效的。不要练习对话,英语会话学习班的对话类型起不到什么好的效果。对话太浅了,只能在特定的场合里使用。但是如果你记忆的是主动型的内容,你就能够根据题目连续说上30 分钟甚至40分钟。英语会话培训里的那些购物、饭店或海关的场景只能用在特定的场合里,这些可以以后再学。现在要记忆的是对现在有用的内容。

    8. 背一些自己想说的内容,每天用30 分钟朗读这些内容就可以了。

    五、总结语

    很多方法似乎是套着神秘的伪证科学又老生常谈,什么“听说读写”大家似乎也都知道。但是,每个人的学习方法不同,也有有两种差之分,不妨参考参考这里的说法,也许能获得什么信息。
  • Suzuki Manji是铃木乐器创始人,这款琴以他的名字命名。

    口琴这个乐器自从百年琴啊以来,就出现了诸多经典型号,至今改动不大。实际上,最好的琴往往不是大众货架上的那些名琴(out of box model),而是自己定制的(custom)琴。Custom的大潮引起了铃木公司的注意,他们第一个将custom琴中的流行元素引进了Manji这款产品的设计中。

    具体如下:1. 木头塑胶格,取木格的音质和塑胶格的密封性。 2. 盖片改成全开放式,增加演出的音量表现。 3. 修改盖片螺丝的位置,更加牢固的盖片固定。 4. 宽厚的盖片使得吹奏更舒服。 5. 簧片重新设计,达到最佳角度。

    具体说说簧片问题,因为一般厂商会将簧片的角度设置的比预期的要大一些,这样不会影响发音。但副作用是,过大的角度,降低了簧片灵敏度。这也是为什么Suzuki的口琴簧片是焊上去的原因,这样能更好的设置角度。Manji的簧片比Suzuki其他的版本更细更长,簧片的设置也更为精确,更加接近custom的水平。Suzuki的这种簧片设计也不是没有缺点,因为替换的时候没有那么容易啦

    以上的信息主要来自于Brendan Power的视频。他本人就是个口琴工程师,custom高手,因为那位仁兄不会发Youku视频,所以我特地用中文文字提供一些信息。



  • 说说中国科研的那些事儿   作者:朱猛进   http://www.sciencenet.cn/u/zhumengjin/   如果一个国家拥有世界上最为庞大的科研队伍、拥有与整个欧盟相当的高档 仪器设备总量、拥有位居世界前列的研发投入、以及拥有位居世界第二的论文数 量,那么这个国家肯定是一个令全世界尊重的科研强国。然而,任何事情都有例 外,中国就是这个不幸的例外。要人有人,要钱有钱,拥有如此好的条件,却无 法取得相应的科研成绩和地位,世界上恐怕只此一家。但事实就是这样,中...
  • 有一次在某个文章中读到,如果要在某一领域有所树建,一万小时的基本功是少不了的。不管什么领域吧,也暂且不怀疑这一万小时的可靠性。让我们算一笔账,这一万个小时到底是什么概念?

    --------------

    模型零:理论模型 -- 3年半成才

    如果每天工作8小时,一年工作365天,需要3年半的时间就能算入门。

    模型一:严格工作型 -- 6.25年成才

    人类不可能这么工作,也需要休息,况且8个小时实打实的工作,也不是特别轻松的。那么我们先算算有多少工作日比较合理。52周,去掉100天的周末。如果是学校,再去掉60天的假期。暂且估算为200天的工作日吧。那么每天工作8小时,每年工作200天,需要6.25年成为精通某领域的人。

    模型三:加班狂型 -- 5年成才

    在严格工作的基础上,如果能够多花一点时间在研究之上,比如周六也搭进去了。那么一年能多出50天的工作时间。我们认为是250天。那么需要5年整的时间。

    ------------

    至此为止,我们已经知道,每天工作8小时,如何安排工作日,需要多少年成才了。再进一步加大约束条件,一共只给5年时间。所谓“人生在世五十年,大千世界一瞬间”嘛,人生苦短,不能无限制的使用寿命。那么,如何安排时间才能搞定问题呢?以下的内容对学生比较有实际的参考意义,大部分的学生也都只有5年的研究入门生涯。

    模型四:非人生活型 -- 每天工作6.6个小时

    在一定的情况下,个人的所有时间都被剥夺,与世界没有太多实际的联系,每天通过网络沟通。这样,一年的工作日期大约在300个工作日。还有的50天,是过年之类的重大假期或者交际和不小心浪费掉的。

    模型五:心无杂念型 -- 每天工作5.7个小时

    所谓心无杂念已经排除世间万事,“本来无一物,何处惹尘埃”。这就不是被动的被剥读时间,而是主动的使用时间。我们假设全身心投入工作,一年话350天。还有5天是过年用的。。。那么的话,一天只需要花5.7个小时。

    ------------

    说了这么多数字,可能还不够具体形象。但如果你把目标确定,比如要成为某个领域的行家,或者掌握某项非常复杂的技术。然后,再实际操作的统计一下每天花在这个目标上的时间的平均值,并参考一下自己的实际情况。变不难发现问题所在。

    我记得有一次,一个荷兰的不入流的学校的学生来国内某一个科研室玩,他转了一圈之后,好奇的问:“why are you all watching videos?"。某一些搞研究的学生从早上10点来实验室,晚上10点走。按照模型五,他们每天只需要花5个半小时做科研,其实就够了。那除了吃饭的时间外,还有五个小时,穿插在工作之间,被他们用来“浪费”。当然说浪费不一定正确,总之很多时间并没有正面反馈。

    如果你知道每天需要花多少时间,那大可不必再浪费其余的时间。还美名其约每天花很多时间在工作,甚至连周末也不休息。科学的来讲,人每天并不需要那么多时间来工作。有清醒的意识,把主要工作之外的时间,用在更有意义的地方,更加有意义。

    此外,有一些人喜欢用the last minute。把工作堆积到最后来做,一旦deadline在眼前,就通宵达旦工作。这样,伤害身体与否先不说,对于知识的沉淀也是非常有害的。人类的记忆需要反复规律的刺激,通过颞叶进入海马层,形成优质记忆。优质记忆是创造和灵感的来源。而突击性的工作方式,违反了这个规律,事倍功半。这个原理也是所谓的知识需要积淀的理由之一。

    ----------

    每个人都用冲动的时候,没有梦想和冲动带来的热情,就不会有前进的动力。但不要迷失在追梦的路途中,算一笔账,每天问一问自己,这样下去能行吗?所谓,该坚持时得坚持,需放手时就放手。
  •  

    -----------一则老读书笔记,放到这里轻松一下----------

     Guantanamera是一首流传很广的古巴歌曲,由古巴爱国诗人何塞.马蒂(Jose Marti)作词,著名歌手霍塞伊托·费尔南德斯(Joseito Fernandez)作曲。Jose Marti是古巴独立战争英雄,这首歌源自他死前所做的一首诗(Versos Sencillos)的内容,这也是他的最后一首诗,1895年代的事情。

    副歌内容主要针对一位住在Guantanamo(一座位于古巴东南方的城市)的姑娘。主歌与副歌的搭配就让这首歌变成了一首情歌。歌曲有极其浓烈的拉美风情,如果你要去古巴晒太阳,一定带上这首歌,还有欢快、忧郁、悲伤、释怀的情绪。

    因为这首歌非常有名,我们能听到的版本很多。经常被称作“乡村歌曲”的版本有两个,一个是1966年的Sandpipers版本,上面的视频就是这个。另外一个版本出自民谣之父Peter Seeger,《We Shall Overcome: Complete Carnegie Hall Concert》这场演出(1989)中唱歌的最后一首歌(视频只有youtube有,地址:http://www.youtube.com/watch?v=X5JLCAIJLJ8&feature=related)。

    关于Peter Seeger的故事,我已经读了3夜了,看来没有一个月是读不完拉。你如果去看了youtube的那个视频,就发现,Peter习惯性的带动大家一起唱歌,用朗诵诗歌的方式读歌词。那种台风是从Woody Guthrie那里学来,他曾经跟着Woody流浪了半个美国。而Woody是Bob Dylan的偶像,也是Bob Dylan的模仿对象。最后说一句,Peter Seeger是一个美国左派,共产主义者。唱民歌的都是“左派”,罗大佑也是“左派”。唱伪民歌的是傀儡,宋某就擦边。

    ...

     

  • 国家可以无政府主义,也可以法西斯,其实对于个人也有同样的道理。人对自己可以采取法西斯式的严格纪律,也可以放任自我,随心所欲。


    我的感觉中,人是不会天生对自己采取严格要求的,通常的情况是来自于外力的压迫。比如,在学校的时候,被强迫要好好学习。女生强迫自己不要吃太多热量的东西,是因为爱美。上班族每天按时起床,风雨无阻,也不是自己情愿的。

    如果是几乎没有外因的情况下,自我强迫,成功率是多少呢?例如一个本来从来都是很随便的人,突然发奋图强,要每天勤于家务。或者某个人一辈子没有写过日记的人,突然想要每天记日记。一个从来没有在自身出现过的现象,要通过自己的内因诱发,这个难度有多大,无论是一个生活小节还是其他。

    就从自我约束这个角度来看,这是和自由主义相反的,和人的本性想违背的。所以,难度是很大的。举个例子,一个人是不是可以严格的记录自己的每一份时间的用途,并制定计划?如果有一项任务是记录别人的时间,并严格要求别人来遵守计划,是不是容易很多?一般的秘书都很做这样的事情。

    对于大多数人而言,行为的动力和制约来自于这个社会的风俗、制度、法律、共识。而这些基本归类于外因。人无法脱离一个集体而活着,否则会丧失生活的目标和动力。人严格遵守的,贯彻过的,也不过是外面的因素。现代的人,18岁以前为高考活着,22岁以前为毕业和工作活着,然后为房子活着,最后为子女活着。看看吧,这些东西,从古到今都有,可能高考和毕业换成科举诸如此类。一个群体的脆弱性就在于此。

    这个讨论好像一直没有在主题周围,不过我提出一些建议:强迫自己,改造自己的第一定律:从外部动力和压力入手,而不要迷信自我调节!

    生活是有规律和科学性的,多大的压力和动力才会产生出对应的状态。从内部挤出来的动力,不牢靠,也会因为内部想法的改变而消失(这个和爱情多么相似)。爱好和兴趣是一种个体情感,也是不牢靠的,除非勤于维护,否则也会消失。为什么选拔队员的时候,都要求:对某某有着浓厚兴趣。因为还不能适应外力驱动的幼小人类个体,需要内部的动力。

    最后发现,和传统教育理念不幸相违背了。内因外因的课上都学到了,内因是第一动力,外因是辅助的,不过那是给脆弱的群体用的。要想逃离脆弱的群体性,请使用外因法则:利用外因促进自己,摆放自己!

     

  • 思维导图试用 - [其它]

    2009-11-16

    原图请猛击这里

    图1. 《奇特一生》时间管理的思维导图

    最近一直想整理一下《奇特的一生》,因为这本书读的时候,千头万绪,难以把握重点。后来发现豆瓣上有人在用思维导图做笔记,我也尝个鲜,使用的软件是iMindMap。看这弯弯扭扭的线头,是不是有点像生物组织的感觉 :)

    我没有把整本书的目录都记录下来,而是按照我的理解和豆瓣上的一些评论,把书中关于时间管理相关话题进行总结。当然这幅图仅仅是思路,如果要理解,还需要详细展开。这个软件有很多快捷键操作,而且界面看上去够Naive,这个算优势。在我进行创作时,居然有人指着这个图说,这是给小孩子用的吧...

    思维导图基本的原理其实很“深邃”,讲到最后是基本的数学问题。世间万物的组织方式抽象后,无非是图论中的那几种模型。日常生活中的,人们说法网恢恢,都是网状结构。比如网络,也是某种“网状”结构。这些都太过于宽泛,并且不能体现具体特点。而计算机世界最经典的模型是什么?- 树!

    无论是金字塔原理,还是这个思维导图,或者是文章写作中的章节编排,都是树状模型,也可以说是层次结构。这种层次结构的元素相互之间只存在上下级关系,并无其他可能。就好像组织严密的政府机构,如果越级报告,那就嗝屁了。但总有例外的时候,例如层次关系所不免面全描述,或者或造成冗余。比如个人同时隶属于多个机构,你说是一个分两半用呢?还是复制一份?最常遇到这个问题的是数据库,所以衍射出了关系数据库模型。看到图1中那条黄色虚线了吗?那就是一个破坏模型的计划外的关系。

    无论如何,树状结构因为很美,匹配了很多自然的现象。至于人脑的思维呢,肯定有层次抽象这一种逻辑,再根据二八原则,最简单的两成逻辑,占用了你八成的思考时间。层次结构应该算是最常用的之一。所以,使用范围很广:记忆,笔记,写报告,写论文,做演讲,考试,思考,集中注意力等应该都有用。特别是某一些记忆方面的应用,涉及到右脑法则(近日会再研究研究)。

    关于层次逻辑,我还有一个观点,一般人能记住某概念有某几要点之类。但是却不能记住4个以上的层次,比如某事物的某个要点,有几个层次还能直接记住。但某个层次又如何如何就不一定了。所以,需要有协助记忆,这就是为什么要做笔记。通过视觉刺激,从而用心像来记住复杂层次,经过反复后,变形成潜意识,即优质记忆。优质记忆,常常在梦中出现哦。

    不过,关于奇特的一生和时间管理的想法,只能留在下一篇日志写了。

  • Godfather Theme

    抽空从Ultimate Guitar上摘了一个Guitar Pro的谱子,Slash的电吉他版本,凑活用吧。这首曲子非常耐听,不过音阶比较特殊,对于吉他而言,很容易就按出来了,对于其他非半音阶的乐器,可就困难了。而这段前奏,几乎就是为十孔布鲁斯压音训练而设计的。

    十孔Blues音阶

    (从Lee Oskar主页盗来的图片,抱歉)

    十孔布鲁斯口琴什么区位最有味道?低音部分!借由纯熟的压音等气息技巧,能够让人产生是小号或者萨克斯的错觉。而高音部位,则能模仿小提琴,也不失华丽。

    言归正传,如何练习,推荐去这个链接把Guitar Pro的文件下载下来,然后装一个Guitar Pro听着,或者去视频网站搜索Slash Godfather Theme。然后,下载APGuitar,吉他定音器,观察自己三孔压音的具体音值。等到第三孔四个音都能发出来之后,慢慢把这段旋律来一遍。

    之后,就不用看APGuitar这样的工具了,因为大脑中已经有正确的旋律,每次练习的时候对错,大脑自然会反应过来,最后就是狂练,直到牛逼为止。

  • 中日同样使用汉字,但是使用方法不同。不同之处如下:


    一、语法不同,中国现代国语实用白话文语法,日本使用自己的文法。

    二、发音系统不同,日本使用汉字有两种发音,音读和训读。音读是中国吴音,可以理解为沿海地区的发音,但是用假名标音。训读是日本古音,在有汉字之前便有的读音。

    三、日本和中国的排版方式不同,日文书籍和报刊至今还有竖排版的传统。

    四、对于外来语的本土化不同。日本的外来语,一律用片假名标注,甚至于读音。中国也用汉字标注,不过提倡正确读音。

    五、简化程度不同,日文中的汉字有很多简化过,世界上最简化的汉字莫过于中国本土现行汉字。

    通过这五点中的后三点,可以发现如果曾经有一段时间两国汉字大概相同的话,一定有一个时间发生了偏差。没错,这与胡适和那个年代有关。中国的20世纪初,也就是100年前,无论从政治、国体、思想、文学都处于绝对错乱期,好像被猛兽痛击一掌,不知何去何从。蔡元培邀请陈独秀担当文科教长,其中有一个工作,就是整理国学。陈独秀的观点较为激进,有一段语录变可体现:“先废汉文,且存汉语,而改用罗马字母书之”。差一点,我们就连汉字都丢了。

    近代文学改革的标志是胡适的那篇《文学改良刍议》,胡适当时胆子不如陈独秀,只敢轻轻的提出意见。这篇文章有八条。一、言之有物,二、不攀仿古人,三、讲文法,四、不无病呻吟,五、去陈词滥调,六、不用典,七、不求对仗,八、俗字俗语的使用。

    这八条,深深的改变着我们现代生活的林林种种。清末文学系统已经走到谷底,从明朝开始的大兴科举,导致迂阔浮夸的作风。这让文人写出来的文字,徒有外表,陈词滥调,攀模古人。看上去工整对仗,引经据典,但内容本身都被束缚住了。所谓后人如做古人文风,何人胜古人?每个文人励志去做李白杜甫,也是徒劳。

    回到最初的话题,中日都在学西方进行改革,但是对于文字,中国的改革更为激烈,我认为是要优于日文汉字的,更为现代。而这些改革并非从天而降,而是百年前,这些名人的努力。为何现代不出文学大家?无须大家,何来的大家?既无空间,也无可能。
  • 如何读论文 - [专业领域]

    2009-11-11

    作为一名科研人员,常常要花大量的时间进行阅读。一些人可能会按从头读到尾的顺序阅读论文,这样会陷入论文阅读泥潭中,浪费宝贵时间。所以,有策略的进行论文阅读就显得非常重要,正所谓磨刀不负砍柴功。下面就让我们来看看S. Keshav教授的见解。

    S. Keshav把他十多年来读论文的经验总结成“三阶段法则”,凡是论文要有一个由浅入深的阅读方式。

    第一阶段

    第一阶段的时间一般是5-10分钟,扫一遍文章,具体要看的部分有:
    1. 标题、摘要、简介
    2. 章节以及子章节的名称
    3. 总结
    4. 看一下引用,记住哪些论文已经看过了

    大部分情况下,一篇论文只会被别人进行第一阶段的阅读,所以在写作的时候,尤其要注意第一遍会被阅读到的部分,有如下几点建议:
    1. 章节之间是否条理清晰,脉络明确
    2. 摘要是否简洁,是否全面的描述论文内容
    3. 论文的主要idea有没有体现出来

    第二阶段

    第二阶段一般用不到一个小时的时间。这个阶段要仔细阅读文章,不过忽略例如理论证明这样的细节。具体要注意的部分有:
    1. 注意论文中的图示。仔细查看这些图示是否有都正确,坐标轴是否正确的标识。数据说明有没有合理的表示,有没有统计上的错误。(论文评阅者会从这个方面区分优秀和拙劣的论文)
    2. 标记出没有阅读过的相关引用

    这个阶段结束之后,应该掌握的程度如下:
    1. 领会文章内容
    2. 可以总结这篇论文的精髓,并介绍给他人

    第二阶段结束后,可能会出现因为术语和缩写太多等原因而无法理解论文的现象,这可能是因为背景知识的缺乏。可以考虑进行一些学习之后再来读相关论文,或者直接忽略这篇文章。

    如果对文章的内容只是感兴趣,第二阶段就可以结束了,但这对于专业需求而言还不够。

    第三阶段

    第三阶段是精读阶段,叫做“论文重构”。对于入门的研究生,这个过程可能需要4-5个小时或者更多,对于有经验的研究院,这个过程大约是1个小时。

    这个过程中要做的事情有:

    ....
  • 在有了一些入门经验之后,我决定分享一下特殊音阶口琴购买方面的问题,仅针对十孔口琴(ten hole harp)。


    大众口琴供应商有日本的TomboSuzuki,德国的SeydelHohner,巴西的Hering。此外,还有和tombo合作的Lee Oskar。如果想买一把特殊音阶的口琴,除了买一套工具,自己定制以外。可以从Seydel和Lee Oskar两种名牌中直接买到。


    一、Lee Oskar


    以Lee Oskar为例,他们的产品分为Major DiatonicMelody MakerNatural MinorHarmonic Minor一共四种。这四种口琴代表了主要的特殊音阶。


    二、Seydel


    Seydel这款口琴09年才引进大陆,在很多其他亚洲国家都还买不到。他是大众口琴中比较高档的一个品牌,提供的调音方式也最为全面。除了正常的调音之外,Seydel的Session系列提供super high,super low。加上Lee Oskar提供的其余三个调音制,此外还有Zirkular/Melody King、Blues Session Country还有Paddy Richter三种调音制。


    三、爱尔兰音阶口琴的好处


    解释下为什么我要费这么多口舌来说上面这些内容。如果是自己玩一些口琴旋律的话,缺少A音的十孔布鲁斯有时候很不方面,大家可能要说用压音。压音不能保证快速演奏时的准确率,如果是一个很长的A音,压音会让这个音色显得格格不入。如果去用Melody Marker的话,F音又消失了,还是麻烦。所以,最省力的方式还是用Paddy Richter调音制。当然,可能不用这么麻烦,去买一把半音阶或者复音口琴。新的问题是,价格还有携带性。



    现代人玩的不是爱好本身,而是器材