用于基准测试的OpenMP启动代码?

时间:2015-06-14 01:53:21

标签: openmp benchmarking

我正在尝试对OpenMP感知代码的加速进行基准测试。我正在使用Crypto++库和Rabin-Williams signature class。该类实现了Bernstein的Tweaked Roots,并具有以下代码:

ModularArithmetic modp(m_p), modq(m_q);

#pragma omp parallel sections
{
    #pragma omp section
        m_pre_2_9p = modp.Exponentiate(2, (9 * m_p - 11)/8);
    #pragma omp section
        m_pre_2_3q = modq.Exponentiate(2, (3 * m_q - 5)/8);
    #pragma omp section
        m_pre_q_p = modp.Exponentiate(m_q, m_p - 2);
}

从Crypto ++的角度来看,我需要做的就是以下内容:

RWSS<P1363_EMSA2, SHA256>::Signer signer(...);
signer.Precompute();

// Ready to sign

执行Precompute()后,Crypto ++已准备就绪。我可以签名。

我也理解OpenMP必须启动,它有动态团队之类的东西。我试图引用之前的基准测试论文,如Performance Evaluation of OpenMP Benchmarks on Intel's Quad Core Processors,但他们没有说出他们做了什么。我也像EPCC OpenMP micro-benchmark suite那样使用了源代码,但它没有调用omp_set_dynamic来删除相关的开销。

我应该执行哪些步骤才能使OpenMP进入类似干净的房间状态,以便我实际上测量大整数/签名操作的加速,而不是花时间在OpenMP启动或关闭代码中;或花时间增长或缩小团队?我该怎么做OpenMP?

0 个答案:

没有答案