代码之家  ›  专栏  ›  技术社区  ›  Luv

如何快速从numpy数组中读取720亿个元素到三角矩阵中

  •  0
  • Luv  · 技术社区  · 4 年前

    我想把所有这些元素写进一个大小为381K x 381K的numpy数组的上三角。

    我用过np.triuê指数. 它毁了我的记忆。

    def generate_triangular_mat_gen(n_words):
        xgen_iters = chain(*[repeat(x, n_words - 1 - x) for x in range(n_words - 1)])
        ygen_iters = chain(*[range(x+1, n_words) for x in range(n_words-1)])
        return xgen_iters, ygen_iters
    

    这种方法效果很好。但是,一次读取1个元素并复制到numpy数组位置的速度很慢。可能需要一天左右。

    有没有一种方法可以一次性从迭代器中快速获取600000000个元素。这真的可以减少计算时间。

    1 回复  |  直到 4 年前
        1
  •  0
  •   Basile Starynkevitch    4 年前

    如何快速从numpy数组中读取720亿个元素到三角矩阵中

    你不能那样做

    720亿大约是10亿 11

    典型的DDR4模块的延迟约为每64位字50纳秒。

    算算。10 *50纳秒是很长的时间。50秒,大约半天。

    12

    GPGPU 具有 OpenCL Cuda . 幸运的是,加上大量的编程工作,你 可以

    也许你的计算时间可以缩短到一小时。

    你可能需要几周的开发时间。