- 主题:这两种运算方式哪个快?
有一段连续内存A,里面存着N个浮点数。
现在要从另一个段连续内存B里取出不连续的N个浮点数,每一个与A相应的做乘法。
已经知道要从B里面取的位置索引。
是先把B里面的取出来,放在一段连续内存C里,然后用矢量化的程序去做A和C的点-点乘法快,还是就取一个乘一个快?
--
FROM 111.201.209.*
写个程序测试一下
--
FROM 114.245.193.*
直接用 快...
这是 C++ 板块啊...
N 小, 硬算...
N 大, 上 threads, 简单有效暴力. C++ 现成的, 多几个 threads 齐活...
【 在 cleaf 的大作中提到: 】
: 有一段连续内存A,里面存着N个浮点数。
: 现在要从另一个段连续内存B里取出不连续的N个浮点数,每一个与A相应的做乘法。
: 已经知道要从B里面取的位置索引。
: ...................
--
FROM 142.59.143.*
你这描述都不太清楚,是b区块里面任意取n个数所以是不连续吗?那你先考虑任意存取带来的cache Miss的penalty吧
【 在 cleaf 的大作中提到: 】
: 有一段连续内存A,里面存着N个浮点数。
: 现在要从另一个段连续内存B里取出不连续的N个浮点数,每一个与A相应的做乘法。
: 已经知道要从B里面取的位置索引。
: ...................
--
FROM 85.76.105.*
这么底层的东西都要抠时间?!活久见!
【 在 cleaf 的大作中提到: 】
: 有一段连续内存A,里面存着N个浮点数。
: 现在要从另一个段连续内存B里取出不连续的N个浮点数,每一个与A相应的做乘法。
: 已经知道要从B里面取的位置索引。
: ...................
--
FROM 68.97.41.*
直接乘快
B里面的如果是规则间隔的话,可以用blas 库
【 在 cleaf 的大作中提到: 】
:
: 有一段连续内存A,里面存着N个浮点数。
:
: 现在要从另一个段连续内存B里取出不连续的N个浮点数,每一个与A相应的做乘法。
:
#发自zSMTH@板砖
--
FROM 112.32.54.*
具体要看N多大,执行多少遍等等。这个条件没有给全。
【 在 cleaf (Sep|Apr) 的大作中提到: 】
: 有一段连续内存A,里面存着N个浮点数。
: 现在要从另一个段连续内存B里取出不连续的N个浮点数,每一个与A相应的做乘法。
: 已经知道要从B里面取的位置索引。
: 是先把B里面的取出来,放在一段连续内存C里,然后用矢量化的程序去做A和C的点-点乘法快,还是就取一个乘一个快?
--
FROM 101.84.68.*
结果也是连续存储的吗
【 在 cleaf 的大作中提到: 】
: 有一段连续内存A,里面存着N个浮点数。
: 现在要从另一个段连续内存B里取出不连续的N个浮点数,每一个与A相应的做乘法。
: 已经知道要从B里面取的位置索引。
: ...................
--
FROM 123.58.117.*
intel有的cpu有特殊指令。之前做矩阵运算用到,算流体力学的场景,飞机建模。
看你问这个问题,说说你的场景,如果计算量不大,你都没有必要纠结。
【 在 cleaf 的大作中提到: 】
: 有一段连续内存A,里面存着N个浮点数。
: 现在要从另一个段连续内存B里取出不连续的N个浮点数,每一个与A相应的做乘法。
: 已经知道要从B里面取的位置索引。
: ...................
--
FROM 159.226.235.*
我觉得是放到连续内存里更快,可以看看这个
https://docs.microsoft.com/zh-cn/archive/blogs/xiangfan/optimize-your-code-matrix-multiplication
【 在 cleaf 的大作中提到: 】
: 有一段连续内存A,里面存着N个浮点数。
:
: 现在要从另一个段连续内存B里取出不连续的N个浮点数,每一个与A相应的做乘法。
: ...................
--来自微水木3.5.8
--
修改:zzkGOOD FROM 121.69.27.*
FROM 121.69.27.*