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

📄 rate.c

📁 MPICH是MPI的重要研究,提供了一系列的接口函数,为并行计算的实现提供了编程环境.
💻 C
字号:
/*    This file contains very simple code for estimating the parameters in the    simple (s + rn) model of communication.  It does this using the NORMAL    equations for the least-squares problem; this method has a number of    disadvantages including numerical instability when the number of    observations is large or the normal equation matrix nearly singular.    Another problem is that the least squares problem gives different answers    depending on how the system is weighted.  For example, another weighting    (different than the one used here) weights the rows of the matrix by the    inverse of the right-hand-side.    The advantage of this approach is that it needs only a few, easily (if    subject to numerical errors during accumulation) acquired values */    /*    PIComputeRate - Computes the communication rate given timing information     Input Parameters:+   sumlen - Sum of the lengths of the messages sent.   sumtime - Sum of the time to send the messages.   sumlentime - Sum of the product of the message lengths and the times                 to send those messages.   sumlen2 - Sum of the squares of the lengths of the messages-   ntest   - Number of messages sent    Output Parameters:+   s - latency-   r - transfer rate    Notes:    This code computes a fit to the model (s + r n) for communications    between two processors.  The method used is reasonable reliable for    small values of ntest.    If there is insufficient data to compute s and r, both are set to    zero.  This code does not check that the assumed model (s + r n) is    a good choice.    The length sums are doubles rather than ints to provide a "long long"    type (think of them as 53 bit integers). */void PIComputeRate( double sumlen, double sumtime, double sumlentime, 		    double sumlen2, int ntest, double *s, double *r ){    double R, S;    R = sumlen * sumlen - ntest * sumlen2;    if (R == 0.0) {	*s = *r = 0.0;	return;    }    R = (sumlen * sumtime - ntest * sumlentime) / R;    S = (sumtime - R * sumlen) / ntest;    if (S < 0 || R < 0) {	S = 0.0;	R = sumlentime / sumlen2;    }    *r = R;    *s = S;}

⌨️ 快捷键说明

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