You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基准测试问题:C++/MPI/OpenMP应用执行时间在两值间波动

C++ MPI+OpenMP应用基准测试:环境配置与归约测试代码

我正在对三个不同的应用做基准测试,这些应用全部用C++编写,采用MPI与OpenMP组合的并行框架,编译工具用的是gcc 7.1搭配OpenMPI 3.0。

测试环境细节

  • 运行平台:多节点集群
  • 单节点硬件:2颗24核Intel CPU
  • 并行执行策略:每个节点运行1个MPI进程,节点内部通过OpenMP实现线程级并行加速

自定义归约操作的最简基准测试代码

这里是我用来测试自定义归约操作的代码片段(原片段未完整,我补充了基础可运行逻辑):

#include <mpi.h>
#include <omp.h>
#include <vector>
#include <chrono>

int main(int argc, char** argv) {
    int process_rank, process_count;
    MPI_Init(&argc, &argv);
    MPI_Comm_rank(MPI_COMM_WORLD, &process_rank);
    MPI_Comm_size(MPI_COMM_WORLD, &process_count);

    // 初始化测试用的局部数据
    const int local_data_size = 1000000;
    std::vector<double> local_data(local_data_size, 1.0);
    double local_sum = 0.0;

    // OpenMP线程并行计算局部和
    #pragma omp parallel for reduction(+:local_sum)
    for (int i = 0; i < local_data_size; ++i) {
        local_sum += local_data[i];
    }

    // MPI跨节点归约,汇总所有节点的局部和
    double global_sum;
    MPI_Reduce(&local_sum, &global_sum, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD);

    // 主进程输出结果
    if (process_rank == 0) {
        printf("Global sum from all nodes: %f\n", global_sum);
    }

    MPI_Finalize();
    return 0;
}

内容的提问来源于stack exchange,提问作者Fabian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:19:57