SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

基礎から学ぶOpenMP

OpenMPにおける変数の扱いと並列リダクション

基礎から学ぶOpenMP 第4回


  • X ポスト
  • このエントリーをはてなブックマークに追加

ダウンロード サンプルコード (13.3 KB)

 この連載は、OpenMPを通じて並列処理の考え方をお伝えすることを目的としています。今回はOpenMPの変数の取り扱いについて解説します。変数に関する事柄は地味ですが、正しく並列プログラミングをするためには、変数の扱い方をよく知らねばなりません。

  • X ポスト
  • このエントリーをはてなブックマークに追加

はじめに

 この連載は、OpenMPを通じて並列処理の考え方をお伝えすることを目的としています。今回はOpenMPの変数の取り扱いについて解説します。変数に関する事柄は地味ですが、正しく並列プログラミングをするためには、変数の扱い方をよく知らねばなりません。

 なお、この連載で解説に使用するサンプルコードはあくまでも OpenMPの基礎を理解するためのものであり、実務でOpenMPを使用する際にはよく理解してから用途に適したプログラミングを行ってください。

質問/指摘についての注意

 本記事の対象を超えるもの、記述箇所を特定しないもの、読者固有環境に起因するもの、読者の主義思想に関するもの、読者の誤解によるもの、社会人 としてのマナーを欠いたものなどは質問/指摘を頂いてもお答えできません。あらかじめご了承ください。

対象読者

 筆者が想定している読者はCの基本的文法をマスターし、並列プログラミングに興味を持っている方です。凝ったテクニックを極力さけ、基本的な文法さえ分かれば読めるように注意しますので、並列化に興味を持っている方はぜひこの連載に目を通してください。

必要な環境

 必要な環境については、第1回を参照してください。

 なお、この連載は基本的にWindows環境を想定して解説しますが、OpenMPそのものは他のOS上でも動作しますので、適宜読み替えて参考にしてください。

並列処理と変数

 並列処理で重要なのは変数の扱い方です。変数の扱いを間違えると、思わぬバグを生み出してしまいます。しかも、並列プログラミングはバグの検出が困難です。初めからバグを生み出さないために、OpenMPで用意されている変数に関する機能を知らなくてはなりません。

 並列処理において、検出が困難なバグが発生する主な理由は、「実行順序が定まっていない複数のプログラムから、並列的に参照されるから」です。前回解説したように、OpenMPは共有メモリ方式で、メモリモデルはrelaxed-consistencyです。従って、同じメモリ内にある変数を実行順序が変化する並列プログラムから操作されても矛盾が生じないようにせねばなりません。

 これは非常に難しい問題ですが、幸いOpenMPにはいくつかの変数に関する指示句が用意されており、比較的簡単にバグを避けられます。次項から変数に関する指示句と関連する概念を解説します。

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
変数の局所化

修正履歴

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
基礎から学ぶOpenMP連載記事一覧

もっと読む

この記事の著者

インドリ(インドリ)

分析・設計・実装なんでもありのフリーエンジニア。ブログ「無差別に技術をついばむ鳥(http://indori.blog32.fc2.com/)」の作者です。アドバイザーをしたり、システム開発したり、情報処理技術を研究したりと色々しています。座右の銘は温故知新で、新旧関係なく必要だと考えたものは全て学...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/5290 2010/08/04 07:42

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング