- 博客(8)
- 收藏
- 关注
原创 利用 SYCL 实现高效的矩阵乘法
本文将介绍如何使用 SYCL,一种基于 C++ 的单源异构编程模型,来实现矩阵乘法。我们将从读取矩阵数据开始,接着进行矩阵转置,然后执行矩阵乘法,并最终测量整个操作的时长。然后,我们定义三个缓冲区(Buffer),分别用于存储两个输入矩阵和一个输出矩阵。这里的并行计算模型允许我们同时处理输出矩阵的每个元素,大幅提高计算效率。由于矩阵乘法的特性,将第二个矩阵(我们称之为矩阵 B)转置可以提高最终乘法操作的效率。首先,我们需要从文件中读取两个矩阵的数据。函数实现,该函数将矩阵 B 的行列互换,以便于后续计算。
2023-12-03 16:53:58
705
1
原创 算法笔记:Codeup_最短路径_问题 C: 最短路径
题目描述N个城市,标号从0到N-1,M条道路,第K条道路(K从0开始)的长度为2^K,求编号为0的城市到其他城市的最短距离。输入第一行两个正整数N(2<=N<=100)M(M<=500),表示有N个城市,M条道路,接下来M行两个整数,表示相连的两个城市的编号。输出N-1行,表示0号城市到其他城市的最短路,如果无法到达,输出-1,数值太大的以MOD 100000 的结果输出。思路:难点在于最多会有500条道路,用int储存变量最多也就表示到2的31次方也就是第31条
2022-03-20 22:36:51
566
原创 【codeup】问题 D: 【递归入门】n皇后 问题(原始的8皇后问题)
【codeup】问题 D: 【递归入门】n皇后 问题(原始的8皇后问题)
2022-03-11 23:13:42
147
原创 复习5 平衡二叉树(AVL树)
平衡因子:左子树与右子树高度之差。平衡因子的绝对值不超过1的二叉查找树。1.树结构struct node{ int v , height; node *lChild , *rChild;};2.新建结点node* newNode(int v){ node* Node = new node; Node->v = v; Node->height = 1; Node->lChild = Node->rChild =
2021-12-24 16:16:39
318
原创 复习4 二叉查找树(BST)
左子树右子树都是二叉查找树,左子树数据域均小于根节点,右子树数据域均大于根节点。1.查找操作void Search(node* root , int x){ if(root == NULL) { printf("Search Failed!\n"); return; } if(root->data == x){ printf("%d\n",root->data); }else if(root->dat
2021-12-24 15:11:30
433
原创 复习3 二叉树
1.二叉树结构struct node{ typename data; node* lChild; node* rChild;}2.新建结点node* newNode(int v){ node* Node = new node; Node->data = v; Node->lChild = Node->rChild = NULL; return Node;}3.二叉树查找修改void Search(node
2021-12-24 14:32:44
65
原创 复习2 快速幂
typedef long long LL ;LL binaryPow(int num , int b , int mod){ if(b == 0) return 1; else if(b%2 == 1){ return num * binaryPow(num ,b-1 ,mod) % mod; }else{ LL mul = binaryPow(num , b/2 , mod); return mul*mul % mod; .
2021-12-24 11:26:45
316
原创 复习_1 排序
1.选择排序 假设数组A[ ],大小为n,假设前0 - (i-1)位已有序,从i - n找出最小值与i位交换;void selectSort(){ for(int i = 0;i <= n;i++){ int k = i; for(int j = i; j <= n; j++){ if(A[j] < A[k]){ k = j;//找到下标i到n的最小值...
2021-12-24 11:15:22
165
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人