战斗机吧 关注:96,652贴子:1,389,974
  • 6回复贴,共1

我准备给你们科普一下计算流体力学

只看楼主收藏回复

也算过年积一点功德
今天第一讲,计算精度由什么决定。
答案是,内存大小。
因为cfd模型必须全部装载到物理内存(,现在gpu计算,就是显存),不能用虚拟内存。
cfd计算的特点,是每个计算步长,都要均匀遍历内存中整个用到的部分,这意味着,如果用到虚拟内存,则内存和硬盘之间的交换会非常频繁,计算效率极低,cpu/gpu需要总是等待硬盘。
展开两个知识点:
1,设计f22的年代,国家级超算的内存大小,和现在一个工作站内存插满差不了太多。
2,现在英伟达的那个dgx工作站,之所以卖的贵,是因为16块gpu的显存统一寻址,也就是说,软件“看见”的是一个整个的gpu和整个的显存,进而不需要软件费力进行模型切割。


IP属地:黑龙江来自Android客户端1楼2024-02-13 19:22回复
    题外话,唯一有潜力给计算流体力学用的虚拟内存,是傲腾,不过英特尔已经把它放弃了。不过也仅仅是有潜力而已,还是太慢。而普通的固态硬盘,不仅是速度不行,写寿命也扛不住。


    IP属地:黑龙江来自Android客户端2楼2024-02-13 19:43
    回复
      题外话之二,cpu计算仍然xeon是老大,threadripper/epyc依然是弟弟,虽然它核多。不仅仅因为avx512指令集,还因为核间通信效率。


      IP属地:黑龙江来自Android客户端3楼2024-02-13 19:47
      收起回复
        计算精度(numerical precision)不是由内存大小决定的,而是由计算机硬件的浮点数表示标准决定。内存的大小通常决定了你能够存储的数据量,但不直接决定数值计算的精度。
        计算机中常用的浮点数表示标准包括单精度(float)和双精度(double)。单精度使用32位(4字节)来表示一个浮点数,而双精度使用64位(8字节)。这些标准规定了浮点数的表示方式、范围和精度。
        在数值计算中,精度是指数字表示的精确程度。更高精度的数据类型(例如,使用双精度浮点数而不是单精度浮点数)可以提供更大的表示范围和更高的精度,但会占用更多的内存空间。
        因此,虽然内存大小可以影响你能够处理的数据量,但在数值计算中,更关键的是选择合适的数据类型以满足你的精度和范围需求。要注意,对于一些特定的科学计算、工程计算或金融计算任务,可能需要使用更高精度的数据类型或者使用专门设计的数值计算库。


        IP属地:四川4楼2024-02-13 20:05
        收起回复
          用经典计算机计算仿真,永远只能得到有限条件下的近似值,无法得到真值,真正的全真模拟,只能等到上亿比特的量子计算机。


          IP属地:上海来自Android客户端5楼2024-02-21 10:12
          回复