01 2024 档案

摘要:第二章 管理线程 启动线程 线程通过构造 std::thread 对象开始的,该对象指定了线程上要运行的任务. 通过构造std::thread启动一个线程: void do_some_work(); std::thread my_thread(do_some_work); 与许多C++标准库像是,s 阅读全文
posted @ 2024-01-29 05:50 Mesonoxian 阅读(22) 评论(2) 推荐(0) 编辑
摘要:第一章 你好,C++并发世界 C++并发 并发(concurrency): 主要包括 任务切换 与 硬件并发 两类. 并发(concurrency) 实际上与 多线程(multithreading) 存在差异. 并发的种类 任务切换(task switching): 计算机在某一时刻只可以真正执行一 阅读全文
posted @ 2024-01-28 16:33 Mesonoxian 阅读(14) 评论(0) 推荐(0) 编辑
摘要:第一章 认识Qt 新建一个GUI项目 New Project模板:Application(Qt) -> Qt Widgets Application built system:qmake specify basic information:Base class:QWidget 语言:<无> kits 阅读全文
posted @ 2024-01-26 09:59 Mesonoxian 阅读(51) 评论(0) 推荐(0) 编辑
摘要:第十一章 同步与OpenMP内存模型 内存一致性模型 OpenMP线程在共享内存中执行,共享内存是组中所有线程都可以访问的地址空间,其中存储着变量.使共享内存系统高效运行的唯一方法是允许线程保持一个临时的内存视图,该视图驻留在处理器和内存RAM之间的内存结构中. 当线程通过共享内存中的变量进行交互时 阅读全文
posted @ 2024-01-26 08:26 Mesonoxian 阅读(139) 评论(0) 推荐(0) 编辑
摘要:第十章 超越通用核心的多线程 基于通用核心的附加子句 并行构造的附加子句: num_threads(integer-expression) 用于设置线程总数. if(scalar-expression) 用于为并行构造提供条件分支. copyin(list) proc_bind(master|clo 阅读全文
posted @ 2024-01-25 18:31 Mesonoxian 阅读(193) 评论(0) 推荐(0) 编辑
摘要:第九章 通用核心回顾 创建线程组: shared(list) private(list) firstprivate(list) default(none) reduction(operator:list) #pragma omp parallel [clause[,clause]...] { //b 阅读全文
posted @ 2024-01-24 21:36 Mesonoxian 阅读(22) 评论(0) 推荐(0) 编辑
摘要:第八章 OpenMP内存模型 内存模型 并发 是OpenMP的基础.如果两个或多个线程对内存中的相同地址执行混合读写操作,且这些读写操作没有被同步操作排序,则程序存在 数据竞争. 变量 是内存中一个地址的名称,这个内存可能是虚拟内存或物理内存.这意味着一个变量可能是随机存取存储器(RAM)中的一个位 阅读全文
posted @ 2024-01-24 07:29 Mesonoxian 阅读(73) 评论(0) 推荐(0) 编辑
摘要:第七章 OpenMP任务 不规则问题 总结前面的内容,我们所学内容大都符合下面的逻辑:在串行程序中找到计算密集型循环,添加并行共享工作循环构造将其转化为并行应用程序. 但是,实际上,有一类重要的问题并不规则.它并不直接映射到嵌套循环索引上;亦或者即使能够映射,每个循环迭代的工作也是千变万化的.这类问 阅读全文
posted @ 2024-01-24 06:34 Mesonoxian 阅读(135) 评论(0) 推荐(0) 编辑
摘要:第六章 OpenMP数据环境 数据环境 线程是一个执行实体.它执行程序中的语句,并修改存储在内存中的项. 在内存中,一个项驻留在一个指定的地址.我们为这个地址指定一个名称,并称其为变量. OpenMP程序使用并行构造来创建一个线程组.所有在并行构造内执行的代码称为 并行区域(parallel reg 阅读全文
posted @ 2024-01-24 01:44 Mesonoxian 阅读(123) 评论(0) 推荐(0) 编辑
摘要:第五章 并行化循环 共享工作循环构造 循环级并行: 将一定规模的涉及循环的问题转换为SPMD模式的并行. 共享工作循环构造: 在一个线程组中拆分循环迭代的指令. 使用共享工作循环构造的结构: #pragma omp for //for loop 在实际使用过程中,下面的模式是常常可见的:一个用来创建 阅读全文
posted @ 2024-01-18 04:05 Mesonoxian 阅读(296) 评论(0) 推荐(0) 编辑
摘要:第四章 线程与OpenMP编程模型 编译器指令 为了将顺序程序转换为并行程序,修改代码的最小干扰方式是通过编译器指令. 在C/C++中,指令通过编译器表示 #pragma omp parallel[clause[[,]clause]...] #pragma omp parallel private( 阅读全文
posted @ 2024-01-16 22:55 Mesonoxian 阅读(184) 评论(0) 推荐(0) 编辑
摘要:第三章 什么是OpenMP OpenMP是一个用于编写并行程序的应用编程接口.虽然它一开始专注于SMP计算机的多线程程序,但是经过多年的发展,它已经可以应对NUMA系统和GPU等外设. 构成OepnMP的核心编译指令,运行时库函数和字句: OpenMP编译指令,函数或子句 概念 #pragma om 阅读全文
posted @ 2024-01-14 11:38 Mesonoxian 阅读(84) 评论(0) 推荐(0) 编辑
摘要:第二章 性能语言 性能分析 编写并行程序的原因只有两个: 用较少的时间解决一个固定大小的问题,或者 用合理的时间解决一个较大的问题. 无论上述哪种情况都是为了提高性能.OpenMP是一种用于编写并行程序设计的编程语言.在某种层面上,它总是要回到性能上. 性能的原始评判标准是以时间为基础的.但即使是时 阅读全文
posted @ 2024-01-14 11:11 Mesonoxian 阅读(54) 评论(0) 推荐(0) 编辑
摘要:第一章 并行计算 并发性 并发性(concurrency): 如果来自任何一个流的单个指令与来自其他流的指令相比是无序的,则这两个或多个指令流就被称为是并发的. 为了进行OpenMP开发,记得去 属性->C/C++->语言->OpenMP支持 中,选择 是(/openmp) 并行程序实验(第一个并行 阅读全文
posted @ 2024-01-14 01:19 Mesonoxian 阅读(95) 评论(0) 推荐(0) 编辑
摘要:第八章 熟悉类与对象 声明:由于本人专门有关于OOP语义学的系列博客,因而在此处仅做简要介绍 对象的生命周期: 创建,销毁,赋值 默认构造函数 默认构造函数:没有参数的构造函数 如果没有指定任何构造函数,编译器将自动生成午餐构造函数.然而,如果声明了任何构造函数,编译器就不会再自动生成默认构造函数. 阅读全文
posted @ 2024-01-11 20:56 Mesonoxian 阅读(17) 评论(0) 推荐(0) 编辑
摘要:第一章 关于对象(Object Lessons) struct与class 在C语言中,"数据"与"处理数据的操作(函数)"是分开声明的.语言本身没有支持"数据和函数"之间的关联性.我们把这种程序方法称为"程序性的(procedural)." 举个例子: 如果我们声明一个struct Point3d 阅读全文
posted @ 2024-01-11 14:31 Mesonoxian 阅读(34) 评论(0) 推荐(0) 编辑
摘要:第七章 内存管理 C++内存机制 C++内存重要两类区域:栈区,自由存储区 一般而言,直接通过变量声明方式声明的变量内存都会在栈区中. 例如: unsigned int arr[20]; int num; char word; std::string str; std::vector<int>wei 阅读全文
posted @ 2024-01-10 23:01 Mesonoxian 阅读(120) 评论(0) 推荐(0) 编辑
摘要:第六章 设计可重用代码 重用哲学 编写一次,经常使用 不惜一切代价避免代码重复 DRY(Don't Repeat Yourself) (不要重写自己写过的代码) 代码不大可能只在一个程序中使用 (因而应该正确设计好接口与结构) 团队中其他程序员必须也能使用你的代码 "客户"一般指使用接口的程序员," 阅读全文
posted @ 2024-01-05 15:55 Mesonoxian 阅读(31) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示