Fortran 板


LINE

※ 引述《kuang01 (我叫小刘)》之铭言: : 想请问各位大大 : 在fortran 一维矩阵里 : do i=1,5 : A(i)=2 : enddo : 这样会是 一colum vector 还是 row vector : 因为我在matlab里 : 如果把 do 换成for : 这样去写 会出现 row vector : 想请问 fortran 的一维跟matlab是否不太一样 底下的人回答大致正确,因为对指标上来说,确实没差别, 但是你有这种问题,甚至刻意的去区别到底一个一维阵 列是row还是column vector也不是坏事. 因为在记忆体的使用上,fortran确实是by column,而C based的语言,例如C/C++,Matlab,Scilab,Python都是 by row.也就是说,当你往记忆体里面填入一个二维阵 列时,fortran会让同一个column的资料作连续的排列. 因此当你在记忆体里面填值或读值的时候,在fortran应 该要先作column vector,而Matlab,C/C++,Python等应该要 先做row vector,在记忆体的使用上才是连续的读写,不会 一直跳跃. 这个影响还不只是读写效率的问题,那还只是其次的,作 不好顶多效率比较低,但是当你要让by column跟by row 的语言相互传值时,问题才出现. 例如你想在C-based的语言里面使用fortran写成的library, 例如lapack.因为你会把C里面的一块记忆体传到fortran中, 但因为C是将同一个row的资料在记忆体中作连续排列,跟 fortran对记忆体的使用方式刚好相反,所以当你把资料传入 时,fortran在理解这个阵列时,行列都会颠倒了.所以当你要 把C里面的值传到fortran时,往往需要先转秩才能传入.反之 亦然. --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 168.150.122.1
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/Fortran/M.1418933953.A.2EE.html
1F:→ gilocustom: Matlab是column-major。 12/19 17:57
2F:→ gilocustom: 话说虽然一般认知都当做Fortran是column-major,但是 12/19 17:58
3F:→ gilocustom: 在标准书中似乎没有此规范,会是约定俗成或是取决於 12/19 17:58
4F:→ gilocustom: 实做吗? 12/19 17:59
5F:→ wenni: 是因为Fortran实际存array记忆体是以colume major方式去存 12/19 23:23
6F:→ wenni: 所以才会特别这样说 也因此在做do-loop时先column效能较好 12/19 23:24
7F:→ gilocustom: 请问楼上:你所谓的「实际」是指标准就有明文规定吗? 12/20 02:18
8F:→ pipidog: 不是约定成俗,你让他跟c互传资料就会发现有问题了。 12/20 02:19
9F:推 gilocustom: 若既不在标准规范内,且亦非约定俗成(又名:历史包袱) 12/20 02:51
10F:→ gilocustom: ,则代表有些编译器可能是column-major,有些则可能是 12/20 02:52
11F:→ gilocustom: row-major,意即某些编译器的Fortran与C沟通时即便不 12/20 02:53
12F:→ gilocustom: 转置也不会有资料错置的状况(假设C规范是row-major)。 12/20 02:53
13F:→ gilocustom: 我了解本文的意思,我一直以来也都是这麽被告知的, 12/20 03:05
14F:→ gilocustom: 我好奇的是这说法究竟是人云亦云,还是明文规定? 12/20 03:05
15F:推 kkarthur: 判断是否column-major可以写只小程式计算运行的时间 12/24 18:00
16F:→ kkarthur: 就可以很快地看出差异,不过现在的compiler都有最佳化 12/24 18:00
17F:→ kkarthur: 直接用预设的选项去编译程式是看不出来差异的 12/24 18:01
18F:→ kkarthur: 可以额外加上把最佳化关掉的指令,就可以看出差异来 12/24 18:02







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Soft_Job站内搜寻

TOP