![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
并行与分布式程序设计
三三三三三三外
这个作者很懒,什么都没留下…
展开
-
并行计算期末复习
文章目录推动并行计算的因素并行计算的应用超算机并行计算软件技术面临的挑战并行程序设计的复杂性数据移动(通信)代价很高能耗挑战伸缩性挑战软件生态环境几乎停滞Cache相关工作原理及概念冯诺伊曼结构Cache 高速缓冲存储器(缓存)虚拟内存低层次的并行 (硬件级别, 程序员不可控)并行 多线程相关概念硬件级别的单核多线程Flynn分类法及相关概念SIMDSIMD的应用--向量处理器 和 GPUMIMD(共享内存, 分布式内存, 网络连接)共享内存系统一致内存访问(UMA)非一致内存访问(NUMA)分布式内存系统原创 2020-08-31 16:55:24 · 6210 阅读 · 3 评论 -
[并行与分布式程序设计] MPI编程 组通信&非阻塞通信
文章目录All-to-All广播和归约算法思想All归约 和 前缀和All归约前缀和前缀和算法图示用户自定义归约操作Scatter 和 Gatherscatter实现算法gather实现算法all-to-all个体化通信Barrier非阻塞通信发送, 接收, 查询的接口调用非阻塞通信对象非阻塞通信的取消重复非阻塞通信非阻塞通信解决Jacobi迭代利用重复模式解决Jacobi迭代All-to-All广播和归约All-to-All广播 : 所有进程同时发起一个广播, 每个进程向所有其它进程发送m个字Al原创 2020-05-26 17:46:30 · 1134 阅读 · 0 评论 -
[并行与分布式程序设计]MPI+Pthreads混合编程 (以及MPI提高内容目录)
文章目录多线程混合编程MPI 和 线程MPI + Pthreads混合编程MPI四种线程安全级别MPI_THREAD_SINGLEMPI_THREAD_FUNNELEDMPI_THREAD_SERIALIZEDMPI_THREAD_MULTIPLE线程和MPIMPI_THREAD_MULTIPLE规范MPI_THREAD_MULTIPLE中的序: 组通信错误例子MPI_THREAD_MULTIPLE中的序: RMA错误例子MPI_THREAD_MULTIPLE 中的序: 对象管理错误例子MPI_THREAD原创 2020-06-04 15:27:05 · 2017 阅读 · 0 评论 -
[并行与分布式程序设计] 使用主从模式MPI编程进行矩阵行排序
#include <iostream>#include <algorithm>#include <mpi.h>#include <vector>#include <sys/time.h>using namespace std;void mpi_sort(vector<float>* B, int arr_num, int arr_len, int g);void matrix_inti(vector<floa...原创 2020-05-22 02:10:47 · 460 阅读 · 0 评论 -
[并行与分布式程序设计] Jacobi迭代数据并行
#include <iostream>#include <mpi.h>#include <sys/time.h>#include <vector>using namespace std;void mpi_jacobi(vector<float>*, vector<float>*, int rank, int size, int n, int my_n, int steps, MPI_Statu原创 2020-05-21 20:57:57 · 443 阅读 · 0 评论 -
[并行与分布式程序设计] MPI第二讲笔记:并行排序使用Send / Recv
MPI学习笔记C++中数组不能赋值, a = {1, 2} error, 因为a是一个指针, 不能把{1,2}赋值给一个指针并行排序使用Send / Recv#include <stdio.h>#include <mpi.h>#include <sys/time.h>void sort(int* a, int n) { int temp; for (int i = 0; i < n - 1; i++) { for.原创 2020-05-21 20:48:43 · 178 阅读 · 0 评论 -
[并行与分布式程序设计] Xcode上MPI编程环境搭建 & Hello World实现
Running Open MPI on macOSbrew install mpichXcode设置条件编译参数Debugging and Running MPI in Xcode. 注意其中的工程设置!! 很有用#include <iostream>#include <mpi.h>// C//int main(int argc, char * argv[]){// int my_id, num_procs;// int name_l..原创 2020-05-21 02:40:27 · 544 阅读 · 0 评论 -
[并行与分布式程序设计] OpenMP 编程练习
OpenMP中的嵌套并行OpenMP中的同步机制mac Number 使用函数matlab中文件读取方法, 特别掌握dlmreadmatlab字符串拼接Python strip() lstrip() rstrip() 函数 去除空格vector转换为数组, 取vector首元素地址和大小即可C++保留两位小数...原创 2020-05-15 22:29:30 · 285 阅读 · 0 评论 -
[并行与分布式程序设计] 冒泡排序 转换为 奇偶专置排序并行化
#include <iostream>#include <omp.h>#include <sys/time.h>#include <fstream>using namespace std;void bubble(int*, int);void odd_even1(int*, int);void odd_even2(int*, int);void show(int*, int);void init(int*, int);int main(原创 2020-05-14 19:22:45 · 503 阅读 · 0 评论 -
[并行与分布式程序设计] #parama omp parallel for num_threads(4) reduction(+:sum) private(factor)
#parama omp parallel 是并行化区域开始的部分#parama omp for 后面只能接for循环, 用来自动并行化for循环不检查依赖性. 当存在依赖条件时不会报错, 但可能造成结果错误只支持for循环, 且不能有break#parama omp parallel reduction(+:sum) 归约操作, 将相同的归约操作符重复的应用到操作序列上, 自动解决数据依赖的问题# private(list) / shared(list) 多个变量之间用逗号隔开括号.原创 2020-05-14 15:17:30 · 862 阅读 · 0 评论 -
[并行与分布式程序设计] OpenMP 并行编程----梯形积分法
#include <iostream>#include <omp.h>#include <cmath>#include <sys/time.h>using namespace std;double f(double);// 返回值都为void* 便于test_time的范型void* area1(double, double, int, double*);void* area2(double, double, int, double*);v原创 2020-05-14 11:30:29 · 1121 阅读 · 0 评论 -
[C++]Xcode进行 OpenMP 编程的配置笔记
Xcode中C++头文件的路径 : /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1Xcode中C头文件路径 : /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/includeMacOS头文件藏的这么深Xco.原创 2020-05-14 01:25:12 · 258 阅读 · 0 评论 -
[并行与分布式程序设计] 多维数组排序作业笔记
vector 使用手册C++表达式类型错误srand和rand的使用容器数组“mutex”不明确algorithm头文件中的sort方法 expanded from macro ‘PTHREAD_MUTEX_INITIALIZER’#define PTHREAD_MUTEX_INITIALIZER {_PTHREAD_MUTEX_SIG_init, {0}}undefined reference to `pthread_join’解决办法gcc -O0 -O1 -O2 -O3 四级优化选.原创 2020-05-12 00:01:32 · 184 阅读 · 0 评论 -
[并行程序设计] 多线程pthread编程笔记
课程的讲解顺序单核向量–>多线程–>多个节点分布式编程–>cuda/gpu编程多线程Pthread编程共享内存系统Cache一致性的解决方法伪共享共享互联网络共享内存编程并行程序设计的复杂性并行程序的性能评价多线程编程Pthread APIPthread编程(POSIX): 共享内存式的编程 (书上第四章内容)共享内存和分布式内存回顾Pthreads编程简介...原创 2020-04-17 19:51:17 · 815 阅读 · 0 评论 -
[并行程序设计] 使用条件变量并行编程
mutex只是简单的加锁/解锁如果加锁后,需要判断某个条件, 条件不满足则需要解锁, 多次轮询, 消耗会很大使用条件变量, 加锁后, 判断某个条件, 条件不满足时, 会阻塞同时释放锁, 等到条件满足被唤醒后, 又回重新加锁. 避免了多次加锁/解锁的资源开销创建条件变量pthread_cond_t count_threahold_cv;初始化条件变量pthread...原创 2020-04-17 19:04:54 · 139 阅读 · 0 评论 -
[并行与分布式程序设计] Flynn分类法 和 并行算法的评价指标
并行与分布式程序设计Flynn's taxonomySISDSIMDMISDMIMD并行算法性能的评价指标加速比Amdahl's Law效率可扩展性三级目录Flynn’s taxonomy根据指令和数据能否同时执行, 将计算机系统分为四类:SISD (Single Instruction Single Data): 单指令, 单数据SIMD (Single Instruction Mul...原创 2020-04-14 14:32:59 · 752 阅读 · 0 评论 -
[并行与分布式程序设计] C++使用pthread库编写并行程序示例
估算PI的多线程算法问题描述串行版本直接多线程(不考虑竞争条件)忙等待互斥量信号量barrier问题描述利用上述公式编写程序, 分别计算不同规模下的PI值, 并切比较时间.串行版本#include <iostream>#include <ctime>using namespace std;int main() { clock_t begin, e...原创 2020-04-17 04:11:49 · 400 阅读 · 0 评论