摘要: 第九章 通用核心回顾 创建线程组: shared(list) private(list) firstprivate(list) default(none) reduction(operator:list) #pragma omp parallel [clause[,clause]...] { //b 阅读全文
posted @ 2024-01-24 21:36 Mesonoxian 阅读(47) 评论(0) 推荐(0)
摘要: 第八章 OpenMP内存模型 内存模型 并发 是OpenMP的基础.如果两个或多个线程对内存中的相同地址执行混合读写操作,且这些读写操作没有被同步操作排序,则程序存在 数据竞争. 变量 是内存中一个地址的名称,这个内存可能是虚拟内存或物理内存.这意味着一个变量可能是随机存取存储器(RAM)中的一个位 阅读全文
posted @ 2024-01-24 07:29 Mesonoxian 阅读(125) 评论(0) 推荐(0)
摘要: 第七章 OpenMP任务 不规则问题 总结前面的内容,我们所学内容大都符合下面的逻辑:在串行程序中找到计算密集型循环,添加并行共享工作循环构造将其转化为并行应用程序. 但是,实际上,有一类重要的问题并不规则.它并不直接映射到嵌套循环索引上;亦或者即使能够映射,每个循环迭代的工作也是千变万化的.这类问 阅读全文
posted @ 2024-01-24 06:34 Mesonoxian 阅读(204) 评论(0) 推荐(0)
摘要: 第六章 OpenMP数据环境 数据环境 线程是一个执行实体.它执行程序中的语句,并修改存储在内存中的项. 在内存中,一个项驻留在一个指定的地址.我们为这个地址指定一个名称,并称其为变量. OpenMP程序使用并行构造来创建一个线程组.所有在并行构造内执行的代码称为 并行区域(parallel reg 阅读全文
posted @ 2024-01-24 01:44 Mesonoxian 阅读(187) 评论(0) 推荐(0)
摘要: 第五章 并行化循环 共享工作循环构造 循环级并行: 将一定规模的涉及循环的问题转换为SPMD模式的并行. 共享工作循环构造: 在一个线程组中拆分循环迭代的指令. 使用共享工作循环构造的结构: #pragma omp for //for loop 在实际使用过程中,下面的模式是常常可见的:一个用来创建 阅读全文
posted @ 2024-01-18 04:05 Mesonoxian 阅读(483) 评论(0) 推荐(0)
摘要: 第四章 线程与OpenMP编程模型 编译器指令 为了将顺序程序转换为并行程序,修改代码的最小干扰方式是通过编译器指令. 在C/C++中,指令通过编译器表示 #pragma omp parallel[clause[[,]clause]...] #pragma omp parallel private( 阅读全文
posted @ 2024-01-16 22:55 Mesonoxian 阅读(295) 评论(0) 推荐(0)
摘要: 第三章 什么是OpenMP OpenMP是一个用于编写并行程序的应用编程接口.虽然它一开始专注于SMP计算机的多线程程序,但是经过多年的发展,它已经可以应对NUMA系统和GPU等外设. 构成OepnMP的核心编译指令,运行时库函数和字句: OpenMP编译指令,函数或子句 概念 #pragma om 阅读全文
posted @ 2024-01-14 11:38 Mesonoxian 阅读(147) 评论(0) 推荐(0)
摘要: 第二章 性能语言 性能分析 编写并行程序的原因只有两个: 用较少的时间解决一个固定大小的问题,或者 用合理的时间解决一个较大的问题. 无论上述哪种情况都是为了提高性能.OpenMP是一种用于编写并行程序设计的编程语言.在某种层面上,它总是要回到性能上. 性能的原始评判标准是以时间为基础的.但即使是时 阅读全文
posted @ 2024-01-14 11:11 Mesonoxian 阅读(113) 评论(0) 推荐(0)
摘要: 第一章 并行计算 并发性 并发性(concurrency): 如果来自任何一个流的单个指令与来自其他流的指令相比是无序的,则这两个或多个指令流就被称为是并发的. 为了进行OpenMP开发,记得去 属性->C/C++->语言->OpenMP支持 中,选择 是(/openmp) 并行程序实验(第一个并行 阅读全文
posted @ 2024-01-14 01:19 Mesonoxian 阅读(146) 评论(0) 推荐(0)
摘要: 第八章 熟悉类与对象 声明:由于本人专门有关于OOP语义学的系列博客,因而在此处仅做简要介绍 对象的生命周期: 创建,销毁,赋值 默认构造函数 默认构造函数:没有参数的构造函数 如果没有指定任何构造函数,编译器将自动生成午餐构造函数.然而,如果声明了任何构造函数,编译器就不会再自动生成默认构造函数. 阅读全文
posted @ 2024-01-11 20:56 Mesonoxian 阅读(45) 评论(0) 推荐(0)