C言語でOpenMPを利用したとき、parallel構文内で、共有変数を宣言する方法はありますか?
OpenMPを利用して、スレッド並列にしたプログラムを書いています。
#pragma omp parallel
{
~~
~~
}
この、~~の部分で、大きく分けて二つの処理をしているので、関数に分けました。
#pragma omp parallel private( a, b, c, d, e, f, g, h, i, j )
{
func1( a, b, c, d, e, f, g, h );
func2( a, b, c, d, e, f, g, h, i, j );
}
このとき、2つ目の関数で共有変数を複数使う必要があります。
しかし、共有変数の数は多く、引数にするとかなりの数の引数になってしまいます。
そこで、できればfunc2()という関数の中で、スレッドで共有できるshared変数を宣言したいのですが、方法がわかりません。
どなたか、知っている方教えてください。
No.1
- 回答日時:
普通のCの書き方で問題ないはずです。
配列や構造体に共有変数をまとめてfunc2に参照渡しにすればどうしょうか。並列化区間のthreadの実行順序は不定ですので、共有変数に並列化区間で書き込む時は十分注意してください。
回答ありがとうございます。
その共有変数というのは複数の配列でして、かつfunc2内でしか使わない変数なのです。
なので、できればfunc2内でポインタを宣言し、
動的にメモリ確保して、func2内で解放したいのです。
もちろん、構造体にまとめればできるのは分かっていますが。。。すみません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセル関数の変わった使い方 3 2022/05/13 17:12
- JavaScript カラーミーショップのsectionループ内で、[引数][戻り値]ありの関数的な処理を行いたいです。 1 2022/05/07 19:39
- Ruby 初心者プログラミング 3 2022/10/12 11:31
- C言語・C++・C# C言語について コマンドラインで >変数 12.00 (char型) と、小数点付きの値を共用体に渡 1 2022/04/22 16:56
- その他(メールソフト・メールサービス) 詐欺メールの量が酷い 3 2022/05/19 12:36
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- 不動産業・賃貸業 賃貸契約契約の解除 1 2022/11/07 18:02
- C言語・C++・C# const char** p;のとき、free(p)でC4090エラーとなるのはなぜですか 3 2023/03/31 16:28
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- C言語・C++・C# 競技プログラミングに関する質問です。 3 2022/04/03 19:51
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C++で、メンバもヒープに確保さ...
-
sprintf()の使い方について
-
newしないオブジェクトについて
-
allocってなんですか?
-
64ビットと32ビットの違い
-
c言語のポインタへの文字列入力...
-
mallocについて
-
new と malloc によるメモリの...
-
mallocとfree
-
ヒープ領域の限界値設定
-
malloc関数によるメモリの確保
-
DLLのマルチスレッドの動作につ...
-
ビットをローテートするプログ...
-
メモリ確保方法を教えてください。
-
メモリを確保する方法(アセン...
-
C++ の new演算子について
-
ヒープメモリの解放について
-
行列積の問題で
-
メモリーの管理
-
mallocで確保するメモリの領域...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
c言語のポインタへの文字列入力...
-
mallocについて
-
newしないオブジェクトについて
-
allocってなんですか?
-
配列の添え字の最大数とは?
-
ヒープメモリの解放について
-
プログラムが途中で強制終了し...
-
malloc呼び出し時のセグメンテ...
-
Accessで、メモリを開放するタ...
-
ビットをローテートするプログ...
-
C++で、メンバもヒープに確保さ...
-
void*型のデータサイズ
-
入れ子になった構造体について
-
C言語に関する質問
-
スタック破壊の上手な見つけ方...
-
mallocで確保するメモリの領域...
-
C++のnewで確保したメモリーの...
-
指定したメモリアドレスの値の...
-
ヒープ領域の限界値設定
-
構造体でchar name[]と*nameの...
おすすめ情報