我试图在Fortran中使用include语句初始化查找表,该语句使用DATA
语句声明LUT的值。LUT是这样声明的:
REAL DIMENSION(400, 500, 15) :: my_array
INCLUDE '/path/to/my/file.incf'
包含文件看起来像这样:
...
DATA my_array (390:400, 499, 5) = / 0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9 /
DATA my_array (1:10, 500, 5) = / 1.0,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9 /
...
我的真实数据不是结构化的,所以LUT结构真的是必要的:)我想把它编译到程序中,这样我就不必在运行时读取它了。
当我尝试编译时,我得到以下错误:
ftn-237 crayftn: LIMIT SRC_RADIATION, File = /path/to/my/file.incf, Line = 127436
Maximum table size has been exceeded for the "ir_list_tbl".
据我所知,ir_list_tbl
用于记账,但由于我实际上只在单个变量中保存位置值,因此我不理解这里的开销。我们讨论的是单个数组中的3,000,000个值,而不是3,000,000个顶级变量。我能做得更好吗?
如果在堆栈上创建了显式形状的本地数组,则可能超出了堆栈大小