- 博客(58)
- 资源 (1)
- 收藏
- 关注
原创 使用omp和mpi并行技术实现蒙特卡罗算法实验 (MonteCarlo)
parallel for:parallel和for指令的结合,也是用在for循环语句之前,表示for循环体的代码将被多个线程并行执行,它同时具有并行域的产生和任务分担两个功能;lastprivate:是用来指定将线程中的一个或多个私有变量的值在并行处理结束后复制到主线程中的同名变量中,负责拷贝的线程是for或sections任务分担中的最后一个线程;firstprivate:指定一个或多个变量在每个线程都有它自己的私有副本,并且私有变量要在进入并行域或任务分担域时,继承主线程中的同名变量的值作为初值;
2023-06-19 09:39:12 1126
原创 使用omp并行技术实现矩阵乘法
parallel for:parallel和for指令的结合,也是用在for循环语句之前,表示for循环体的代码将被多个线程并行执行,它同时具有并行域的产生和任务分担两个功能;lastprivate:是用来指定将线程中的一个或多个私有变量的值在并行处理结束后复制到主线程中的同名变量中,负责拷贝的线程是for或sections任务分担中的最后一个线程;firstprivate:指定一个或多个变量在每个线程都有它自己的私有副本,并且私有变量要在进入并行域或任务分担域时,继承主线程中的同名变量的值作为初值;
2023-06-19 09:33:14 659
原创 mpi实现矩阵乘法,卷积,池化(gemm,covn,pooling)
【代码】mpi实现矩阵乘法,卷积,池化(gemm,covn,pooling)
2023-06-19 09:26:37 947
原创 使用mpi并行技术实现wordcount算法
程序将单词统计结果按单词字典序输出到屏幕上,每行输出一个单词及其出现次数,单词和其出现次数间由一个空格分隔,出现次数后无空格,直接为回车。编写程序统计一个英文文本文件中每个单词的出现次数(词频统计),并将统计结果按单词字典序输出到屏幕上。注:在此单词为仅由字母组成的字符序列。包含大写字母的单词应将大写字母转换为小写字母后统计。编译:mpicxx ./filename.cpp -o ./filename。运行:mpirun -n 2 ./filename。输出单词及其出现次数。
2023-06-19 09:11:28 586
原创 使用omp技术实现wordcount算法
parallel for:parallel和for指令的结合,也是用在for循环语句之前,表示for循环体的代码将被多个线程并行执行,它同时具有并行域的产生和任务分担两个功能;lastprivate:是用来指定将线程中的一个或多个私有变量的值在并行处理结束后复制到主线程中的同名变量中,负责拷贝的线程是for或sections任务分担中的最后一个线程;firstprivate:指定一个或多个变量在每个线程都有它自己的私有副本,并且私有变量要在进入并行域或任务分担域时,继承主线程中的同名变量的值作为初值;
2023-06-19 09:03:59 513
原创 使用mpi并行技术实现快排Qsort()
快速排序可以说是最为常见的排序算法,冒泡排序时间复杂度达到了O(N2),而桶排序容易造成浪费空间。快排(Quicksort)就成为了不错的选择。2、优点:平均时间复杂度O(NlogN),相比冒泡排序每次交换可以是跳跃式的。编译:mpicxx ./filename.cpp -o ./filename。1、原理:快排需要找一个数作为基准数,用来参照。(可取第一个数为参照)基准数在中间某位置,两端有指针,找到相应数后,交换。注意:若令第一个数为基准数,先从右往左找,再从左往右找。
2023-06-19 08:54:22 1198
原创 使用omp并行技术实现快排加速
快速排序可以说是最为常见的排序算法,冒泡排序时间复杂度达到了O(N2),而桶排序容易造成浪费空间。#pragma omp section //该区域对前部分数据进行排序。编译:g++ ./filename.cpp -o ./filename -fopenmp。1、原理:快排需要找一个数作为基准数,用来参照。基准数在中间某位置,两端有指针,找到相应数后,交换。注意:若令第一个数为基准数,先从右往左找,再从左往右找。运行:./filename n n为所设置的线程数。
2023-06-19 08:49:46 1094 1
原创 使用omp并行技术加速pagerank算法
使用:#pragma omp parallel shared(outLink,inLink,numOutLinks,M,r,r2,numLinks,nthreads,chunk,maxNode) private(tid,i,j,k)
2023-06-19 08:36:07 193
原创 使用omp并行技术加速bfs广度优先算法
从初始状态S开始,利用规则,生成所有可能的状态。构成树的下一层节点,检查是否出现目标状态G,若未出现,就对该层所有状态节点,分别顺序利用规则。生成再下一层的所有状态节点,对这一层的所有状态节点检查是否出现G,若未出现,继续按上面思想生成再下一层的所有状态节点,这样一层一层往下展开。(5)把node的所有后继节点放在queue表的末端。(6)若后继节点中某一个是目标节点,则找到一个解,成功退出。(4)扩展node节点。若没有后继即叶节点),则转向(2)循环。(2)如果queue是空表,则失败退出,否则继续。
2023-06-19 08:26:12 486
原创 BFS广度优先(层次遍历)
从初始状态S开始,利用规则,生成所有可能的状态。构成树的下一层节点,检查是否出现目标状态G,若未出现,就对该层所有状态节点,分别顺序利用规则。生成再下一层的所有状态节点,对这一层的所有状态节点检查是否出现G,若未出现,继续按上面思想生成再下一层的所有状态节点,这样一层一层往下展开。(5)把node的所有后继节点放在queue表的末端。(6)若后继节点中某一个是目标节点,则找到一个解,成功退出。(4)扩展node节点。若没有后继即叶节点),则转向(2)循环。(2)如果queue是空表,则失败退出,否则继续。
2023-06-19 08:20:43 143
原创 使用omp并行技术加速最短路径算法-迪杰斯特拉(Dijkstra)算法(记录最短路径和距离)
令集合S={u},对于集合V-S中的所有顶点x,初始化dist[i]=map[u][i],如果源点u到顶点i有边相连,初始化p[i]=u(i的前驱是u),否则p[i]=-1。如果dist[j]>dist[t]+map[t][j],则dist[j]=dist[t]+map[t][j],记录顶点j的前驱为t,p[j]=t,转(3)。设置地图的带权邻接矩阵为map[][],即如果从源点u到顶点i有边,就令map[u][i]=的权值,否则map[u][i]=∞;将顶点t加入集合S,同时更新V-S。
2023-06-17 18:07:10 1448
原创 最短路径算法-迪杰斯特拉(Dijkstra)算法(记录最短路径和距离)
令集合S={u},对于集合V-S中的所有顶点x,初始化dist[i]=map[u][i],如果源点u到顶点i有边相连,初始化p[i]=u(i的前驱是u),否则p[i]=-1。如果dist[j]>dist[t]+map[t][j],则dist[j]=dist[t]+map[t][j],记录顶点j的前驱为t,p[j]=t,转(3)。设置地图的带权邻接矩阵为map[][],即如果从源点u到顶点i有边,就令map[u][i]=的权值,否则map[u][i]=∞;将顶点t加入集合S,同时更新V-S。
2023-06-17 17:59:55 779
原创 卷积神经网络CNN的简介和简单实现python
卷积操作是卷积神经网络的核心,其作用是将输入数据与卷积核进行卷积运算,得到特征图。池化操作是卷积神经网络的另一个重要组成部分,其作用是减少特征图的维度,从而降低计算复杂度。前向传播是指将输入数据通过网络得到输出结果的过程,反向传播是指根据损失函数计算梯度并更新网络参数的过程。卷积神经网络是一种前馈神经网络,其基本原理是通过卷积操作提取输入数据的特征,然后通过池化操作减少特征的维度,最后通过全连接层进行分类或回归。卷积神经网络的训练方法通常采用反向传播算法,其基本原理是通过计算损失函数的梯度来更新网络参数。
2023-06-06 18:21:27 1239
原创 KNN算法简介以及KNN的简单实现和应用
KNN算法的核心思想是通过计算样本之间的距离来确定新样本的类别或数值。KNN(K-Nearest Neighbors)是一种基本的分类和回归算法,它的基本思想是通过计算待分类样本与训练集中各个样本之间的距离,选取距离最近的K个样本,根据这K个样本的类别进行投票,将待分类样本归为票数最多的类别。KNN算法的全称是K-Nearest Neighbor算法,它的基本思想是通过计算新样本与训练集中所有样本的距离,找到距离最近的K个样本,然后根据这K个样本的类别或数值来确定新样本的类别或数值。二、KNN算法的应用。
2023-06-02 13:54:33 4762 1
原创 Mpi并行计算技术的简介
Master进程可以通过MPI_Bcast函数将任务分发给所有的Slave进程,Slave进程可以通过MPI_Recv函数接收任务,并通过MPI_Send函数将计算结果发送给Master进程。每个进程都有一个唯一的标识符,称为进程号(rank),可以通过MPI_COMM_WORLD中的MPI_Comm_rank函数获取。MPI中的通信域是指一组进程的集合,这些进程可以相互通信和协作。进程号是一个非负整数,MPI_COMM_WORLD中的第一个进程的进程号为0,第二个进程的进程号为1,以此类推。
2023-05-28 14:12:37 1959
原创 OpenMp并行计算技术的简介
OpenMP是一种基于共享内存的并行编程技术,它可以在多核处理器上实现并行计算。OpenMP使用指令来告诉编译器如何将代码分解为任务,并将这些任务分配给多个处理器核心。总的来说,OpenMP是一种非常有用的并行编程技术,可以帮助开发人员利用多核处理器的性能优势。通过使用OpenMP指令,开发人员可以轻松地将代码并行化,并利用多核处理器的性能优势。在使用OpenMP时,需要注意硬件和代码的特性,以确保获得最佳的性能提升。开头,这告诉编译器这是一个特殊的指令,需要特殊处理。,可以用来并行化不同类型的代码块。
2023-05-28 14:05:29 1031
原创 矩阵乘法(暴力,并行加速,stressen,并行加速stressen)
openMP 矩阵乘法 stressen矩阵乘法 openMP加速stressen矩阵乘法 openMP加速普通矩阵乘法
2022-10-21 16:50:12 2447 1
原创 决策树算法原理(python)
实验环境python 3.6.5 jupyter 决策树是什么 决策论中,决策树(Decision tree)由一个决策图和可能的结果(包括资源成本和风险)组成, 用来创建到达目标的规划。决策树建立并用来辅助决策,是一种特殊的树结构。决策树是一个利用像树一样的图形或决策模型的决策支持工具,包括随机事件结果,资源代价和实用性。它是一个算法显示的方法。决策树经常在运筹学中使用,特别是在决策分析中,它帮助确定一个能最可能达到目标的策略。如果在实际中,决策不得不在没有完备知识的情况下被在线采用,一个
2022-10-21 16:30:18 853
原创 Gauss-Seidel迭代法求n阶线性方程组(python)
用编程语言实现用高斯(Gauss)消元法求n阶线性方程组的解、用列主元高斯(Gauss)消元法求n阶线性方程组的解、用库郎(Courant)列主直接分解法求n阶线性方程组的解的程序。通过设计、编制、调试2~3个求n阶线性方程组数值解的程序,加深对其数值计算方法及有关的基础理论知识的理解。可以看出同样是迭代20次,高斯——赛德尔迭代法比Jacobi迭代法更快的收敛于精确解。用高斯(Gauss)消元法求n阶线性方程组的解。5、按以上4点要求编写上机实验报告。4、源程序清单及运行结果。
2022-10-10 20:08:00 1580
原创 Jacobi迭代法求n阶线性方程组(python)
用编程语言实现用高斯(Gauss)消元法求n阶线性方程组的解、用列主元高斯(Gauss)消元法求n阶线性方程组的解、用库郎(Courant)列主直接分解法求n阶线性方程组的解的程序。通过设计、编制、调试2~3个求n阶线性方程组数值解的程序,加深对其数值计算方法及有关的基础理论知识的理解。用高斯(Gauss)消元法求n阶线性方程组的解。5、按以上4点要求编写上机实验报告。迭代20次后结果非常接近精确解。4、源程序清单及运行结果。
2022-10-10 20:05:09 2421
原创 列主元LU直接分解法求n阶线性方程组的解(python)
用编程语言实现用高斯(Gauss)消元法求n阶线性方程组的解、用列主元高斯(Gauss)消元法求n阶线性方程组的解、用库郎(Courant)列主直接分解法求n阶线性方程组的解的程序。通过设计、编制、调试2~3个求n阶线性方程组数值解的程序,加深对其数值计算方法及有关的基础理论知识的理解。用高斯(Gauss)消元法求n阶线性方程组的解。5、按以上4点要求编写上机实验报告。4、源程序清单及运行结果。
2022-10-10 20:00:37 1567
原创 用列主元高斯(Gauss)消元法求n阶线性方程组的解(python)
用编程语言实现用高斯(Gauss)消元法求n阶线性方程组的解、用列主元高斯(Gauss)消元法求n阶线性方程组的解、用库郎(Courant)列主直接分解法求n阶线性方程组的解的程序。通过设计、编制、调试2~3个求n阶线性方程组数值解的程序,加深对其数值计算方法及有关的基础理论知识的理解。用高斯(Gauss)消元法求n阶线性方程组的解。5、按以上4点要求编写上机实验报告。4、源程序清单及运行结果。
2022-10-10 19:56:24 1754
原创 用高斯(Gauss)消元法求n阶线性方程组的解(python)
用编程语言实现用高斯(Gauss)消元法求n阶线性方程组的解、用列主元高斯(Gauss)消元法求n阶线性方程组的解、用库郎(Courant)列主直接分解法求n阶线性方程组的解的程序。通过设计、编制、调试2~3个求n阶线性方程组数值解的程序,加深对其数值计算方法及有关的基础理论知识的理解。Guass消去法结果。
2022-10-10 19:52:31 2452
原创 复化梯形积分和龙格积分(python)
通过设计、编制、调试2~3个数值积分与微分算法的程序,加深对其数值计算方法及有关的基础理论知识的理解。用编程语言实现复化梯形积分、Romberg积分的程序。积分区间为0到1 结果为1.718281828459045。1.718281828459045 # 真值。R为: 1.7182818287945303。Romberg积分算法求积分。的自动控制误差算法求积分。
2022-10-10 19:47:03 1246
原创 牛顿(Newton)插值(python)
通过设计、编制、调试2~3个多项式插值、拟合曲线的程序,加深对其数值计算方法及有关的基础理论知识的理解。用编程语言实现拉格朗日(Lagrange)插值多项式、牛顿(Newton)插值、用线性函数。
2022-10-10 19:26:50 4192 1
原创 K-均值聚类算法和二分K-均值算法
环境:jupyterpython3.6.5数据集:链接:https://pan.baidu.com/s/1pdRvuADFkt-7a9deV45-Sw提取码:k3v2准备工作点击屏幕右上方的下载实验数据模块,选择下载kmeans_algo.tgz到指定目录下,然后再依次选择点击上方的File->Open->Upload,上传刚才下载的数据集压缩包,再使用如下命令解压:!tar -zxvf kmeans_algo.tgz结果如下:kmeans_alg.
2022-05-28 22:09:02 1169
原创 Apriori算法原理
实验环境python 3.6.5 jupyter 【原理】Apriori算法原理 Apriori算法是一种用于关联规则挖掘的代表性算法。从本节开始,我们已经进入了机器学习和数据挖掘相交叉的地带。 数据挖掘与机器学习 数据挖掘和机器学习的关系就好比,机器学习是数据挖掘的弹药库中一类相当庞大的弹药集。既然是一类弹药,其实也就是在说数据挖掘中肯定还有其他非机器学习范畴的技术存在。Apriori算法就属于一种非机器学习的数据挖掘技术。 在非机器学习的数据挖掘技术中,我们并不会去建立
2022-05-28 21:51:20 2223
原创 PCA算法原理及python实现
【原理】PCA算法原理1.PCA算法PCA(principal Component Analysis),即主成分分析方法,是一种使用最广泛的数据压缩算法。在PCA中,数据从原来的坐标系转换到新的坐标系,由数据本身决定。转换坐标系时,以方差最大的方向作为坐标轴方向,因为数据的最大方差给出了数据的最重要的信息。第一个新坐标轴选择的是原始数据中方差最大的方法,第二个新坐标轴选择的是与第一个新坐标轴正交且方差次大的方向。重复该过程,重复次数为原始数据的特征维数。通过这种方式获得的新的坐标系,我们发现..
2022-05-08 12:42:37 8372 2
原创 不使用strcat()的字符串连接
【问题描述】在不使用strcat()的前提下,实现两个字符串的连接。【输入形式】以'#'为结束符的两行字符串【输出形式】将第一行字符串连接到第二行字符串,然后打印输出【样例输入】abc#def#【样例输出】defabc【样例说明】【评分标准】不能使用strcat(),否则不能得分#include<stdio.h>#include<string.h>#include<stdlib.h>int main(){
2022-04-19 19:16:05 3611
原创 在命令串口无法打开MySQL遇到Can‘t connect to MySQL server on localhost (10061)问题的解决方法
1.在你没有动过MYSQL的情况下出现此问题,多数是因为你还没有启动MYSQL服务。解决办法(打开任务管理器,以管理员身份运行命令窗口,不以管理员身份运行是不行的没有权限)
2022-04-17 15:29:10 798
原创 C++实用函数(用作学习的备忘录)
该功能isalnum()用于检查字符是否为字母数字。它返回非零值,如果字符是字母数字,则表示字母或数字,否则返回零。在“ ctype.h”头文件中声明。这是isalnum()C语言的语法,intisalnum(intcharacter);...
2022-04-07 19:23:52 1654
原创 创建并操作循环链表
【问题描述】输入n个整数,创建一个双向循环链表进行存储。这些整数从第二个开始,递增有序(设a2<a3<...<an) (ai为第i个整数)。试编写程序,创建双向循环链表,依次将输入的整数存储在该链表的各节点中。然后,将第一个结点删除并插入链表中的适当位置,使整个链表递增有序。【输入形式】先输入整数的个数,再输入整数列。【输出形式】以整数递增的顺序,依次输出双向循环链表各个节点存储的整数。【样例输入】5 3 1 2 4 5【样例输出】1 2 3 4 5
2022-04-07 17:14:13 1505
原创 判断一个字符串是否是回文
【问题描述】编写一个程序,判断一个字符串是否为"回文"(顺读和倒读都一样的字符串称为"回文")。【输入形式】长度小于100的任意字符串【输出形式】如果输入字符串是回文,则输出"yes";如果字符串不是回文,则输出"no"【样例1输入】abcdcba【样例1输出】yes【样例输入2】abcdfsfdsg【样例2输出】no【样例说明】样例1中,字符串abcdcba是回文,因此输出"yes";样例2中,abcdfsfdsg不是回文,因此输出"no"。
2022-04-06 20:51:30 19486 12
原创 折半查找法的使用
【问题描述】给定一个按值有序(升序)的N元整数数组A,采用折半查找法查找关键值k的位置,并给出查找的过程【输入形式】第一行:N第二行:A[0], A[1], ... , A[N-1]第三行:k【输出形式】第一行:k的位置(索引),若不存在则输出'no'第二行:查找的过程,每一次折半的中间(mid)位置的值,以逗号分隔。例如,1 2 3 4 5的中间位置为3,1 2 3 4的中间位置为2。【样例输入1】112,5,8,11,15,16,22,24,27,35,5022
2022-04-06 20:48:57 1049
原创 堆排序(C语言)
【问题描述】对一含有n个整数的数组,使用堆排序将其由小到大排序。【输入形式】第一行为元素个数n,第二行为n个整数(以空格隔开)。【输出形式】输出n个整数(以空格隔开)【样例输入】6432561229【样例输出】129224356【样例说明】【评分标准】此题目将人工检查,必须使用堆排序,其它排序方法不得分。题解:#include<stdio.h>void HeadAdjust(int A[], int k, int l...
2022-04-06 20:46:43 716
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人