摘要: 第四章 线程与OpenMP编程模型 编译器指令 为了将顺序程序转换为并行程序,修改代码的最小干扰方式是通过编译器指令. 在C/C++中,指令通过编译器表示 #pragma omp parallel[clause[[,]clause]...] #pragma omp parallel private( 阅读全文
posted @ 2024-01-16 22:55 Mesonoxian 阅读(38) 评论(0) 推荐(0) 编辑
摘要: 第三章 什么是OpenMP OpenMP是一个用于编写并行程序的应用编程接口.虽然它一开始专注于SMP计算机的多线程程序,但是经过多年的发展,它已经可以应对NUMA系统和GPU等外设. 构成OepnMP的核心编译指令,运行时库函数和字句: OpenMP编译指令,函数或子句 概念 #pragma om 阅读全文
posted @ 2024-01-14 11:38 Mesonoxian 阅读(12) 评论(0) 推荐(0) 编辑
摘要: 第二章 性能语言 性能分析 编写并行程序的原因只有两个: 用较少的时间解决一个固定大小的问题,或者 用合理的时间解决一个较大的问题. 无论上述哪种情况都是为了提高性能.OpenMP是一种用于编写并行程序设计的编程语言.在某种层面上,它总是要回到性能上. 性能的原始评判标准是以时间为基础的.但即使是时 阅读全文
posted @ 2024-01-14 11:11 Mesonoxian 阅读(10) 评论(0) 推荐(0) 编辑
摘要: 第一章 并行计算 并发性 并发性(concurrency): 如果来自任何一个流的单个指令与来自其他流的指令相比是无序的,则这两个或多个指令流就被称为是并发的. 为了进行OpenMP开发,记得去 属性->C/C++->语言->OpenMP支持 中,选择 是(/openmp) 并行程序实验(第一个并行 阅读全文
posted @ 2024-01-14 01:19 Mesonoxian 阅读(7) 评论(0) 推荐(0) 编辑
摘要: 第八章 熟悉类与对象 声明:由于本人专门有关于OOP语义学的系列博客,因而在此处仅做简要介绍 对象的生命周期: 创建,销毁,赋值 默认构造函数 默认构造函数:没有参数的构造函数 如果没有指定任何构造函数,编译器将自动生成午餐构造函数.然而,如果声明了任何构造函数,编译器就不会再自动生成默认构造函数. 阅读全文
posted @ 2024-01-11 20:56 Mesonoxian 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 第一章 关于对象(Object Lessons) struct与class 在C语言中,"数据"与"处理数据的操作(函数)"是分开声明的.语言本身没有支持"数据和函数"之间的关联性.我们把这种程序方法称为"程序性的(procedural)." 举个例子: 如果我们声明一个struct Point3d 阅读全文
posted @ 2024-01-11 14:31 Mesonoxian 阅读(24) 评论(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 阅读(32) 评论(0) 推荐(0) 编辑
摘要: 第六章 设计可重用代码 重用哲学 编写一次,经常使用 不惜一切代价避免代码重复 DRY(Don't Repeat Yourself) (不要重写自己写过的代码) 代码不大可能只在一个程序中使用 (因而应该正确设计好接口与结构) 团队中其他程序员必须也能使用你的代码 "客户"一般指使用接口的程序员," 阅读全文
posted @ 2024-01-05 15:55 Mesonoxian 阅读(7) 评论(0) 推荐(0) 编辑
摘要: A+B Problem(高精) 题目描述 高精度加法,相当于 a+b problem,不用考虑负数。 输入格式 分两行输入。$a,b \leq 10^{500}$。 输出格式 输出只有一行,代表 $a+b$ 的值。 样例 #1 样例输入 #1 1 1 样例输出 #1 2 样例 #2 样例输入 #2 阅读全文
posted @ 2023-12-08 18:49 Mesonoxian 阅读(72) 评论(0) 推荐(0) 编辑
摘要: 特性补充 模块(Module) 模块 模块的优点 C++20 引入了用于组件化C++程序的一种新式方法:模块 模块由编译为二进制文件的源代码文件组成.每次导入模块时,编译器都会重复使用二进制文件,从而节省时间. 模块没有头文件存在的脆弱问题. 导入模块不会更改模块的语义,也不会更改任何其他导入的模块 阅读全文
posted @ 2023-12-01 01:22 Mesonoxian 阅读(255) 评论(0) 推荐(0) 编辑