目前来看还有哪些语言还有可能挤身进科学/工程计算中?

MetalPerformanceShader 我用过,最大痛点浮点数不支持 64 位,而且支持的图像格式是定死的 RGBA,没有高维数组,对于我要做的应用没什么直接用处

Metal shader 用我原来的 Intel Mac 不好搞,今天 M4 MacBook 到了在配环境,看看再说。

看了下 MLX,感觉这个利好 APL

1 个赞

float64就别说了,目前性价比最高的float64设备都还是10年前titan呢(我也不知道你要做什么,RGBA也没什么问题啊,图像预处理一下不就好了(至于ndarray,mps是有的MPSNDArray | Apple Developer Documentation ,我不知道你从哪儿看到没有的,不至于这么基础内容都没有,就算没有不过是加个下标transform就行了,至少我用过的3D卷积需要的 (N,B,CI,CO,D,W,H,K1,K2)是没有任何问题的

1 个赞

没有LEAN么

NDArray 这文档全是自动生成的方法名,啥都没写,真有人用吗?

double float CUDA 一直都支持的,倒不如说从十年前开始的 N 卡几乎全都支持的。

1 个赞

光支持没速度啊(而且支持也是假支持,除了V100/P100/A100/H100这种,全都是模拟的(你用metal也可以用fp32模拟一个

1 个赞

那本质也是并行的,能比过 CPU 就行了,而且 API 能提供统一抽象怎么也比自己撸强

没多少区别,需要fp64就意味着fp128甚至更高精的也逃不了,更高的反正只能自己手写

之前搞微分几何的时候,因为pytorch不支持fp64,换到了jax,然而实际算下来,32完成不了的,换到64也没多少区别,inf/nan的时候就老实裁剪吧。

5 个赞

这可不兴瞎几把一概而论,遇到 close to singular matrix 中间结果需要五倍于 double 精度都不见得刚得过,和 float 本身只有接近 6 位有效数字是两回事

原始输入数据还是以 double 为多,算个减法 float 精度不够用很常见,那也不至于需要用到 quadruple 精度

没区别,要高精度时候不会用double,都是自己搞。不用高精度,bf16甚至fp16就足够了,最多优化器部分因为要平方留着fp32

那想必你自己写的 elementary function 的 error 也在 2ulp 以内吧

CPU这不是一堆gmp,mpfr,qd

GPU上不会有人要做高精度,然后连用double来模拟double_double都不会吧?GPU上你倒是说一个真正成熟的啊?不都在structure hi lo

当然是 GPU 啊,CUDA math library 能给 double precision 结果做 error bound,GPU 不好复现 CPU 浮点结果(毕竟现在都是用更好精度计算再取整的)又不代表用它就可以瞎算,而且我当然知道 elementary f 不搞近似还要能 parallel 难搞了,开源的我也就知道 https://sleef.org/ (顺带一提,他也支持 quadruple float)所以才问你有何高见。

你搞 extended precision float using unevaluated sum of machine precision floats,优势的确在能自动 parallel 基本运算,那又不代表会 get a math library for free,实际上这就是为啥有专门的 double-double library 但是支持用任意个数的 unevaluated float sum 不多见(Ulrich W. Kulisch 提出的原版算法),因为不搞对特定精度优化就要用数倍尺寸的 accumulator 才能保证 math library 结果准确,然后因为 exponent 位数有限除非理想情况下有硬件支持会有额外优势不然高 prec 不如 MPFR 有效。

我明确一下需求:

  • 原始数据不会超过 double,而且中间过程不至于需要 extended precision
  • 需要 sin asin ln exp,float 密度不够是不太行的
  • 最好有但可以接受自己撸的,支持 complex32/64
  • 能并行,不管是用向量指令还是 GPU,mpi 用不到就算了

实际上 veclib (或者 x86_64 MKL) 已经很好满足我的需要了,MPS 相比之下就显得鸡肋了,我能用到上的也就 matrix/array mul (小整数还是有用的),不知你坚持要找补 double 无用论意义何在。

实际上我一开始就没限定因为 AI 就要用到 GPU,不管是 Intel 新出的扩展指令还是 Apple 的 SME 都是 AI 带动的 CPU 扩展指令,另外 SME 确实是支持 FP64 的,我看衰 Intel 也是因为 AMX 不但只给服务器系列还只支持 FP16,太j儿小器了

继续问。