- 博客(24)
- 收藏
- 关注
原创 OpenMPI(二)消息的分发和收集
在中提到的点对点通信在数据操作量较大的场景下是不够高效的。为了减少通信时间,我们将采用Collective communication的通信方式,这种通信方式类似于群发消息,只需要发送一次就可以让所有进程收到信息。以下图片可以让大家更直观的理解这种通信方式的优点所在:如何进行Collective communication呢,以一个简单的计数场景为例。现有一个数组,通过并行运算统计数组中小于10的元素有几个:1.进程0告诉其他所有进程他们需要分配的内存空间是多少。2.进程0将数据分发给其他进程。
2024-03-05 18:19:03
988
原创 OpenMPI(一) 消息的发布和接收
而在并行运算中,分布式内存(distributed memory parallelism)也很常见,在这种情况下,每个操作单元独立的拥有一块内存,数据依赖关系将通过直接的交流解决,所以将不存在data race的问题。由于这是分布式的内存系统,其他进程无法直接访问到进程0所在的内存,也就无法直接读取到矩阵a的值。在这段代码中,localSize = 矩阵a的大小 / 总进程数,这样就可以把矩阵a平均分配给不同的进程进行计算。其他进程在接受到进程0发送的消息以后,会纷纷在自己的内存中进行矩阵加法。
2024-03-05 17:04:58
376
原创 OpenMP(三)#pragma omp critical
由于函数的前三步不存在多线程data race问题,每个线程都需要独立创造空间存放数据和指针,所以不需要将其纳入cirtical region。但这种方法是低效的,因为在代码执行过程中,只有一个线程可以抵达critical region,这本质上和按顺序执行没有区别。如果把*head指针或*tail变成private的,是不可行的,因为这两个指针是整个链表共享的,不是每个线程私有的。线程A再把值赋给head,覆盖掉了线程B的操作,最终导致2这个值丢失。改法2比改法1效率有所提升,但也称不上高效。
2024-03-03 16:13:53
553
原创 OpenMP(二)并行运算中的数据依赖问题
比如,线程A计算得到temp = 1以后,线程B计算得出temp = 2, 覆盖了A的结果,会导致线程A下的a[i]结果错误。这是一段简单的 数组a的元素 =(数组b的元素+数组c的元素)/ 2 的代码。在并行执行的情况下,可能线程A先执行,更改了数组的元素,导致线程B开始执行以后访问的数组已经是被A更改过的结果了。线程B判断set[1] > set[2],认为应该交换,并率先进行,数组变成 [3,1,2]A在B的基础上进行更改,交换set[0] 和set[1],数组变成 [1,3,2]
2024-03-02 17:17:21
629
1
原创 OpenMP(一) #pragma omp parallel for
因为每个线程都会执行一次内循环,如果线程A首先执行了内循环,改变了变量 i 的值(假如最终值2),那么线程B在开始执行内循环时,i的初始值为为2,它就会直接跳过几个像素块,造成问题。那么就是并行执行内循环,每个线程执行setPixelColour (i, j);这样执行的效率可能还不如直接按顺序执行。因为不断地创建和销毁线程需要额外的开销。对于嵌套for循环,#pragma omp parallel for放在内层和外层有什么区别呢?那么把#pragma omp parallel for放在外层循环呢?
2024-03-02 16:24:06
375
原创 部署Llama2的方法(Linux)
Llama2,一款开源大语言模型。Github仓库地址:中文地址:GitHub - FlagAlpha/Llama2-Chinese: Llama中文社区,最好的中文Llama大模型,完全开源可商用Llama中文社区,最好的中文Llama大模型,完全开源可商用. Contribute to FlagAlpha/Llama2-Chinese development by creating an account on GitHub.接下来将分享在Linux系统和Windows系统中部署这款模型的方法。
2023-08-10 16:34:42
2782
1
原创 Vue 组件间数据传输 - 消息的订阅与发布
1. 在这里我们使用pubsub.js包2. 在要进行消息发布与订阅的组件中导入包3. 消息发布方 Student.vue4. 消息订阅方 School.vue
2022-07-02 17:01:09
287
1
原创 Flask02 cookie和session
1. 写代码的时候遇到 url正确但not found的问题解决方法: 更改端口号即可2.app.py
2022-06-27 12:58:52
213
原创 Flask01 使用SQLArchemy,Navicat连接MySql进行相关操作
0. 下载相关依赖包,Navicat,连接Navicat和MySql (这些不赘述了,网上都有教程)一 、 创建数据表1. app.py2. config.py创建成功后表的内容如下:二、增删改查数据1. app.py(进行一些更改,如:表创建完以后就不需要再创建了,对代码进行一些拆分和重构). config.py 配置数据库连接(未改动)3. models.py 存放表模型(比如一对一,一对多模型)4. exts.py 部分代码放入extension以免造成类似死锁的问题..
2022-06-27 11:27:13
534
原创 Python 使用MQTT协议将硬件端数据传输至微信小程序并呈现
最近在做一个系统。大体需求是用运动手环获取用户的心率,体温等数据,然后传输到微信小程序页面上进行呈现。个人负责系统的软件端编写,因为第一次接触MQTT协议,所以来做个简单的记录。1. MQTT客户端安装这里参考了1-4 MQTT服务端连接操作 – 太极创客的教程,我选择了款免费的MQTT客户端软件–MQTTfx。MQTTfx的官网地址是:http://mqttfx.org。安装过程不再赘述。点开mqttfx.exe,进入MQTTfx界面。点击设置按钮。Profile Name随便取。
2022-06-27 11:08:07
1481
1
原创 JavaScript 刷题技巧
Python转JS,记录一些刷Leetcode题常用套路和两种语言的不同用法1. array.push(val)数组尾部增加元素,返回新数组长度2. array.pop()数组尾部删除元素,返回被删除元素3.array.unshift(val)数组头部增加元素,返回新数组长度4.array.shift()数组头部删除元素,返回被删除元素5.Infinity无穷大,用法:如 let nums = [Infinity] 用于比大小6.array.indexOf(val)找到返回下标,找不到返回-17.直接
2022-06-27 10:57:33
708
原创 Win10 安装wsl并将文件位置从C盘迁移至D盘
1. 进入Microsoft Store,搜索Ubuntu。选择你想要的版本,点击获取进行安装。2. 如果途中出现了报错 WslRegisterDistribution failed with error: 0x8007019e,这个问题是因为 windows 还没有启用 windows 子系统功能“控制面板\所有控制面板项\程序和功能”中选择“启用或者关闭Windows功能”,然后重启系统。3. 安装完成后,创建用户名和密码。(注意,如果报错 adduser: Please ent
2022-05-05 17:07:18
19352
9
原创 Ubuntu 安装Cmake
1.安装Cmake1. Cmake与makefile:Cmake好处是 1.可以自动化生成makefile,不需要手动编写。2.跨平台。可生成 native 编译配置文件,在 Linux/Unix 平台,生成 makefile,在 苹果平台,可以生成 xcode,在 Windows 平台,可以生成 MSVC 的工程文件。2. ubuntu 安装cmake:sudo snap install cmake如果跳出问题,让你用classic:那就sudo snap instal
2022-04-16 12:48:03
2746
1
原创 2022前端笔试面试题
1.CSS盒子模型的构成是__,__,__,__.答:margin border padding content2.二叉树的中序遍历顺序是badce,后续遍历顺序是bdeca,问前序遍历的顺序。答:abcde知识点:二叉树前序遍历顺序:当前->左节点->右节点;中序遍历顺序:左节点->当前->右节点;后序遍历顺序:左节点->右节点->当前;3.flex布局的父级元素中有哪些常用属性。答:flex-direction: 设置主轴的
2022-04-07 15:51:24
8265
5
原创 解决方法:安装ubuntu时屏幕过小无法点击安装按钮
最近在vmware上安装ubuntu,结果一打开屏幕太小,无法点击到下一步的安装按钮。解决办法:1.同时按住windows+左键拖动窗口。(部分电脑是alt+F7)2.或者按tab键一步一步往下选择,但可能因为看不见选项会浪费很多时间。成功安装后,安装vmware tools改变屏幕分辨率,让屏幕恢复正常大小。教程网上很多,就不说啦。...
2022-03-23 10:38:46
6423
7
原创 Java 初学者常犯错误
1.字符串常量不能跨行。# 错误代码System.out.println("j" + "andk is:");# 正确代码System.out.println("j" + "and" + "k is:");2.在赋值给变量前,一定要声明变量。 在方法中使用声明的变量前,一定要给变量赋值。3.常量一定要在同一条语句中声明和赋值。4.取余操作符%只有在被除数为负数时,余数才为负数。-7 % 3 = -17 % -3 = 15.增强操作符中不可以有空格。(增强操作符为+
2022-03-13 20:42:01
407
原创 Java 两个看似相等的浮点数结果不等
# 代码double x = 1.0-0.1-0.1-0.1-0.1-0.1System.out.println(x == 0.5);#输出False这里 x 不是精确等于5,而是0.5000000000000001。解决办法:通过测试两个数的差是否小于某个非常小的的值EPSILON来判断。当比较的两个数为double类型。通常设置EPSILON = 10^(-14)来比较。当比较的两个数为float类型。通常设置EPSILON = 10^(-7)来比较。# 代码fina.
2022-03-13 19:41:35
595
原创 Python Counter()一步统计出现次数最多的元素
# 代码from collections import Counternums = [1,2,2,2]counts = Counter(nums)print(counts)#输出Counter({2: 3, 1: 1})# 代码print(max(counts.keys(), key=counts.get))#输出2# 代码print(counts.most_common(1))#输出[(2, 3)]解释:1.most_common(n)这个方法返回.
2022-03-09 09:32:30
6131
1
原创 Java 三种输出 print()println()printf()
1. System.out.print(a);# 代码System.out.print(a);System.out.print(a);# 输出aa特点:不换行打印,可以输出任何类型的expression.2.System.out.println()#代码 System.out.println();System.out.print(a);# 输出(一个空行)a#代码 System.out.println(a);System.out.println(a);.
2022-03-08 21:48:30
6481
原创 Python 报错:‘str‘ object does not support item assignment 将string转换为list可解决
# string 转 list 代码s = "23"s = list(s)print(s)# 输出['2', '3']由于python 中 string不支持使用访问index的方式改变值,所以可以先将其转换为list,在进行值的修改# 错误代码s = "23"s[1] = "a"print(s[1])#报错信息'str' object does not support item assignment# 转list的解决方法s = "23"s = list(s.
2022-03-07 10:29:49
2235
2
原创 Python 使用join()将list内的字符连接为string
# 代码s = ['d', 'c', '-', 'b', 'a']s = ''.join(str(e) for e in s) print(s)#输出dc-ba#添加连接符s = ['d', 'c', 'b', 'a']s = '-'.join(str(e) for e in s) print(s)#输出d-c-b-ajoin()方法用于返回一个被子字符串连接的字符串......
2022-03-07 10:19:51
1475
原创 python 使用sort()方法报错,返回None
# 错误代码(1)intervals = [[1,3],[2,6],[8,10],[0,18]]intervals = intervals.sort()print(intervals)#返回结果:None# 错误代码(1)intervals = [[1,3],[2,6],[8,10],[0,18]]print(intervals.sort())#返回结果:None#正确用法intervals = [[1,3],[2,6],[8,10],[0,18]]interv.
2022-03-07 10:08:03
3540
原创 Python list形式输出字母“A“-“Z“
# 代码部分[chr(i) for i in range(65,91)]# 返回结果['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z']ASCII码对照表输出“a”-"z"同理,参考ASCII码表即可。
2022-03-07 09:55:30
2293
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人