• 关于并行计算的一些基础开放问题


    题目: 关于并行计算的一些基础开放问题。

    ◼ 如何定义并计算,请分别阐述分布式内存到共享内存模式行编程的区别和实现(例子代码)?

    ◼ 请使用 MPI 和 OpenMP 分别实现 N 个处理器对 M 个变量的求和?

    ◼ 请说明 SIMD 指令在循环中使用的权限?向量化优化有哪些手段?

    ◼ 请用 Amdahl 定律说明什么是并行效率以及并行算法的扩展性?并说明扩展性的性能指标和限制因素,最后请说明在共享内存计算机中,共享内存的限制?OpenMP 是怎样实现共享内存编程环境的?MPI 阻塞和非阻塞读写的区别?

    参考答案

    (简要答案,但必须触及,可以展开) ◼ 同时执行多个/算法/逻辑操作/内存访问/IO,相互独立同时运行,分三个层次:进程级,多个节点分布式内存通过MPI通信并行;线程级,共享内存的多路机器,通过OpenMP实现多线程并行;指令集:通过SIM指令实现单指令多数据。。。。举例吧啦吧啦。

    ◼ MPI代码,,,OpenMP代码,分别写出来 M个元素,N个处理器的累加,后者注意private 参数。

    ◼ SIMD在循环中的应用,限制在于 SIMD指令处理的每一个数组的长度,cache line利用,内部循环间的依赖和条件调用等。

    ◼ 向量化,主要看SSE和AVX指令占比率,通过编译器优化...... 在loop代码中使用。

    ◼ 性能和计算规模随处理器增加的变化曲线,实测HPL和峰值HPL比率,能用用Amdahl定律表达Tpar(N) = (an + (1-a)n/N )t + C (n,N), 能够讲明白串行部分对整个并行的天花板效应,扩展性能够解释清楚算法的扩展性=并行效率随处理器数目的变化关系,画出来。

    ◼ 共享内存计算机OpenMP对变量的限制描述,EREW,CREW,ERCW,CRCW等区别,NUMA概念,如何保持coherent等。

    ◼ 写出OpenMP和MPI的核心函数,回答问题即可。

    资料:

    OpenMP和MPI是并行编程的两个手段,对比如下:

    • OpenMP:线程级(并行粒度);共享存储;隐式(数据分配方式);可扩展性差;
    • MPI:进程级;分布式存储;显式;可扩展性好。

    OpenMP采用共享存储,意味着它只适应于SMP,DSM机器,不适合于集群。MPI虽适合于各种机器,但它的编程模型复杂:

    • 需要分析及划分应用程序问题,并将问题映射到分布式进程集合;
    • 需要解决通信延迟大和负载不平衡两个主要问题;
    • 调试MPI程序麻烦;
    • MPI程序可靠性差,一个进程出问题,整个程序将错误;


     

  • 相关阅读:
    STM32关于多线程运行的疑问
    流量校准仪开发日志
    来自一位十余年工作经验的老电子工程师的心里话:该出手时便出手!
    什么是开尔文连接
    node.js
    锂电池充电合集
    UICollectionView 使用 介绍
    UICollectionView 讲解
    sourcetree帮助文档
    使用 Git + Dropbox + SourceTree 做 Source Code Management
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13312561.html
Copyright © 2020-2023  润新知