MPI、PThread笔记

1.进程+线程,进程绑定跟CPU利用率关系

OpenMPI 可以通过多个参数来指定进程的绑定情况。集群单个计算节点往往包含多个物理CPU,每个物理CPU上包括多个物理核心,现在的处理器多支持超线程,所以物理核心又可以分为两个逻辑核心。假设有一个计算节点,包含2个物理CPU,每个CPU上6个核,支持超线程:在使用进程加线程编程时,若使用"mpirun  -1  --bind-to-socket --bysocket  "运行一个进程时,会把这个进程绑定到一个物理CPU上,此时最大的CPU利用率为1200%(一个CPU上6个核,加上超线程是12个逻辑核,为进程指定12个线程时达到最大利用率1200%);

若不加“ --bind-to-socket --bysocket ”,则不会把这个进程绑定给固定的CPU,此时两个CPU均可被该进程使用,最大利用率为2400%(24个逻辑核,为进程指定24个线程时达到最大)。

时间: 2024-11-01 18:42:45

MPI、PThread笔记的相关文章

蒙特卡洛方法计算圆周率的三种实现-MPI openmp pthread

蒙特卡洛方法实现计算圆周率的方法比较简单,其思想是假设我们向一个正方形的标靶上随机投掷飞镖,靶心在正中央,标靶的长和宽都是2 英尺.同时假设有一个圆与标靶内切.圆的半径是1英尺,面积是π平方英尺.如果击中点在标靶上是均匀分布的(我们总会击中正方形),那么飞镖击中圆的数量近似满足等式 飞镖落在圆内的次数/飞镖落在标靶内的总次数=π/4 因为环包含的面积与正方形面积的比值是π/4. 因为环所包含的面积与正方形面积的比值是π/4. 我们可以用这个公式和随机数产生器来估计π的值. 伪代码如下: numb

PThread 学习笔记

POSIX 线程,也被称为Pthreads,是一个线程的POSIX标准: pthread.h int pthread_create(pthread_t * thread, pthread_attr_t const *attr, void *(*start_routine)(void*), void *arg);thread: 新线程句柄attr: 新线程属性start_routine: 线程启动程序arg:线程启动程序参数 int pthread_join(pthread_t thread, v

《软件调试的艺术》学习笔记——GDB使用技巧摘要

<软件调试的艺术>学习笔记——GDB使用技巧摘要 <软件调试的艺术>,因为名是The Art of Debugging with GDB, DDD, and Eclipse. 作者是美国的Norman Matloff和Peter Jay Salzman,中文版由张云翻译.是人邮出版社图灵程序设计丛书初版.这里称为"艺术",个人觉得有点过了,但是其中关于gdb以及在gdb基础之上集成的DDD和Eclipse调试技巧的整理确实是做的很好,对于Linux/开源社区下的

张高兴的 Xamarin.Forms 开发笔记:为 Android 与 iOS 引入 UWP 风格的汉堡菜单 ( MasterDetailPage )

所谓 UWP 样式的汉堡菜单,我曾在"张高兴的 UWP 开发笔记:汉堡菜单进阶"里说过,也就是使用 Segoe MDL2 Assets 字体作为左侧 Icon,并且左侧使用填充颜色的矩形用来表示 ListView 的选中.如下图 但怎样通过 Xamarin.Forms ,将这一样式的汉堡菜单带入到 Android 与 iOS 中呢? 一.大纲-细节模式简介 讲代码前首先来说说这种导航模式,官方称"大纲-细节模式"(MasterDetail).左侧的汉堡菜单称为&qu

pthread的条件变量初探

本期研究一下Pthreads的条件变量.从网上找到了一个学习笔记,请看"cnblogs-blueclue's tech blog-POSIX线程库条件变量的使用--Pthreads线程库实例笔记4". 在windows上测试了一下该代码,稍作改动, 粘贴如下: 其中有几点需要注意: 延时函数是Sleep(),在头文件<windows.h>中.该函数用于延时某一线程的执行: 轮询次数设置为while循环的条件,在信号发送和接受函数中,轮询次数应当保持一致: #include 

《Linux内核分析》第六周学习笔记

<Linux内核分析>第六周学习笔记 进程的描述和创建 郭垚 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 [学习视频时间:1小时 撰写博客时间:2小时] [学习内容:进程创建的过程.使用gdb跟踪分析内核处理函数sys_clone] 一.进程的描述 1.1 进程描述符task_struct数据结构(一) 1. 进程控制块PCB——task_struct 为了管理进程,内核

MapReduce剖析笔记之一:从WordCount理解MapReduce的几个阶段

WordCount是一个入门的MapReduce程序(从src\examples\org\apache\hadoop\examples粘贴过来的): package org.apache.hadoop.examples; import java.io.IOException; import java.util.StringTokenizer; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path

memcached-1.4.20 主要启动流程笔记

以下笔记主要是关注tcp模式下memcached的启动过程. main() 设置信号处理函数为sig_handler() 初始化系统设置,保存在全局变量settings里面 settings_init(); 解析启动参数,使用settings局变量保存配置 根据启动参数初始化系统具体使用的hash函数,默认为jenkins_hash()哈希函数 hash_init() ; 根据tcp_specified的值设置网络监听模式,默认为tcp模式 之后设置可使用的cpu核的数量以及最大链接数量 限制启

《Linux多线程编程手册》读书笔记

第二章 基本线程编程 1.(P25)如果多个线程等待同一个线程终止,则所有等待线程将一直等到目标线程终止.然后,一个等待线程成功返回,其余的等待线程将失败并返回ESRCH错误. 2.(P26)将新线程的pbe参数作为栈参数进行传递.这个线程参数之所以能够作为栈参数传递,是因为主线程会等待辅助线程终止.不过,首选方法是使用malloc从堆分配存储,而不是传递指向线程栈存储的地址.如果将该参数作为地址传递到线程栈存储,则该地址可能无效或者在线程终止时会被重新分配. 3.(P28)pthread_de