zoukankan      html  css  js  c++  java
  • C-order/Fortran-order(Row-/Column-major order)

    1. row-major / column-major order

    无论是行序优先还是列序优先,其实在计算机计算中,指的都是在线性空间(linear storage,如 RAM,也即连续内存存储 contiguous in ,memory)存储多维数组(multidimensional arrays)的方式。


    这里写图片描述

    数据的分布方式(data layout)对于在不同编程语言间正确地传递多维数组是十分关键的。

    2. 地址计算

    这里我们将多维数组的概念泛化为更高维。对于 d 维数组 N1×N2××Nd,该数组中的一个元素为 (n1,n2,,nd)(其中 nk[0,Nk1],从 0 开始计数),其在内存中的地址应当为:

    • 行序(row-major order):对于行序,最后一维是连续的,

      nd+Nd(nd1+Nd1(nd2+Nd2(+N2n1)))=k=1d=k+1dNnk

    • 列序(column-major order):对于列序,第一维是连续的,

      n1+N1(n2+N2(n3+N3(+Nd1nd))))=k=1d(=1k1N)nk

    references

  • 相关阅读:
    在Visual Studio中使用NUnit
    C#调用Exe
    网页用chrome打开为乱码
    ctags最基本用法
    Facebook Connect
    SVM初体验
    python中可恶的回车符
    初识PowerDesigner
    Mysql中文乱码问题解决
    stat函数
  • 原文地址:https://www.cnblogs.com/mtcnn/p/9422239.html
Copyright © 2011-2022 走看看