目次
出力
ホームページ バックエンド開発 C++ pthread を使用して C/C++ で行列の加算と減算を実装する

pthread を使用して C/C++ で行列の加算と減算を実装する

Aug 28, 2023 am 09:05 AM
マトリックス pthread 追加 引き算

pthread を使用して C/C++ で行列の加算と減算を実装する

ここでは、マルチスレッド環境を使用して行列の加算と減算を実行する方法を説明します。 pthread は、C または C++ で複数のスレッドを同時に実行するために使用されます。

2 つの行列 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 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

人工知能の歴史とマトリックスを探る: 人工知能チュートリアル (2) 人工知能の歴史とマトリックスを探る: 人工知能チュートリアル (2) Nov 20, 2023 pm 05:25 PM

このシリーズの最初の記事では、人工知能、機械学習、深層学習、データ サイエンスなどのつながりと違いについて説明しました。また、シリーズ全体で使用するプログラミング言語やツールなどについても、いくつかの難しい選択をしました。最後に、行列の知識も少し紹介しました。この記事では、人工知能の中核であるマトリックスについて詳しく説明します。その前に、まず人工知能の歴史を理解しましょう。なぜ人工知能の歴史を理解する必要があるのでしょうか?歴史上何度もAIブームはありましたが、多くの場合、AIの可能性に対する大きな期待は実現しませんでした。人工知能の歴史を理解すると、この人工知能の波が奇跡を起こすのか、それともはじけようとしている単なるバブルなのかを知ることができます。私たち

Pythonでnumpyを使用して行列またはndArrayの行列式を計算するにはどうすればよいですか? Pythonでnumpyを使用して行列またはndArrayの行列式を計算するにはどうすればよいですか? Aug 18, 2023 pm 11:57 PM

この記事では、Python の numpy ライブラリを使用して行列の行列式を計算する方法を学びます。行列の行列式は、行列をコンパクトな形式で表現できるスカラー値です。これは線形代数で有用な量であり、物理学、工学、コンピューターサイエンスなどのさまざまな分野で数多くの応用があります。この記事では、まず行列式の定義と性質について説明します。次に、numpy を使用して行列の行列式を計算する方法を学び、いくつかの例を通して実際にどのように使用されるかを見ていきます。マトリクスの行列式は、プロパティを記述するために使用できるスカラー値です。

行列の右対角要素の合計を計算する Python プログラム 行列の右対角要素の合計を計算する Python プログラム Aug 19, 2023 am 11:29 AM

人気のある汎用プログラミング言語は Python です。デスクトップ アプリケーション、Web 開発、機械学習など、さまざまな業界で使用されています。幸いなことに、Python には初心者に適したシンプルで理解しやすい構文があります。この記事では、Python を使用して行列の右対角の合計を計算します。マトリックスとは何ですか?数学では、数学的オブジェクトまたはそのプロパティを記述するために長方形の配列または行列を使用します。これは、行と列に配置された数値、記号、または式を含む長方形の配列または表です。例: -234512367574 したがって、これは 3 行 4 列の行列であり、3*4 行列として表されます。さて、行列には​​ 2 つの対角線、主対角線と副対角線があります。

Python追加コードの書き方_Python追加コード作成チュートリアル Python追加コードの書き方_Python追加コード作成チュートリアル Apr 02, 2024 pm 06:16 PM

1. まずオンラインの Python 編集ページを開きます。 2. 次に、プログラムエリアにプログラムコードを入力します。 3. 次に、左上隅の「実行」をクリックし、最初の加数を入力し、Enter キーを押して、2 番目の加数を入力します。 4. 最後に Enter キーを押して、2 つの加数の合計を取得します。これは単純なPythonの追加コードです。

多次元配列を使用して 2 つの行列を乗算する Python プログラム 多次元配列を使用して 2 つの行列を乗算する Python プログラム Sep 11, 2023 pm 05:09 PM

行列は、行と列に配置された一連の数値です。 m 行 n 列の行列は mXn 行列と呼ばれ、m と n はその次元と呼ばれます。行列は、リストまたは NumPy 配列を使用して Python で作成された 2 次元配列です。一般に、行列の乗算は、最初の行列の行と 2 番目の行列の列を乗算することで実行できます。ここで、最初の行列の列数は 2 番目の行列の行数と等しくなければなりません。入力シナリオと出力シナリオ 2 つの行列 A と B があるとします。これら 2 つの行列の次元は、それぞれ 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

乗算、除算、剰余演算子を使用せずに 2 つの整数を除算します。 乗算、除算、剰余演算子を使用せずに 2 つの整数を除算します。 Sep 21, 2023 pm 12:41 PM

この問題では、乗算、除算、および剰余演算子を使用せずに、2 つの整数を除算するだけで済みます。ただし、加算、乗算、またはビット演算を使用できます。問題文では、2 つの整数 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 より大きい場合

Oracleデータベース操作スキル:減算演算を詳しく解説 Oracleデータベース操作スキル:減算演算を詳しく解説 Mar 02, 2024 pm 06:15 PM

Oracle データベースは、強力なリレーショナル データベース管理システムとして、ユーザーのニーズを満たす豊富なコンピューティング操作を提供します。日々のデータベース操作において、減算演算は一般的かつ重要な演算であり、必要な結果を得るためにデータの減算演算を実現するのに役立ちます。この記事では、Oracle データベースでの減算演算に関連する手法について詳しく説明し、読者がこの関数をよりよく理解して使用できるように、具体的なコード例を示します。 1. Oracle データにおける減算演算の基本概念

2 つの行列が等しいかどうかを比較する C プログラム 2 つの行列が等しいかどうかを比較する C プログラム Aug 31, 2023 pm 01:13 PM

ユーザーは、2 つの行列の順序と両方の行列の要素を入力する必要があります。次に、2 つの行列を比較します。行列の要素とサイズが両方とも等しい場合、2 つの行列は等しいと見なされます。行列のサイズは等しいが要素が等しくない場合、行列は比較可能ですが等しくないと示されます。サイズと要素が一致しない場合、表示マトリックスを比較することはできません。次のプログラムは C プログラムで、2 つの行列が等しいかどうかを比較するために使用されます。#include<stdio.h>#include<conio.h>main(){ intA[10][10],B[10][10] ; で

See all articles