多核编程入门

简介:

感谢 陈耿佳 投递此文。

下载地址:多核编程入门

本文是多核编程的入门资料汇总,来源主要是国外国内的一些网站及自己使用过程中一些记录,写作目的主要是内部分享用(@NSFOCUS)。在多核使用过程中,得益于很多网络资源,所以也把自己整理的产品无关的东西共享出来,希望对多核感兴趣的同学可以入门用。

在intel E5 平台上搞了几个月多核编程,中间收集并学习了一些多核编程的知识,整理了一份PDF格式的 ,欢迎大家一起探讨。

目前遇到比较难的问题是,自己做Demo的时候使用了nbds.tar.gz里一种无锁哈希的实现,但是最后发现它是没有删除的,无锁的删除真的那么难吗?有谁手上有比较稳定而且高效(必须针对缓存优化过)而且完整(lookup,insert,delete)的无锁哈希表实现吗?希望大家就这个问题给出一些建议。

 

本书目录

一. 并发与并行的区别? ……………………………………………………………………………………………………………11.1 串行 ………………………………………………………………………………………………………………………………… 11.2 并发 ………………………………………………………………………………………………………………………………… 11.3 并行 ………………………………………………………………………………………………………………………………… 1

1.4 多核编程的难点 ………………………………………………………………………………………………………………. 2

二. 多核体系架构 ……………………………………………………………………………………………………………………… 3

2.1 多核处理器定义 ………………………………………………………………………………………………………………. 3

2.2 多核发展趋势 ………………………………………………………………………………………………………………….. 3

2.3 一个多核处理器架构例子 ………………………………………………………………………………………………… 5

2.4 LINUX 线程核绑定 ……………………………………………………………………………………………………………… 6

2.4.1 核亲和性绑定 …………………………………………………………………………………………………………… 6

2.4.2 资源控制 cgroup ………………………………………………………………………………………………………. 8

三. 内存模型 …………………………………………………………………………………………………………………………….. 8

3.1 操作原子性 ……………………………………………………………………………………………………………………… 9

3.1.1 原子性的3种保证机制 …………………………………………………………………………………………….. 9

3.1.2 硬件原子操作 …………………………………………………………………………………………………………… 9

3.1.3 总线锁-原子操作原语 ……………………………………………………………………………………………… 12

3.2 缓存一致性 ……………………………………………………………………………………………………………………. 16

3.2.1 定义 ……………………………………………………………………………………………………………………….. 16

3.2.2 CC协议 ……………………………………………………………………………………………………………………. 17

3.2.3 伪共享 ……………………………………………………………………………………………………………………. 21

3.3 顺序一致性 ……………………………………………………………………………………………………………………. 24

3.3.1 定义 ……………………………………………………………………………………………………………………….. 24

3.3.2 几种顺序约束 …………………………………………………………………………………………………………. 25

3.3.3 乱序执行和内存屏障 ………………………………………………………………………………………………. 28

四. 并发级别 …………………………………………………………………………………………………………………………… 31

4.1 WAIT-FREEDOM 无等待并发 ……………………………………………………………………………………………….. 32

4.2 LOCK-FREEDOM 无锁并发 ……………………………………………………………………………………………………. 32

4.3 OBSTRUCTION-FREEDOM 无阻塞并发 …………………………………………………………………………………….. 33

4.4 BLOCKING ALGOITHMS 阻塞并发 ……………………………………………………………………………………………. 33

五. 锁 …………………………………………………………………………………………………………………………………….. 34

5.1 信号量 …………………………………………………………………………………………………………………………… 34

5.2 自旋锁 …………………………………………………………………………………………………………………………… 35

5.3 读写锁 …………………………………………………………………………………………………………………………… 35

5.4 顺序锁 …………………………………………………………………………………………………………………………… 37

5.5 RCU 

文章转自  并发编程网-ifeve.com
目录
相关文章
|
3月前
|
Linux 调度
Linux应用开发基础知识——多线程编程(十)
Linux应用开发基础知识——多线程编程(十)
46 0
Linux应用开发基础知识——多线程编程(十)
|
机器学习/深度学习 算法 计算机视觉
处理器基础知识
先描述下一般处理器的概念,维基百科的定义是 “In computing, a processor is an electronic circuit which performs operations on some external data source, usually memory or some other data stream”。最为常见的处理器有 CPU(可以运行任何程序)、GPU(图形图像处理)和 DSP(处理数字信号),还有专门用来做 DNN 应用神经网络处理器。
137 0
|
机器学习/深度学习 异构计算
处理器基础知识总结
处理器基础知识总结
154 0
|
监控 Go Python
使用go语言及Python语言实战把多核CPU跑满
一直有个疑问,Python及go能不能把多核CPU跑满,实践一把吧
1715 0
《OpenACC并行程序设计:性能优化实践指南》一 第1章 从串行编程到并行编程
本节书摘来自华章出版社《OpenACC并行程序设计:性能优化实践指南》一 书中的第1章,作者:[美] 罗布·法伯(Rob Farber),更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1177 0
《 嵌入式系统设计与实践》一一3.3 处理器是一门语言
本节书摘来自华章出版社《 嵌入式系统设计与实践 》一 书中的第3章,第3. 3节,作者:Elecia White 著 ,更多章节内容可以访问云栖社区“华章计算机”公众号查看
1100 0
|
算法 程序员 异构计算
《多核与GPU编程:工具、方法及实践》----第2章 多核和并行程序设计 2.1 引言
本章目标 学习设计并行程序的PCAM方法。 使用任务图和数据依赖图来识别可以并行执行的计算部分。 学习将问题的解法分解为可并发执行部分的流行的分解模式。 学习编写并行软件的主要程序结构模式,如主/从和fork/join。 理解分解模式的性能特点,如流水线。
1203 0
|
异构计算
《多核与GPU编程:工具、方法及实践》----第3章 共享内存编程:线程 3.1 引言
本章目标: 学习线程的定义以及创建方法。 学习完成特定任务的初始化线程方法。 学习多种终止多线程程序的技术。 理解多线程访问共享数据过程中的主要问题,例如竞争和死锁。
1362 0
|
异构计算
《多核与GPU编程:工具、方法及实践》----2.2 PCAM方法学
PCAM代表分割(Partitioning)、通信(Communication)、聚集(Agglomeration)和映射(Mapping),是一个分四步的并行程序设计过程,由Ian Foster在其1995的书[34]中推广使用。
2137 0