SHOEISHA iD

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

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

インテルソフトウェア開発製品による並列化プログラミング(AD)

並列プログラミングの効率的なデバッグを実現する「Parallel Inspector」

Parallel Inspectorによるメモリエラーとスレッド化エラーの検知

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

スレッド化エラーの検出

 次はParallel Inspectorのスレッド化エラー解析機能を試してみます。

 [ツール]-[メニュー]-[Parallel Inspector]-[Inspector Threading Errors]をクリックしてください。表示されるダイアログで、最後までつまみを下げてから[Run Analyze]ボタンをクリックします。

つまみを一番下まで下げ、すべてのスレッド化エラーを検出
つまみを一番下まで下げ、すべてのスレッド化エラーを検出

 クリック後、解析処理が始まりますのでしばらくお待ちください。解析が終了したらスレッド化エラーのイベントログが表示されるので[Interpret Result]をクリックします。スレッド化エラーもメモリエラー解析結果と同じく詳細な情報が表示されます。

スレッド化エラーのイベントログ
スレッド化エラーのイベントログ
スレッド化エラーの詳細画面
スレッド化エラーの詳細画面

 今回はOverview画面のProblem列に注目してください。このサンプルプログラムの問題点がData raceだと的確に指摘しています。

[Overview]をクリックすると表示される、スレッド化エラーのOverview画面
[Overview]をクリックすると表示される、スレッド化エラーのOverview画面

 さらに問題のコードが読み込みと書き込みに分けて表示され、大変分かりやすくなっています。

 これで、このサンプルプログラムが毎回違う結果を出す原因は、変数stockCount(在庫数)を2つのスレッドで読み書きしていることだと分かります。並列プログラミングでは同時に2つ以上のスレッドが1つのデータを操作すると結果が予測できません。それをParallel Inspectorは検出したのです。

 これさえ分かれば問題を解決したのも同然です。この短いサンプルプログラムでは効果が分かりにくいかもしれませんが、実務では数十万行以上のC/C++コードでデバッグすることが十分にありえます。そんな大量のコードの中から問題部分を探すのは大変骨が折れる作業です。それを自動かつ正確に検出できるのですから大変便利なツールです。

まとめ

 今回の記事では並列プログラミング時のデバッグ作業が大変であり、その作業を助けるツールが必須であることを解説しました。また、よいツールとしてParallel Inspectorがあることを示し、簡単なサンプルコードを解析して大変便利なツールであることを確認しました。

 今回は駆け足で解説しましたので、まだまだParallel Inspectorの機能を紹介しきれていません。読者の方はぜひ実際に体験版を入手してお試しください。

修正履歴

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

  • X ポスト
  • このエントリーをはてなブックマークに追加
インテルソフトウェア開発製品による並列化プログラミング連載記事一覧

もっと読む

この記事の著者

インドリ(インドリ)

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

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

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

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

この記事をシェア

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

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング