“把一些东西放进硬件”(ASIC)通常不会让程序变得更快

2020-11-02 02:48:34

@AmazingThew我在NVIDIA早期了解到的改变生活的一件事是,在硬件中加入一些东西(创建专用集成电路,ASIC)通常不会让程序变得更快。(线程):

@AmazingThew在非常高的水平上,处理器设计受到三个主要因素的限制:1.物理面积;芯片/掩模的大小有限制2.功率/散热(热设计功率TDP)。如果你不能通电或散热,芯片就不能工作3.时钟速度/电压。

一般来说,@AmazingThew微处理器架构师是我在每家公司遇到的最聪明的工程师。他们已经为芯片优化了这些约束条件。一点也不松懈。因此,当有人提出新的硬件功能时,它必须替换现有的功能。

@AmazingThew这通常意味着移除通用计算(或CPU上的缓存),以收回用于特殊目的计算的区域。如果你知道你的芯片执行95%的FFT,那么用FFT电路取代普通的数学和逻辑电路可能是值得的。

@AmazingThew我说可能是因为GPU已经在32个ALU上摊销调度和其他共享逻辑区域,并共享内存接口。因此,您可能仅节省约1/33->;,即获得3%的改进。如果你没有使用除法,那么是的,你可以修改DIV区域,等等。

@AmazingThew,如果你的FFT是内存受限的,那么特殊用途的计算根本帮不上忙。现在,如果您的程序将30%的周期花在FFT上,70%花在其他事情上,那么去掉通用计算来获得专用计算不是一个好策略。

@AmazingThew结果表明,在大多数操作中,您都是在(i#39;d!)。想要在新电路的GPU上神奇地变得更快,你要么不愿意为你会让速度变慢的东西付出代价作为交换,要么就是得不到足够大的加速比而无关紧要。

@AmazingThew如果您想要快速傅立叶变换的GPU加速,我推荐:docs.nvidia.com/cuda/cufft/ind…。如果你想让FFT比那个快10倍,我也很喜欢,但我不知道有什么芯片设计能让真正的程序更快,如果FFT是取代通用计算区域的ASIC的话。

@AmazingThew以腾讯通GPU为例,您可以在High Performance Graphics和其他场馆查看NVIDIA和其他机构发布的设计的历史记录。没有人直接将他们最喜欢的光线跟踪软件转换成电路并将其发货。

@AmazingThew硬件光线跟踪(它在最近的历史上来来去去,包括犹他州、焦散和想象力的设计)是一个挑战,需要找到能够优化以最小化面积、带宽和面积的设计…并提供强大的编程模型。

@AmazingThew还包括光栅化器、纹理单元、张量核心和以前专用的像素和顶点着色器,以及许多在高级编程模型中不可见的处理单元。

@AmazingThew给我留下了深刻印象的是硬件设计师在每一代人身上都能完成的事情。他们将现有功能压缩到更高效的实现中,然后找到加速关键步骤的新功能的一小部分,以进入空白空间!

@AmazingThew一般来说,为了让GPU上的速度更快,您可以做两件事:1.降低内存需求,直到达到计算极限。对于FFT:你能用8位的吗?16F?

@AmazingThew 2.发布计算部分的聪明算法或设计。最后一个工程步骤通常是专有的,但工业依赖于整个领域的研究人员来让他们进入正确的大体。现代GPU基于数十年的SIGGRAPH纸张,而不是凭空创造的。

@AmazingThew(通常,研究论文的价值在于排除不太实用的方法,这样架构师就知道哪里不是重点。每一篇研究论文都是成功的:#34;5x!";。但知道设计A的最大加速比是5倍就足以告诉其他人在其他地方寻找10倍的加速比(😀)