gpt4 book ai didi

c++ - 不稳定的分析时间

转载 作者:行者123 更新时间:2023-11-28 03:26:13 26 4
gpt4 key购买 nike

我正在尝试从 Accelerate Mac OS X 框架中为 cblas_dgemm 函数获得多次迭代的平均 MFLOPS/S 速率。这是我正在使用的代码(它通过函数指针 afp 调用 cblas_dgemm):

double benchmark_cblas_matmul(dgemm_fp afp,
const CBLAS_ORDER Order,
const CBLAS_TRANSPOSE TransA,
const CBLAS_TRANSPOSE TransB,
const int M,
const int N,
const int K,
const double alpha,
const double *A,
const int lda,
const double *B,
const int ldb,
const double beta,
double *C,
const int ldc)
{
double mflops_s,seconds = -1.0;
for(int n_iterations = 1; seconds < 0.1; n_iterations *= 2)
{
seconds = read_timer();
for(int i = 0; i < n_iterations; ++i)
{
(*afp)(Order,TransA,TransB,M,N,K,alpha,A,lda,B,ldb,beta,C,ldc);
}
seconds = read_timer() - seconds;
mflops_s = (2e-6*n_iterations*N*N*N)/seconds;
}
return mflops_s;
}

定时器例程是:

double read_timer( )
{
static bool initialized = false;
static struct timeval start;
struct timeval end;
if( !initialized )
{
gettimeofday( &start, NULL );
initialized = true;
}

gettimeofday( &end, NULL );

return (end.tv_sec - start.tv_sec) + 1.0e-6 * (end.tv_usec - start.tv_usec);
}

该代码通常运行两个 1000x1000 矩阵的乘法运算。我的问题是这段代码的连续计时非常不可靠;即使外循环中的时间限制增加到五秒,最终速率也在 20000 到 30000 mflops/s 之间变化。我在 2011 年的 Macbook Pro 上使用 OS X 10.8.2,四核 i5 超线程关闭 this kernel extension当我进行基准测试时,除了终端之外没有运行任何应用程序。有没有人对如何获得更稳定的时序有任何建议?

最佳答案

有些混淆是您无法控制的。

所讨论的处理器具有 Turbo 模式,只要不受热限制,它就可以比标称时钟速率运行得更快。但是,运行持续的 GEMM 基准测试会使核心固定在接近峰值的算术吞吐量,这最终将导致核心达到其热包络的极限,并且时钟将被节流到标称速率,然后到甚至更低的频率。

假设您看到测量的性能呈下降趋势,这可能是原因。

关于c++ - 不稳定的分析时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13885281/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com