Fortran Coder

查看: 15014|回复: 5
打印 上一主题 下一主题

[求助] parameter为什么除4096再乘4096

[复制链接]

19

帖子

6

主题

0

精华

入门

F 币
107 元
贡献
69 点
跳转到指定楼层
楼主
发表于 2014-12-8 16:05:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
[Fortran] 纯文本查看 复制代码
c----n2drec = size of output 2-d array, multiple of 4096
       integer    n2drec
      parameter (n2drec=((itdm*jtdm+4095)/4096)*4096)

这是代码中的其中几行,不是很明白这个size of output 2-d array是什么,然后为什么要乘以4096,
4096是2的12次方,然后不知道这是不是个例,如果有人懂,请指教。

还有就是parameter的定义,现在就是知道这个(itdm*jtdm+4095)/4096)是先取了整再乘以4096,
为什么要减去4095,然后为什么又要再乘以4096,都不是很明白。

我问了师兄,他说可能是想试试这个n2drec需要定义成多少位的整数,然后也不是很清楚。

希望有了解的朋友们能指点指点,谢谢!

分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

135

帖子

15

主题

0

精华

版主

F 币
1159 元
贡献
637 点

爱心勋章管理勋章

沙发
发表于 2014-12-8 20:12:19 | 只看该作者
cuda 程序?
回复

使用道具 举报

1963

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1357 元
贡献
574 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

板凳
发表于 2014-12-8 21:05:18 | 只看该作者
按照注释来说,n2drec 必须是4096的整倍数。
除以4096再乘以4096保证了是4096的整倍数,加上4095是为了保证至少有一个倍数的富裕。
实际上,用 nint( itdm*jtdm/4096 ) + 1 就可以了。

19

帖子

6

主题

0

精华

入门

F 币
107 元
贡献
69 点
地板
 楼主| 发表于 2014-12-9 08:52:19 | 只看该作者

额,请问cuda是什么?
这是个.h文件里的函数定义,在另一个fortran程序里会调用,应该是个fortran程序吧,我也不是很懂,求轻拍

19

帖子

6

主题

0

精华

入门

F 币
107 元
贡献
69 点
5#
 楼主| 发表于 2014-12-9 08:58:14 | 只看该作者
fcode 发表于 2014-12-8 21:05
按照注释来说,n2drec 必须是4096的整倍数。
除以4096再乘以4096保证了是4096的整倍数,加上4095是为了保证 ...

好像有点明白这个语句的意思了,谢谢

1963

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1357 元
贡献
574 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

6#
发表于 2014-12-9 10:03:03 | 只看该作者
cuda 是英伟达出品的一种通用化并行计算平台。目前支持 C/C++ 和 Fortran 语法。

珊瑚虫应该猜错了~~呵呵。
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-5-4 09:59

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表