⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 get_fp_posn.c

📁 MPICH是MPI的重要研究,提供了一系列的接口函数,为并行计算的实现提供了编程环境.
💻 C
字号:
/* -*- Mode: C; c-basic-offset:4 ; -*- *//*  *   $Id: get_fp_posn.c,v 1.4 2002/10/24 17:01:14 gropp Exp $     * *   Copyright (C) 1997 University of Chicago.  *   See COPYRIGHT notice in top-level directory. */#include "adio.h"#include "adio_extern.h"/* returns the current position of the individual file pointer   in etype units relative to the current view. */void ADIOI_Get_position(ADIO_File fd, ADIO_Offset *offset){    ADIOI_Flatlist_node *flat_file;    int i, n_filetypes, flag, frd_size;    int filetype_size, etype_size, filetype_is_contig;    MPI_Aint filetype_extent;    ADIO_Offset disp, byte_offset, sum, size_in_file;        ADIOI_Datatype_iscontig(fd->filetype, &filetype_is_contig);    etype_size = fd->etype_size;    if (filetype_is_contig) *offset = (fd->fp_ind - fd->disp)/etype_size;    else {/* filetype already flattened in ADIO_Open */        flat_file = ADIOI_Flatlist;        while (flat_file->type != fd->filetype) flat_file = flat_file->next;	MPI_Type_size(fd->filetype, &filetype_size);	MPI_Type_extent(fd->filetype, &filetype_extent);	disp = fd->disp;	byte_offset = fd->fp_ind;	n_filetypes = -1;	flag = 0;	while (!flag) {	    sum = 0;	    n_filetypes++;	    for (i=0; i<flat_file->count; i++) {		sum += flat_file->blocklens[i];		if (disp + flat_file->indices[i] + 	     	    (ADIO_Offset) n_filetypes*filetype_extent + flat_file->blocklens[i] 		    >= byte_offset) {		    frd_size = (int) (disp + flat_file->indices[i] + 			(ADIO_Offset) n_filetypes*filetype_extent			+ flat_file->blocklens[i] - byte_offset);		    sum -= frd_size;		    flag = 1;		    break;		}	    }	}	size_in_file = (ADIO_Offset) n_filetypes*filetype_size + sum;	*offset = size_in_file/etype_size;    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -