Fortran Coder

标题: parameter为什么除4096再乘4096 [打印本页]

作者: taotao0718    时间: 2014-12-8 16:05
标题: parameter为什么除4096再乘4096
[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需要定义成多少位的整数,然后也不是很清楚。

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


作者: 珊瑚虫    时间: 2014-12-8 20:12
cuda 程序?
作者: fcode    时间: 2014-12-8 21:05
按照注释来说,n2drec 必须是4096的整倍数。
除以4096再乘以4096保证了是4096的整倍数,加上4095是为了保证至少有一个倍数的富裕。
实际上,用 nint( itdm*jtdm/4096 ) + 1 就可以了。
作者: taotao0718    时间: 2014-12-9 08:52
珊瑚虫 发表于 2014-12-8 20:12
cuda 程序?

额,请问cuda是什么?
这是个.h文件里的函数定义,在另一个fortran程序里会调用,应该是个fortran程序吧,我也不是很懂,求轻拍
作者: taotao0718    时间: 2014-12-9 08:58
fcode 发表于 2014-12-8 21:05
按照注释来说,n2drec 必须是4096的整倍数。
除以4096再乘以4096保证了是4096的整倍数,加上4095是为了保证 ...

好像有点明白这个语句的意思了,谢谢
作者: fcode    时间: 2014-12-9 10:03
cuda 是英伟达出品的一种通用化并行计算平台。目前支持 C/C++ 和 Fortran 语法。

珊瑚虫应该猜错了~~呵呵。




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2