hoby 发表于 2012-7-23 15:27:35

amIborat 发表于 2012-7-23 02:51 static/image/common/back.gif
请科普128个积分点,形函数是什么样子的?
为神马用128个积分点?
积分点多了一定是好事吗? ...

高阶单元的理论早已不是什么新东西,所以形函数这些东西都是有据可查的,具体到不同软件可能每个人的处理技巧不一样罢了。

至于积分点多是不是一定是好事,这个得具体问题具体分析。从理论上说在一定范围内积分点多肯定比积分点少的单元计算精度高,这一点毋庸置疑。但是以前这么多年为什么很少商业软件涉猎这一刻呢,这主要是跟当前的计算能力有关,积分点越多,需要内存越多,同时计算效率也越低,因此作为商业软件必须在效率和精度方面作出取舍。

amIborat 发表于 2012-7-23 16:12:00

不懂的话不要乱说, 装腔作势没意思。

我 也没什么高见, 只是我凭借自己的经验,现在大部分鼓吹GPU的除了炒作概念, 就是GPU厂家推销产品。

真正做计算还是CPU给力, 这就是为什么主流商业软件不怎么吹嘘GPU的原因。

至于你们的p型单元到底性能如何, 我只能说是肯定有能适用的问题。 有过研究的人, 都知道在提高单元阶次的同事,还会相应带来一些其他的问题。并不是单元阶次高,积分点数目多就一定意味着准确。

做技术的最好实事求是一些, 不是很懂的时候,就不要夸夸其谈, 很有损自己的形象。

email 发表于 2012-7-23 16:57:19

本帖最后由 email 于 2012-7-23 21:59 编辑

amIborat 发表于 2012-7-23 16:12 http://home.simwe.com/static/image/common/back.gif
不懂的话不要乱说, 装腔作势没意思。

我 也没什么高见, 只是我凭借自己的经验,现在大部分鼓吹GPU的除了 ...

"真正做计算还是CPU给力"

从这句话就可以看出你对CPU和GPU的区别基本上就不了解,CPU长于逻辑控制,GPU长于矩阵运算和并行计算,各有特点,不是说谁更厉害。隐式算法比较复杂,需要大量逻辑判断,所以适合CPU+GPU加速,GPU的效果相对不是那么明显;显式算法本身比较简单,主要需要大量的矩阵运算,而且天生具有并行性,所以用GPU正好能发挥显式算法的优点,但也不能完全脱离CPU。我从09年就开始关注GPU算法,自信还能有点发言权。另外,我从事CAE工作九年,用Explicit超过5年,不要再在我面前提什么算法的事情。

单显卡上万亿次的计算能力早就已经做出了产品,没人会在这里吹嘘,
http://www.nvidia.cn/object/personal-supercomputing-cn.html

http://www.nvidia.cn/object/what-is-gpu-computing-cn.html

“至于你们的p型单元到底性能如何”

我从他们的介绍中,没看到有任何信息说他们用的是P型单元,请问你知道什么叫P单元么?不懂的话就去看看这个帖子,http://forum.simwe.com/thread-921208-3-1.html,从54楼开始有关于H单元和P单元的讨论。


从你之前发的一些帖子,可以看出没文化是多可怕。我觉得有你这种问题还没搞清一上来就乱喷然后就是为了喷而喷的人我很无语。有人身攻击的话,相信版主会处理。


amIborat 发表于 2012-7-23 17:54:33

也只是正常讨论而已。
我也是个技术人员, 论工作资历不会比你差多少。
但基于公司及个人隐私原因,实在不能透露太多。
英伟达的人我也见过,你就不用贴他们的宣传资料了。
128个积分点,如果不是p型单元,能是什么呢?

不知道你的大量矩阵运算是说什么,难到不是隐式算法才需要解大型矩阵吗?

显示算法并行容易你也知道, CPU有很多成熟的并行技术你应该也知道的。

我只是说就目前情况来说, GPU的能力远没有吹嘘的那么高。

你也不要激动,工作时间长并不能说明你懂算法。 写过程序吗?

别没事就版主版主的,呵呵, 都是做技术的, 我只是希望即使在论坛上,也别太夸张了。
我这人就是看不惯别人把自己还没搞清楚的东西拿来大说特说。


amIborat 发表于 2012-7-23 17:57:54

email你可以问问holy, 128个积分点不是p方法,是什么?
我要是不懂,是不会说的。

zyx 发表于 2012-7-23 20:27:01

hoby 发表于 2012-7-23 15:13 static/image/common/back.gif
此软件目前还没有进入中国市场,不存在卖我们软件的销售人员的可能。

那怎么语气这么强烈啊,哈哈。我以为两个代理遇上一个客户了呢!

email 发表于 2012-7-23 20:28:40

本帖最后由 email 于 2012-7-23 21:50 编辑

amIborat 发表于 2012-7-23 17:57 http://home.simwe.com/static/image/common/back.gif
email你可以问问holy, 128个积分点不是p方法,是什么?
我要是不懂,是不会说的。 ...

我在本科的时候就推导过有限元公式和上机调试过有限元程序,在软件发达的今天,工作经验并不代表对力学概念和有限元理论的理解,那种软件用的熟却连基本的力学概念都搞不清的FEA工程师我见得多了,有很多学机械的学生也都混迹在这个队伍,这里没有看不起学机械的学生的意思(事实上学机械的学生产品方面了解会更好),但学机械出身的学生如果做CAE的话,在理论方面的欠缺是个普遍的事实。我敢打赌即便是现在把全上海的FEA工程师都叫出来,让他们给出应力的准确定义,估计会有一半答不上来。不翻书就现在,你能说出来么?至于什么型函数,估计很多人都没听过。
p方法和h方法的区别是一个可以自动增长形函数的阶次以提高精度,一个是固化的形函数,跟它的阶次没有必然的联系,跟它有几个积分点更是连个毛关系都没有。ABAQUS的S4R一阶缩减积分单元,在厚度方向可以有3个积分点,也可以有5个积分点,这是从一开始就在单元内部写好的,根据需要可以自行选择。
ABAQUS这样的软件一般都是用的二阶单元,楼主所介绍的三阶单元无非是高了一阶,形函数中包含了三次函数,本质上还是h方法,和mechanica这样的p方法有限元程序不是一回事。只是在一个单元内定义了128个积分点,目的是为了在极度大变形的条件下,精确捕捉单元每一处的变形和应力,如此而已。只是我不知道楼主说的这个单元是四面体还是六面体。
p方法为了逐步提高求解精度,每次算完了后需要计算误差,然后决定哪些单元需要提高阶次以重新计算,经反复迭代最后达到收敛标准。但显式动力算法是按照时间顺序序列求解的,一次求解完成,所以显式算法没有使用p单元的可能。
至于为什么它会使用三次单元,虽然我没用过这个软件之前都没听过,不用看软件介绍和帮助,我也能给出合理的解释来。

email 发表于 2012-7-23 21:26:12

本帖最后由 email 于 2012-7-23 21:39 编辑

amIborat 发表于 2012-7-23 17:54 http://forum.simwe.com/static/image/common/back.gif
也只是正常讨论而已。
我也是个技术人员, 论工作资历不会比你差多少。
但基于公司及个人隐私原因,实在不 ...

任何CAE计算,说到底都可以分成两部分:一部分是需要逻辑运算的部分,比如条件判断,循环,求解策略,控制方法等。这部分对内存和硬件的要求不高,但需要复杂的逻辑判断能力,这算是脑力活;一部分就是矩阵分解,求逆,并行计算等等这种单纯的矩阵运算的部分,这部分没什么技术含量,算是体力活。
具体到动力学的求解上,隐式算法因为需要不断迭代求解切线刚度矩阵,还需要判断容差和收敛性,要处理接触滑动,还要计算收敛策略,什么时候收敛,不收敛下一步怎么办等,所以需要大量的逻辑运算,当然在此同时也需要与之相关的矩阵运算,既需要干脑力活,也需要干体力活;显式算法也就是中心差分法,只需要对集中质量阵求逆即可,在规定的时间步长内直接求解动力学方程,不需要像隐式算法那样反复进行平衡迭代,所以算法比较简单,不需要太多的逻辑判断,主要以矩阵运算为主。虽然不需要迭代,但由于时间步长的限制,需要计算很多步,总体的计算量还是比较大的,总而言之,显式算法是以干体力活为主,配合少量的脑力劳动。
在GPU出现之前,人们都是用CPU做计算。CPU的能力也可以分成两部分:一部分就是负责逻辑判断的干脑力活的部分,一部分就是负责干矩阵运算的体力活的部分,这两部分姑且就当是一半一半吧,所以CPU同时具备这两种能力。在计算机发展的早期阶段,图形处理(主要是矩阵运算)还很简陋的时候,用CPU自带的矩阵运算能力,也可以应付。但这种方式当然很快就是遇到了瓶颈,随着对计算机图形处理能力的加强,尤其是windows视窗操作系统出来了后,CPU自带的图形运算能力已经完全不能满足要求,于是出现了专门负责计算机图形处理部分的GPU。GPU本身没有逻辑判断能力,它只是一个单纯的矩阵运算器,所以必须得配合CPU一起用。但因为它是专门为图形处理而设计,所以它的矩阵运算能力远远超过CPU,尤其是高精度的图形处理,比如大型的3D游戏,运算量非常大,需要显卡的GPU有很强的运算能力,由此导致了图形显卡的快速发展,逐步发展到一块普通的图形显卡,可以有几百个处理核心。一快显卡,通过成百上千个处理核心,浮点运算能力可以达到上万亿次。
前面说到过任何科学计算,都包含了矩阵运算的部分,既然GPU具有很强的矩阵运算的能力,何不将GPU应用在科学计算上呢?NV最早提出了这个设想,并且发展了一套编程语言CUDA作为接口,可以让桌面程序调用GPU的运算处理器。后来ATI也跟进,提出了自己的编程语言。
有了CUDA接口,具体到CAE计算上来,可以采取CPU+GPU的方式,CPU负责逻辑判断,GPU负责矩阵运算的部分,分工协作,这也正式隐式算法的特点。但正因为这样,隐式算法不断的逻辑判断,会拖累矩阵运算和整体求解的效率。因为很多时候,矩阵运算完了,逻辑判断还没完成,GPU就闲置在那里,有了GPU后,隐式计算的速度更多的是取决于干脑力活部分的速度。所以GPU应用在隐式算法中,不能最大限度的发挥其优势,最多只是在模型很大的时候(在矩阵运算需要大于逻辑运算需要的场合),才能发挥出GPU大规模并行运算的优势,加速求解。所以在隐式求解中,把GPU称作加速器更合适些。隐式计算的另一个问题是,由于在并行计算的场合,同样是需要大量的逻辑判断,所以并行计算的效率也会受到拖累。隐式算法中,计算速度与处理器的个数并不是线性的关系,也就是说并不是用了5个CPU,就会比只用一个CPU快5倍,这样GPU的并行求解能力也不能完全发挥出来。总而言之,在隐式计算中,在CPU的矩阵运算能力不足的情况下,使用GPU肯定是比没有GPU要快的,但效果有限,远还没达到颠覆性的程度。换句话说,隐式计算还是对干脑力活的CPU需求量更大,没有那么多体力活给GPU干。
但显式算法就不一样了,显式算法本身逻辑判断很简单,在由CPU做了预处理,计算出了时间步长后,剩下的基本上就是矩阵运算了,可以通通交给GPU来做。因此比起只用在矩阵运算方面比较弱的CPU来讲,计算能力就有了飞速的提升。而且显式算法的并行效率基本上是和核心数成正比的,并行效率很高,正好可以发挥GPU强大并行运算处理的能力。一个频率高达1G或2G的具有上千个核心的GPU,其浮点运算能力是只有几个核心的CPU的几百倍。由于不用受CPU的拖累,在显式计算中,用一个CPU,就可以带动成百上千个GPU核心,极大的加快求解速度。如果能调用多块显卡同时交火,一些中等规模的问题基本上也就是瞬间完成,这和传统的CPU显式计算完全不是一个概念。
所以我可以很负责任的告诉你,不管你搞没搞清,或者承不承认,事实就是,GPU计算不是吹牛,而是很真实的现实。

amIborat 发表于 2012-7-24 09:21:41

email,

很抱歉我的语气让你感到不舒服,发表了如此长篇大论。

我希望讨论问题就能这样实事求是。

首先, 我说的p型单元,就是指的高阶单元(想函数3次以上)。 并不是说的p型自适应算法。

其次, 我不理解为什么会有128个积分点,所以我问形函数的形式。

再次, 我同意你的看法,很多人只会用软件,对理论知识了解甚少。

最好,对于GPU的看法, 你说的大部分我认同。 唯一一点,GPU可能更加适合隐式算法,因为隐式算法才涉及到解大型稀疏矩阵。 显式算法, 总体方程是解耦的, 不管CPU,GPU都很容易并行化。 具体到具体问题,很难说。 我们现在的参考也是市面上流行的商业软件, 至于新产品,我相信可能会有所改善, 用GPU用的更好, 但是否一定超过CPU,我希望看到算例再说话。

email 发表于 2012-7-24 09:42:38

本帖最后由 email 于 2012-7-24 09:59 编辑

amIborat 发表于 2012-7-24 09:21 http://home.simwe.com/static/image/common/back.gif
email,

很抱歉我的语气让你感到不舒服,发表了如此长篇大论。


关于3阶128积分点单元的型函数,这个只能问他们的软件开发人员或者看帮助手册了,它既然这么用,肯定有它们的考虑,不会没有原因。

前面说过,隐式算法中GPU表现并不是那么明显,不是因为GPU的求解能力不强,而是因为隐式算法比较复杂,需要过多的逻辑指令,不能让GPU完全放开做比较单纯的矩阵运算。

对于显式算法,只要是包含了矩阵运算器的元件,不管GPU还是CPU都很容易并行化。但单颗CPU自带的矩阵运算能力和单个显卡(GPU)相比就差太多了,

网上这类例子随便一搜都有很多。实时流体力学模拟国外早就做出来了,NVIDIA 的Maximus计算机实时MAYA动画流体模拟视频,
http://v.youku.com/v_show/id_XMzY5MzU0Mzcy.html

除了动画外,工程上现在国内也已经有人开始搞这方面的研究了,
http://www.ceaj.org/Jweb_gcyyy/CN/abstract/abstract15276.shtml#
http://cdmd.cnki.com.cn/Article/CDMD-10183-2007094628.htm

这种急速的流体计算,无一例外都是基于GPU架构的显式算法。如果用CPU,成本将高的不可接受。即便是中国最新的超级计算机“天河一号”,为了达到它所宣称的速度,也都使用GPU架构。要用CPU达到一块普通的显卡的计算能力,需要消耗大量CPU组成超级计算机(但这样一来CPU的逻辑运算能力又会多余)。在GPU实用之前,除了少数科研机构,商业化场合没人会真正这么做。

amIborat 发表于 2012-7-24 11:19:46

你说的没错, GPU是适合矩阵运算, 比CPU有优势。

但这并不是造成目前GPU表现不佳的实质原因。

实质原因是几乎所有的商业软件, 都是基于CPU写的代码, 要全部转移到GPU, 要用GPU的编程语言, 而且要优化, 要测试,带来的改善也未必明显。

至于你说的逻辑运算, 显示算法就没有逻辑运算?
所谓的逻辑运算,在编程里面无非是 if if else and or 这样的指令,
我想不管哪种解法都需要的。

没有别的意思, 我的理解是目前GPU没有吹嘘的那么神,需要理性看待。 已经存在的软件短期内不会转投GPU。、

email 发表于 2012-7-24 12:27:04

本帖最后由 email 于 2012-7-24 14:08 编辑

代码的移植确实需要个过程,但新开发的软件呢?新开发的软件则可以从一开始就基于GPU架构,不存在什么代码移植的问题。再说即便是代码移植,这个也不是什么不可解决的问题,相信将来在软件开发人员的努力下,这个问题可以得到妥善的解决。

使用GPU有两种方式,除了对计算软件本身的代码进行移植外,还有另一种方式,就是操作系统的改进同样也可以。也就是说即便传统的CAE软件代码不做任何改变,如果操作系统支持GPU计算的话,也可以用来辅助CAE计算。也就是说CAE软件在运行的时候,操作系统会自动根据进程的运行状况将矩阵运算部分分配到显卡来加速计算。windows 7系统已经实现了这个功能,借助directx 11的compute shader 技术,可以调用支持dx11接口的显卡进行GPU加速。

显式计算当然有逻辑判断的指令,但相对隐式算法来说少太多,而且主要是集中在计算开始的部分。一旦初始条件定义好了,确定了求解策略之后,接下来的基本上就是矩阵运算了,因为显式算法不需要不断的平衡迭代判断是否收敛。

GPU计算的出现,不光对传统的显式软件具有巨大的改变,对传统的隐式算法为主的软件也是个冲击,比如ANSYS,ABAQUS。以前这类软件在求解静态问题的时候当然都是用隐式算法,在碰到高度非线性问题的时候往往碰到收敛问题。实际上这类问题很多时候经过适当变换可以转化成准静态问题,用显式动力方法求解,以发挥显式算法在求解高度非线性问题方面的优势。但算结构强度一般都是用二阶以上的高次单元,在以前的CPU架构上效率很低。但现在有了GPU,这类问题的求解也不再是遥不可及的了。正因为这样,ANSYS,ABAQUS的隐式求解器开发部门看到了这种趋势,现在最新的版本中也都加入了GPU的功能,而且强调会在这方面继续投入,这是大趋势。

技术的发展就是如果有用的话,不用人们吹嘘人家自然会用,没用的话再吹怎样也没用,群众的眼睛是雪亮的。但是如果人家都已经这么做了,作为软件厂商还不跟进,就不是件什么好事。MSC公司近几年的发展就是如此,曾经的CAE大鳄,倒下去也就是瞬间的事情,不能适应时代,就必然被淘汰。

amIborat 发表于 2012-7-24 12:53:33

别高谈阔论了行吗?

短期内你别指望有什么软件能够超过现有的软件。

现有的软件不积极上GPU ,原因我说过了

你别指望每个人的电脑都配备高级显卡。

email 发表于 2012-7-24 12:59:29

本帖最后由 email 于 2012-7-24 14:09 编辑

楼主介绍的软件在某些方面已经超过传统的软件了。眼睛没问题吧,没看到前面说的ANSYS、ABAQUS这样的主流有限元软件都已经支持GPU了吗?说点有技术含量的话好不好。一块显卡用不了多少钱,一般的企业或者个人都负担得起。你不喜欢可以不用,但没必要贬低别人的成果。

amIborat 发表于 2012-7-24 14:10:12

那你就上个ABAQUS的例子,让大家看看你的GPU超过CPU多少? 节省了多少时间吧。

其实矩阵求解器 AX=B,这么个东西, 用GPU来解,肯定研究的人很多了。

但是有限元软件,由于历史原因, 很难保证GPU超过CPU。

至少几十年来都是在CPU上跑的。

在CPU上能解的问题, GPU不一定能解,或者结果不一样。 这虽然不是什么理论问题,很显然是软件实现问题。

除非GPU有压倒性的优势,否则没必要投入太多。

zyx 发表于 2012-7-24 16:01:29

amIborat 发表于 2012-7-24 14:10 static/image/common/back.gif
那你就上个ABAQUS的例子,让大家看看你的GPU超过CPU多少? 节省了多少时间吧。

其实矩阵求解器 AX=B,这么 ...

什么叫“但是有限元软件,由于历史原因, 很难保证GPU超过CPU”?
你这不是强词夺理吗?

hoby 发表于 2012-7-24 16:36:53

其他软件我不是非常清楚其GPU的效率,但是对于我们软件,下图我给出一组数据给大家看看。单单论GPU对于显示算法的矩阵求解,效率是较CPU是高很多的,
是CPU的几十倍或上百倍,这一点毋庸置疑可以从每年的Nvida的GPU年会看到不同公司给出的数据。因此再讨论GPU是否比CPU对于大型矩阵求解跟有效率是没有
多大意义的。

具体到我们公司软件,从下图可以看出,不同的case,GPU的效率较CPU的提升是不一样的,有时候差别还很大,这主要是目前软件的接触算法还没有移植到GPU上
导致的。如果算例中有大量的接触定义,那么这部分还是在CPU进行的,尽管节点位移,应力应变的求解在GPU上快速完成了,他们还需要等待CPU部分的结果才能
进行到下一步,因此从整体上体现出来的效率就不会是几十倍那么高了。

此外由于impetus-afea solver为了提高计算精度,所有的计算都是采用双精度进行的,而目前来说Nvida的显卡对于双精度的支持还不是十分充分(目前大部分的显卡
内核都采用single precision),因此在计算效率上也大打了折扣。不过下半年Nvida计划发布的新一代Tesla卡在双精度方面会有很大的提升,速度据说可以快几倍。




email 发表于 2012-7-24 16:41:07

本帖最后由 email 于 2012-7-24 16:43 编辑

懒得说了,自己看吧。



amIborat 发表于 2012-7-24 17:15:04

卖显卡的厂商会说自己显卡弱?
举例子最好举出你自己验证的。

amIborat 发表于 2012-7-24 17:19:52

zyx 发表于 2012-7-24 16:01 static/image/common/back.gif
什么叫“但是有限元软件,由于历史原因, 很难保证GPU超过CPU”?
你这不是强词夺理吗? ...

怎么是强词夺理?
因为很多代码都是基于CPU编程语言写的,一般是fortran,
你想把这部分搬到GPU上可不是什么容易的事情。

具体点, AX=B,这样的稀疏矩阵求解,如果阶数很高,一般都是分块解法和迭代法同时使用, 同样需要很多逻辑判断。

别看一个小小的矩阵求解,这其实也是很多有限元软件的关键技术,也是积累了几十年的,是开发人员不断调试的结果, 但也不能保证没有bug。

你想把这一坨东西搬到GPU上用GPU的语言实现,是很容易实现的吗?

这就是历史原因。

页: 1 2 [3] 4
查看完整版本: 瑞典有限元软件Impetus-afea寻求合作伙伴