目录
示例
输出
首页 后端开发 C++ 使用pthread在C/C++中实现矩阵的加法和减法

使用pthread在C/C++中实现矩阵的加法和减法

Aug 28, 2023 am 09:05 AM
矩阵 pthread 加法 减法

使用pthread在C/C++中实现矩阵的加法和减法

这里我们将看到如何使用多线程环境执行矩阵加法和减法。 pthread用于在C或C++中同时执行多个线程。

有两个矩阵A和B。每个矩阵的阶数为(m x n)。每个线程将获取每一行,并执行加法或减法。因此,对于 m 行,有 m 个不同的线程。

示例

#include<iostream>
#include <pthread.h>
#include <cstdlib>
#include <cstdint>
#define CORE 3
#define MAX 3
using namespace std;
int AMat[MAX][MAX] = {{10, 20, 30},
   {40, 50, 60},
   {70, 80, 50}
};
int BMat[MAX][MAX] = {{80, 60, 20},
   {30, 20, 15},
   {10, 14, 35}
};
pthread_t thread[CORE * 2];
int add[MAX][MAX], sub[MAX][MAX];
void* addMatrices(void* arg) {
   intptr_t core = (intptr_t)arg;
   // Each thread computes 1/3rd of matrix addition
   for (int i = core * MAX / 3; i < (core + 1) * MAX / 3; i++) {
      for (int j = 0; j < MAX; j++) {
         add[i][j] = AMat[i][j] + BMat[i][j];
      }
   }
}
void* subtraction(void* arg) {
   intptr_t core = (intptr_t)arg;
   // Each thread computes 1/3rd of matrix subtraction
   for (int i = core * MAX / 3; i < (core + 1) * MAX / 3; i++) {
      for (int j = 0; j < MAX; j++) {
         sub[i][j] = AMat[i][j] - BMat[i][j];
      }
   }
}
void display(){
   cout << "Matrix A: " << endl;
   for(int i = 0; i < MAX; i++) {
      for(int j = 0; j < MAX; j++) {
         cout << AMat[i][j] << " ";
      }
      cout << endl;
   }
   cout << "\nMatrix B: " << endl;
   for(int i = 0; i < MAX; i++) {
      for(int j = 0; j < MAX; j++) {
         cout << BMat[i][j] << " ";
      }
      cout << endl;
   }
}
void displayRes(){
   cout << "\nAddition: " << endl;
   for(int i = 0; i < MAX; i++) {
      for(int j = 0; j < MAX; j++) {
         cout << add[i][j] << " ";
      }
      cout << endl;
   }
   cout << "\nSubtraction: " << endl;
   for(int i = 0; i < MAX; i++) {
      for(int j = 0; j < MAX; j++) {
         cout << sub[i][j] << " ";
      }
      cout << endl;
   }
}
main() {
   display();
   int step = 0;
   for (int i = 0; i < CORE; i++) {
      pthread_create(&thread[i], NULL, &addMatrices, (void*)step);
      pthread_create(&thread[i + CORE], NULL, &subtraction, (void*)step);
      step++;
   }
   for (int i = 0; i < CORE * 2; i++) {
      pthread_join(thread[i], NULL);
   }
   displayRes();
}
登录后复制

输出

Matrix A:
10 20 30
40 50 60
70 80 50
Matrix B:
80 60 20
30 20 15
10 14 35
Addition:
90 80 50
70 70 75
80 94 85
Subtraction:
-70 -40 10
10 30 45
60 66 15
登录后复制

以上是使用pthread在C/C++中实现矩阵的加法和减法的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

<🎜>:泡泡胶模拟器无穷大 - 如何获取和使用皇家钥匙
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系统,解释
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆树的耳语 - 如何解锁抓钩
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1675
14
CakePHP 教程
1429
52
Laravel 教程
1333
25
PHP教程
1278
29
C# 教程
1257
24
探索人工智能历史与矩阵:人工智能教程(二) 探索人工智能历史与矩阵:人工智能教程(二) Nov 20, 2023 pm 05:25 PM

在本系列的第一篇文章中,我们讨论了人工智能、机器学习、深度学习、数据科学等领域的关联和区别。我们还就整个系列将使用的编程语言、工具等做出了一些艰难的选择。最后,我们还介绍了一点矩阵的知识。在本文中,我们将深入地讨论人工智能的核心——矩阵。不过在此之前,我们先来了解一下人工智能的历史我们为什么需要了解人工智能的历史呢?历史上曾出现过多次人工智能热潮,但在很多情况下,对人工智能潜力的巨大期望都未能达成。了解人工智能的历史,有助于让我们看清这次人工智浪潮是会创造奇迹,抑或只是另一个即将破灭的泡沫。我们

计算矩阵右对角线元素之和的Python程序 计算矩阵右对角线元素之和的Python程序 Aug 19, 2023 am 11:29 AM

一种受欢迎的通用编程语言是Python。它被应用于各种行业,包括桌面应用程序、网页开发和机器学习。幸运的是,Python具有简单易懂的语法,适合初学者使用。在本文中,我们将使用Python来计算矩阵的右对角线之和。什么是矩阵?在数学中,我们使用一个矩形排列或矩阵,用于描述一个数学对象或其属性,它是一个包含数字、符号或表达式的矩形数组或表格,这些数字、符号或表达式按行和列排列。例如−234512367574因此,这是一个有3行4列的矩阵,表示为3*4矩阵。现在,矩阵中有两条对角线,即主对角线和次对

Python程序使用多维数组相乘两个矩阵 Python程序使用多维数组相乘两个矩阵 Sep 11, 2023 pm 05:09 PM

矩阵是按行和列排列的一组数字。m行n列的矩阵称为mXn矩阵,m和n称为其维度。矩阵是一个二维数组,在Python中使用列表或NumPy数组创建。一般来说,矩阵乘法可以通过将第一个矩阵的行乘以第二个矩阵的列来完成。这里,第一矩阵的列数应等于第二矩阵的行数。输入输出场景假设我们有两个矩阵A和B,这两个矩阵的维度分别为2X3和3X2。相乘后得到的矩阵将有2行1列。[b1,b2][a1,a2,a3]*[b3,b4]=[a1*b1+a2*b2+a3*a3][a4,a5,a6][b5,b6][a4*b2+a

Python加法代码怎么写_Python加法代码写法教程 Python加法代码怎么写_Python加法代码写法教程 Apr 02, 2024 pm 06:16 PM

1、首先打开在线python编辑页面。2、然后在程序区输入程序代码。3、接着点击左上角的】运行【,输入第一个加数,按下回车,输入第二个加数。4、最后按下回车,得出两个加数的和。这就是简单的python加法代码。

如何使用Python中的numpy计算矩阵或ndArray的行列式? 如何使用Python中的numpy计算矩阵或ndArray的行列式? Aug 18, 2023 pm 11:57 PM

在本文中,我们将学习如何使用Python中的numpy库计算矩阵的行列式。矩阵的行列式是一个可以以紧凑形式表示矩阵的标量值。它是线性代数中一个有用的量,并且在物理学、工程学和计算机科学等各个领域都有多种应用。在本文中,我们首先将讨论行列式的定义和性质。然后我们将学习如何使用numpy计算矩阵的行列式,并通过一些实例来看它在实践中的应用。行列式的定义和性质Thedeterminantofamatrixisascalarvaluethatcanbeusedtodescribethepropertie

不使用乘法、除法和取模运算符来进行两个整数的除法 不使用乘法、除法和取模运算符来进行两个整数的除法 Sep 21, 2023 pm 12:41 PM

在这个问题中,我们只需要将两个整数相除,而不需要使用乘法、除法和取模运算符。尽管我们可以使用加法、乘法或位操作。问题陈述指出我们将得到两个整数x和y。在不使用乘法、除法或取模运算符的情况下,我们需要确定x除以y后的商。示例输入:x=15,y=5输出:3输入:x=10,y=4输出:2输入:x=-20,y=3输出:-6方法方法1(使用简单的数学)在这种方法中,我们将使用一个简单的数学算法。下面是我们要遵循的步骤的分步说明-我们将从被除数(即x)中不断减去除数(即y),直到x大于或等于y。当y大于x时

C程序用于比较两个矩阵是否相等 C程序用于比较两个矩阵是否相等 Aug 31, 2023 pm 01:13 PM

用户必须输入两个矩阵的顺序以及两个矩阵的元素。然后,比较这两个矩阵。如果矩阵元素和大小都相等,则表明两个矩阵相等。如果矩阵大小相等但元素相等不相等,则显示矩阵可以比较,但不相等。如果大小和元素不匹配,则显示矩阵无法比较。程序以下是C程序,用于比较两个矩阵是否相等-#include<stdio.h>#include<conio.h>main(){  intA[10][10],B[10][10];  in

Python程序:交换矩阵中第一个和最后一个元素在列之间的位置 Python程序:交换矩阵中第一个和最后一个元素在列之间的位置 Sep 08, 2023 pm 04:29 PM

矩阵是由许多按行和列形式排列的数字组成的二维数组。Python没有任何数据类型来表示矩阵,但我们可以使用嵌套列表或NumPy数组作为矩阵。请参阅以下输入输出场景,了解如何互换矩阵的第一列和最后一列元素。输入输出场景假设我们有一个使用列表列表表示的3X3矩阵。输出矩阵将是交换第一列和最后一列元素的结果矩阵。Inputmatrix:[1,3,4][4,5,6][7,8,3]Outputmatrix:[4,3,1][4,5,6][3,8,7]让我们考虑另一个行和列不相等的矩阵。Inputmatrix:

See all articles