关于DESCINIT的lld参数疑问及程序段错误问题求助
DESCINIT的lld参数疑问与段错误排查
问题概述
我在使用DESCINIT时对lld参数存在疑问,且调用该函数后程序出现段错误,相关代码及场景如下:
自定义subrows函数(用于计算lld参数)
该函数用于计算每个进程上的局部行数,实现代码:
integer function subrows(global_rows, block_rows, row_procs) integer global_rows, block_rows, row_procs subrows = (global_rows / (block_rows * row_procs)) * block_rows + min(mod(global_rows , & & (block_rows * row_procs)), block_rows) end function subrows
调用示例:subrows(int(full_data_dims_b(1), kind = 4), m_b, nprow)
DESCINIT调用代码
call DESCINIT( & desca, & int(full_data_dims_a(1), kind=4), & int(full_data_dims_a(2), kind=4), & m_a, & n_a, & 0, & 0, & ictxt, & subrows(int(full_data_dims_a(1), kind = 4), m_a, nprow), & error)
关联的内存分配代码
dset_id_a = open_dataset(file_id, dsetname_a) dspace = open_dataspace(dset_id_a) ndims_a = get_simple_extent_ndims(dspace)
核心疑问
- 用
subrows计算的lld参数是否正确?为何会引发段错误? - 希望了解DESCINIT首维度的相关细节。
内容的提问来源于stack exchange,提问作者池田直哉
相关产品推荐
相关产品推荐

