SlideShare a Scribd company logo
1 of 24
Download to read offline
並列処理開発を支援する
コンパイラの機能


12-B-4   大野圭一
         サン・マイクロシステムズ株式会社
         東京ソフトウェア本部 製品開発統括部
目次
 並列化とマルチコア
 並列プログラミングモデル
   共有メモリモデル
      スレッド
      自動並列化
      OpenMP
 Sun Studio Express 11/08
   並列処理開発支援
   Linux 版を使った Ubuntu 上でのデモ
なぜ並列化なのか ?
       並列化は最適化テクニックの一つ
      目的とするところは実行速度の向上

目的のために複数のプロセッサまたはコアを使う

        1コア           4コア
               並列化
  時
  間

              4コア使うことにより、コアあ
               たりの実行時間を1/4にする
並列化とは ?
処理の順序に依存性が無いことが確実であれば、
    その「実行単位」は並列である

別の言い方をすれば、それらの処理の実行順序に
      意味は無いということ


  機械語命令の列
  プログラム行の集まり
                         粒
  アルゴリズム                度
  解決しようとしている問題
並列プログラミングモデル
 さまざまな並列プログラミングモデル
 もっともよく知られているものとして:
  (疎結合)クラスターシステム - 分散メモリ
   socket (標準、低レベル)
   MPI - Message Passing Interface (デファクト)
  単一システム - 共有メモリ
   POSIXスレッド(標準、低レベル)
   自動並列化(コンパイラによって実現)
   OpenMP(デファクト)
MPI 分散メモリモデル

     0               1
 M                       M



     2               3
 M                       M



     4               5
 M                       M


         クラスターシステム
共有メモリモデル


        共有メモリ



    0   1       P
    M   M       M



    単一システム
スレッドモデル
 アプリケーションを並列化するための明
  確で基本的なスレッドモデル
 開発者が多くの詳細な動作を定義:
  スレッドの生成と管理
  スレッド間で分担する作業
  スレッド間の同期処理 …
 このモデルの例
  Javaスレッド、POSIXスレッド、
   Solarisスレッド
自動並列化 (-xautopar)
   コンパイラが並列化(ループ処理が対象)
   繰り返し部分を分割して並列実行
   同一のバイナリであらゆるスレッド数に対応

          for (i=0; i<1000; i++)
            a[i] = b[i] + c[i];

            OMP_NUM_THREADS=4


                                             スレッド3
 スレッド0    スレッド1             スレッド2
                              500-749          750-999
  0-249    250-499




                      例: SPECfp2006で16%の向上(OMP_NUM_THREADS=2)
自動並列化の例
     % cc -c -fast -xrestrict -xautopar -xloopinfo mxv.c
     quot;mxv.cquot;, line 3: PARALLELIZED, and serial
              version generated
     quot;mxv.cquot;, line 6: not parallelized, unsafe
              dependence (sum)
 1    void mxv(int m,int n,double *a,double *b[],double *c)
 2    {
                                           ループの並列化
 3       for (int i=0; i<m; i++)
 4       {                                              j
 5         double sum = 0.0;
 6         for (int j=0; j<n; j++)
                                      i
 7           sum += b[i][j]*c[j];           =          *
 8         a[i] = sum;
 9       }
10    }
参考 : 自動ベクトル化 (-xvector=simd)
    SIMD命令を使用するようにコンパイル
    SSE2以降をサポートしたプラットフォームで
     使用
    ループ処理で効果的

          for (i=0; i<1000; i++)
            a[i] = b[i] + c[i];



     for (i=0; i<1000; i++)
       a[i:i+3] = b[i:i+3] + c[i:i+3];
OpenMP とは ?
  C/C++、Fortranで共有メモリ型並列処理
   を記述するためのデファクト
  構成要素
    コンパイラ指示、実行時処理、環境変数
  OpenMP Architecture Review Board
   (ARB)が仕様を管理
  2008年5月にVersion 3.0リリース
  http://www.openmp.org
OpenMP の利点
 優れたパフォーマンスと拡張性
     適切に使用すれば …
 デファクトであり成熟した技術
     非常に多くのコンパイラでサポート
    要求されるプログラミング作業が少ない

    逐次処理版を維持

    段階的な並列化をサポート

    マルチコアアーキテクチャに適合

     軽量、HWスレッド上での効果的な実行
OpenMP の例
 #pragma omp parallel for
                                   parallel loop
for (int i=0; i<m; i++)
                                                   j
{
   double sum = 0.0;
   for (int j=0; j<n; j++)
                             i     =
     sum += b[i][j]*c[j];                          *
   a[i] = sum;
}

       スレッド0                      スレッド1
 for (i=0,1,2,3,4)           for (i=5,6,7,8,9)
 i=0                         i=5
 sum = Σ b[i=0][j]*c[j]      sum = Σ b[i=5][j]*c[j]
 a[0] = sum                  a[5] = sum
 i=1                         i=6
OpenMP 3.0
  2008年5月リリース
  注目すべき理由
   TASKのサポート
  TASKによって幅広いアプリケーションが
   並列化可能に
タスクのコンセプト

タスク指定に
              スレッドはプー
遭遇したスレ
              ルの中のタスク
ッドはプール
                を実行
 に追加


開発者はアプリケーション内でタスクを指定
   実行時システムがタスクを実行
例 - リンクリスト
      ........

while(my_pointer) {

     (void) do_independent_work (my_pointer);

      my_pointer = my_pointer->next ;
} // End of while loop

      ........



                 OpenMP 3.0より前は並列化が難しい:
                 繰り返すべき回数を数えた上で、
                 whileループをforループに変換
例 - リンクリストのタスク指定

my_pointer = listhead;

#pragma omp parallel
{
                                      OpenMP Task
   #pragma omp single
   {
      while(my_pointer) {
        #pragma omp task firstprivate(my_pointer)
        {
            (void) do_independent_work (my_pointer);
        }
        my_pointer = my_pointer->next ;
      }
   } // End of single - implied barrier
} // End of parallel region - implied barrier
ハイブリッドモデル

                分散メモリ

                            共有メモリ
    共有メモリ



                        0   1       P
0   1       P
                        M   M       M
M   M       M
Sun Studio Express 11/08
  C/C++/Fortran 統合開発環境
     http://developers.sun.com/sunstudio/
  新機能評価のための先行リリース
   正式リリース版は Sun Studio 12
  サポートプラットフォーム
     Solaris 10 01/06 以降
     OpenSolaris 2008.05, 2008.11
     SuSE Linux Enterprise Server 10
     RedHat Enterprise Linux 5
     Ubuntu 8.04, CentOS 5.1
並列処理開発の支援

    自動並列化と自動ベクトル化

    デバッガ

    パフォーマンスアナライザ

     パフォーマンス上のボトルネックを検出
 スレッドアナライザ
     データ競合とデッドロックの検出
デモ
     Sun Studio Express 11/08
     Ubuntu 8.10 (サポート外)
     以下の手順で UI の一部を日本語化 (サポート外)
         Sun Studio Express “Tarfile Installer” をダウンロードして
          インストール
          http://developers.sun.com/sunstudio/downloads/express/
         NetBeans 日本語化 zip ファイルをダウンロードして
          Sun Studio のインストールディレクトリに展開
          http://ja.netbeans.org/downloads/65/index.html#jazip

$   sudo mkdir -p /opt/sun
$   cd /opt/sun
$   ~/StudioExpress-lin-x86-2008-11-ii.sh --print-sla
$   sudo ~/StudioExpress-lin-x86-2008-11-ii.sh --acept-sla
$   cd /opt/sun/netbeans-6.5ss
$   sudo unzip -q ~/nb65ja-200811051154.zip
$   export PATH=/opt/sun/sunstudioceres/bin:$PATH
まとめ
 並列化の方法
   分散メモリモデル
   共有メモリモデル
     自動並列化 - コンパイラによる並列化
     OpenMP - 可搬で比較的容易な並列化
 Sun Studio Express 11/08
ありがとうございました


 学生向け Java & Solaris 無料 E-Learning
  SAI (Sun Academic Initiative)
 http://blogs.sun.com/akihito/resource/e-learning-1.pdf

More Related Content

What's hot

Linuxユーザーのための Windows 管理入門
Linuxユーザーのための Windows 管理入門Linuxユーザーのための Windows 管理入門
Linuxユーザーのための Windows 管理入門shigeya
 
20090418 イケテルRails勉強会 第2部Air編
20090418 イケテルRails勉強会 第2部Air編20090418 イケテルRails勉強会 第2部Air編
20090418 イケテルRails勉強会 第2部Air編mochiko AsTech
 
Windows 7兼容性系列课程(5):Windows 7徽标认证
Windows 7兼容性系列课程(5):Windows 7徽标认证Windows 7兼容性系列课程(5):Windows 7徽标认证
Windows 7兼容性系列课程(5):Windows 7徽标认证Chui-Wen Chiu
 
自作言語でお絵描き
自作言語でお絵描き自作言語でお絵描き
自作言語でお絵描きuchan_nos
 
ブラウザでMap Reduce風味の並列分散処理
ブラウザでMap Reduce風味の並列分散処理ブラウザでMap Reduce風味の並列分散処理
ブラウザでMap Reduce風味の並列分散処理Shinya Miyazaki
 
C++20 新功能:Concepts & Ranges
C++20 新功能:Concepts & RangesC++20 新功能:Concepts & Ranges
C++20 新功能:Concepts & RangesYongwei Wu
 
【12-C-5】 自律型移動ロボットのソフトウェア技術
【12-C-5】 自律型移動ロボットのソフトウェア技術【12-C-5】 自律型移動ロボットのソフトウェア技術
【12-C-5】 自律型移動ロボットのソフトウェア技術devsumi2009
 
Cloud Computing - クラウドコンピューティング(会津産学懇話会)
Cloud Computing - クラウドコンピューティング(会津産学懇話会)Cloud Computing - クラウドコンピューティング(会津産学懇話会)
Cloud Computing - クラウドコンピューティング(会津産学懇話会)Yusuke Kawasaki
 
Windows 7兼容性系列课程(2):Windows 7用户权限控制 (UAC)
Windows 7兼容性系列课程(2):Windows 7用户权限控制 (UAC)Windows 7兼容性系列课程(2):Windows 7用户权限控制 (UAC)
Windows 7兼容性系列课程(2):Windows 7用户权限控制 (UAC)Chui-Wen Chiu
 
A practical practice of structured fund pricing
A practical practice of structured fund pricingA practical practice of structured fund pricing
A practical practice of structured fund pricing?? ?
 
秩序从哪里来?
秩序从哪里来?秩序从哪里来?
秩序从哪里来?guest8430ea2
 
Windows 7兼容性系列课程(1):Windows 7兼容性概述
Windows 7兼容性系列课程(1):Windows 7兼容性概述Windows 7兼容性系列课程(1):Windows 7兼容性概述
Windows 7兼容性系列课程(1):Windows 7兼容性概述Chui-Wen Chiu
 
Don't forget Cygwin ~Cygwin のこともわすれないであげてください~
Don't forget Cygwin ~Cygwin のこともわすれないであげてください~Don't forget Cygwin ~Cygwin のこともわすれないであげてください~
Don't forget Cygwin ~Cygwin のこともわすれないであげてください~fd0
 
4200 Kte7.0 Training V1.0
4200 Kte7.0 Training V1.04200 Kte7.0 Training V1.0
4200 Kte7.0 Training V1.0wayneliao
 

What's hot (20)

Linuxユーザーのための Windows 管理入門
Linuxユーザーのための Windows 管理入門Linuxユーザーのための Windows 管理入門
Linuxユーザーのための Windows 管理入門
 
20090418 イケテルRails勉強会 第2部Air編
20090418 イケテルRails勉強会 第2部Air編20090418 イケテルRails勉強会 第2部Air編
20090418 イケテルRails勉強会 第2部Air編
 
Windows 7兼容性系列课程(5):Windows 7徽标认证
Windows 7兼容性系列课程(5):Windows 7徽标认证Windows 7兼容性系列课程(5):Windows 7徽标认证
Windows 7兼容性系列课程(5):Windows 7徽标认证
 
Test5
Test5Test5
Test5
 
自作言語でお絵描き
自作言語でお絵描き自作言語でお絵描き
自作言語でお絵描き
 
ブラウザでMap Reduce風味の並列分散処理
ブラウザでMap Reduce風味の並列分散処理ブラウザでMap Reduce風味の並列分散処理
ブラウザでMap Reduce風味の並列分散処理
 
Dg8
Dg8Dg8
Dg8
 
C++20 新功能:Concepts & Ranges
C++20 新功能:Concepts & RangesC++20 新功能:Concepts & Ranges
C++20 新功能:Concepts & Ranges
 
【12-C-5】 自律型移動ロボットのソフトウェア技術
【12-C-5】 自律型移動ロボットのソフトウェア技術【12-C-5】 自律型移動ロボットのソフトウェア技術
【12-C-5】 自律型移動ロボットのソフトウェア技術
 
Cloud Computing - クラウドコンピューティング(会津産学懇話会)
Cloud Computing - クラウドコンピューティング(会津産学懇話会)Cloud Computing - クラウドコンピューティング(会津産学懇話会)
Cloud Computing - クラウドコンピューティング(会津産学懇話会)
 
Windows 7兼容性系列课程(2):Windows 7用户权限控制 (UAC)
Windows 7兼容性系列课程(2):Windows 7用户权限控制 (UAC)Windows 7兼容性系列课程(2):Windows 7用户权限控制 (UAC)
Windows 7兼容性系列课程(2):Windows 7用户权限控制 (UAC)
 
S30
S30S30
S30
 
Salooni march april 2013
Salooni march april 2013Salooni march april 2013
Salooni march april 2013
 
D 0004 paper i master
D 0004 paper i masterD 0004 paper i master
D 0004 paper i master
 
A practical practice of structured fund pricing
A practical practice of structured fund pricingA practical practice of structured fund pricing
A practical practice of structured fund pricing
 
秩序从哪里来?
秩序从哪里来?秩序从哪里来?
秩序从哪里来?
 
Windows 7兼容性系列课程(1):Windows 7兼容性概述
Windows 7兼容性系列课程(1):Windows 7兼容性概述Windows 7兼容性系列课程(1):Windows 7兼容性概述
Windows 7兼容性系列课程(1):Windows 7兼容性概述
 
Don't forget Cygwin ~Cygwin のこともわすれないであげてください~
Don't forget Cygwin ~Cygwin のこともわすれないであげてください~Don't forget Cygwin ~Cygwin のこともわすれないであげてください~
Don't forget Cygwin ~Cygwin のこともわすれないであげてください~
 
4200 Kte7.0 Training V1.0
4200 Kte7.0 Training V1.04200 Kte7.0 Training V1.0
4200 Kte7.0 Training V1.0
 
Dg7
Dg7Dg7
Dg7
 

Viewers also liked

【12-C-6】 飛行船萌え障害キタ━━━━ (;´Д`) ━━━━ !!!! ~テスト嫌いエンジニアに贈るテストのすすめ~
【12-C-6】 飛行船萌え障害キタ━━━━ (;´Д`) ━━━━ !!!! ~テスト嫌いエンジニアに贈るテストのすすめ~【12-C-6】 飛行船萌え障害キタ━━━━ (;´Д`) ━━━━ !!!! ~テスト嫌いエンジニアに贈るテストのすすめ~
【12-C-6】 飛行船萌え障害キタ━━━━ (;´Д`) ━━━━ !!!! ~テスト嫌いエンジニアに贈るテストのすすめ~devsumi2009
 
【13-E-1】 システムの見える化~エンドユーザーの立場から
【13-E-1】 システムの見える化~エンドユーザーの立場から【13-E-1】 システムの見える化~エンドユーザーの立場から
【13-E-1】 システムの見える化~エンドユーザーの立場からdevsumi2009
 
男It番長 it投資評価のすすめ
男It番長 it投資評価のすすめ男It番長 it投資評価のすすめ
男It番長 it投資評価のすすめ小島 規彰
 
【12-D-6】 Silverlight によるハイグレードなLOB/BI実現のためのコンポーネント活用法
【12-D-6】 Silverlight によるハイグレードなLOB/BI実現のためのコンポーネント活用法【12-D-6】 Silverlight によるハイグレードなLOB/BI実現のためのコンポーネント活用法
【12-D-6】 Silverlight によるハイグレードなLOB/BI実現のためのコンポーネント活用法devsumi2009
 
IT関連コストの最適化コンサルティング・サービス
IT関連コストの最適化コンサルティング・サービスIT関連コストの最適化コンサルティング・サービス
IT関連コストの最適化コンサルティング・サービスsinrock
 
IT投資のオペレーション・マネジメントの価値
IT投資のオペレーション・マネジメントの価値IT投資のオペレーション・マネジメントの価値
IT投資のオペレーション・マネジメントの価値Tetsu Kawata
 
ITポートフォリオの公開モデルのご紹介と応用例
ITポートフォリオの公開モデルのご紹介と応用例ITポートフォリオの公開モデルのご紹介と応用例
ITポートフォリオの公開モデルのご紹介と応用例Tetsu Kawata
 

Viewers also liked (8)

【12-C-6】 飛行船萌え障害キタ━━━━ (;´Д`) ━━━━ !!!! ~テスト嫌いエンジニアに贈るテストのすすめ~
【12-C-6】 飛行船萌え障害キタ━━━━ (;´Д`) ━━━━ !!!! ~テスト嫌いエンジニアに贈るテストのすすめ~【12-C-6】 飛行船萌え障害キタ━━━━ (;´Д`) ━━━━ !!!! ~テスト嫌いエンジニアに贈るテストのすすめ~
【12-C-6】 飛行船萌え障害キタ━━━━ (;´Д`) ━━━━ !!!! ~テスト嫌いエンジニアに贈るテストのすすめ~
 
【13-E-1】 システムの見える化~エンドユーザーの立場から
【13-E-1】 システムの見える化~エンドユーザーの立場から【13-E-1】 システムの見える化~エンドユーザーの立場から
【13-E-1】 システムの見える化~エンドユーザーの立場から
 
男It番長 it投資評価のすすめ
男It番長 it投資評価のすすめ男It番長 it投資評価のすすめ
男It番長 it投資評価のすすめ
 
【12-D-6】 Silverlight によるハイグレードなLOB/BI実現のためのコンポーネント活用法
【12-D-6】 Silverlight によるハイグレードなLOB/BI実現のためのコンポーネント活用法【12-D-6】 Silverlight によるハイグレードなLOB/BI実現のためのコンポーネント活用法
【12-D-6】 Silverlight によるハイグレードなLOB/BI実現のためのコンポーネント活用法
 
IT関連コストの最適化コンサルティング・サービス
IT関連コストの最適化コンサルティング・サービスIT関連コストの最適化コンサルティング・サービス
IT関連コストの最適化コンサルティング・サービス
 
IT投資のオペレーション・マネジメントの価値
IT投資のオペレーション・マネジメントの価値IT投資のオペレーション・マネジメントの価値
IT投資のオペレーション・マネジメントの価値
 
ITポートフォリオの公開モデルのご紹介と応用例
ITポートフォリオの公開モデルのご紹介と応用例ITポートフォリオの公開モデルのご紹介と応用例
ITポートフォリオの公開モデルのご紹介と応用例
 
収益性向上可能性調査
収益性向上可能性調査収益性向上可能性調査
収益性向上可能性調査
 

Similar to 【12-B-4】 並列処理開発を支援するコンパイラの機能

Sc2009autumn 次世代Daoフレームワーク Doma
Sc2009autumn 次世代Daoフレームワーク DomaSc2009autumn 次世代Daoフレームワーク Doma
Sc2009autumn 次世代Daoフレームワーク DomaToshihiro Nakamura
 
Cloud era -『クラウド時代』マッシュアップ技術による地方からの世界発信
Cloud era -『クラウド時代』マッシュアップ技術による地方からの世界発信Cloud era -『クラウド時代』マッシュアップ技術による地方からの世界発信
Cloud era -『クラウド時代』マッシュアップ技術による地方からの世界発信Yusuke Kawasaki
 
Where20 2009report
Where20 2009reportWhere20 2009report
Where20 2009reportToru Mori
 
Oracle Unconference 松下 4/22
Oracle Unconference 松下 4/22Oracle Unconference 松下 4/22
Oracle Unconference 松下 4/22matsushita
 
QM-076-六標準差管理方法的解題邏輯與策略
QM-076-六標準差管理方法的解題邏輯與策略QM-076-六標準差管理方法的解題邏輯與策略
QM-076-六標準差管理方法的解題邏輯與策略handbook
 
081210 Idcon 04 Itoh Peopleservice
081210 Idcon 04 Itoh Peopleservice081210 Idcon 04 Itoh Peopleservice
081210 Idcon 04 Itoh PeopleserviceHiroki Itoh
 
アジャイル事例紹介 —夜のおしごと編—
アジャイル事例紹介 —夜のおしごと編—アジャイル事例紹介 —夜のおしごと編—
アジャイル事例紹介 —夜のおしごと編—Fumihiko Kinoshita
 
080718 Liberty Alliance Technical Seminar
080718 Liberty Alliance Technical Seminar080718 Liberty Alliance Technical Seminar
080718 Liberty Alliance Technical SeminarHiroki Itoh
 
【13-C-4】 「もう業務はとまらない!オフライン機能を使った業務アプリケーションの実例と最新 Curl 情報」
【13-C-4】 「もう業務はとまらない!オフライン機能を使った業務アプリケーションの実例と最新 Curl 情報」【13-C-4】 「もう業務はとまらない!オフライン機能を使った業務アプリケーションの実例と最新 Curl 情報」
【13-C-4】 「もう業務はとまらない!オフライン機能を使った業務アプリケーションの実例と最新 Curl 情報」devsumi2009
 
20090522 Candycane
20090522 Candycane20090522 Candycane
20090522 CandycaneYusuke Ando
 
テキストマイニングとNLPビジネス
テキストマイニングとNLPビジネステキストマイニングとNLPビジネス
テキストマイニングとNLPビジネスHiroshi Ono
 
Open Source Type Pad Mobile
Open Source Type Pad MobileOpen Source Type Pad Mobile
Open Source Type Pad MobileHiroshi Sakai
 
技術トレンディセミナー フレームワークとしてのTrac
技術トレンディセミナー フレームワークとしてのTrac技術トレンディセミナー フレームワークとしてのTrac
技術トレンディセミナー フレームワークとしてのTracterada
 
【13 C 2】デベロッパーに贈る!M-V-VMパターンで造るWPFアプリケーション
【13 C 2】デベロッパーに贈る!M-V-VMパターンで造るWPFアプリケーション【13 C 2】デベロッパーに贈る!M-V-VMパターンで造るWPFアプリケーション
【13 C 2】デベロッパーに贈る!M-V-VMパターンで造るWPFアプリケーションYuya Yamaki
 

Similar to 【12-B-4】 並列処理開発を支援するコンパイラの機能 (20)

Sc2009autumn 次世代Daoフレームワーク Doma
Sc2009autumn 次世代Daoフレームワーク DomaSc2009autumn 次世代Daoフレームワーク Doma
Sc2009autumn 次世代Daoフレームワーク Doma
 
Cloud era -『クラウド時代』マッシュアップ技術による地方からの世界発信
Cloud era -『クラウド時代』マッシュアップ技術による地方からの世界発信Cloud era -『クラウド時代』マッシュアップ技術による地方からの世界発信
Cloud era -『クラウド時代』マッシュアップ技術による地方からの世界発信
 
object-shapes
object-shapesobject-shapes
object-shapes
 
Reloaded
ReloadedReloaded
Reloaded
 
dRuby
dRubydRuby
dRuby
 
Where20 2009report
Where20 2009reportWhere20 2009report
Where20 2009report
 
Oracle Unconference 松下 4/22
Oracle Unconference 松下 4/22Oracle Unconference 松下 4/22
Oracle Unconference 松下 4/22
 
20210119 OCIJP#14 オラクル大橋資料
20210119 OCIJP#14 オラクル大橋資料20210119 OCIJP#14 オラクル大橋資料
20210119 OCIJP#14 オラクル大橋資料
 
QM-076-六標準差管理方法的解題邏輯與策略
QM-076-六標準差管理方法的解題邏輯與策略QM-076-六標準差管理方法的解題邏輯與策略
QM-076-六標準差管理方法的解題邏輯與策略
 
081210 Idcon 04 Itoh Peopleservice
081210 Idcon 04 Itoh Peopleservice081210 Idcon 04 Itoh Peopleservice
081210 Idcon 04 Itoh Peopleservice
 
アジャイル事例紹介 —夜のおしごと編—
アジャイル事例紹介 —夜のおしごと編—アジャイル事例紹介 —夜のおしごと編—
アジャイル事例紹介 —夜のおしごと編—
 
080718 Liberty Alliance Technical Seminar
080718 Liberty Alliance Technical Seminar080718 Liberty Alliance Technical Seminar
080718 Liberty Alliance Technical Seminar
 
【13-C-4】 「もう業務はとまらない!オフライン機能を使った業務アプリケーションの実例と最新 Curl 情報」
【13-C-4】 「もう業務はとまらない!オフライン機能を使った業務アプリケーションの実例と最新 Curl 情報」【13-C-4】 「もう業務はとまらない!オフライン機能を使った業務アプリケーションの実例と最新 Curl 情報」
【13-C-4】 「もう業務はとまらない!オフライン機能を使った業務アプリケーションの実例と最新 Curl 情報」
 
Green IT
Green ITGreen IT
Green IT
 
20090522 Candycane
20090522 Candycane20090522 Candycane
20090522 Candycane
 
テキストマイニングとNLPビジネス
テキストマイニングとNLPビジネステキストマイニングとNLPビジネス
テキストマイニングとNLPビジネス
 
sigfpai73-kaji
sigfpai73-kajisigfpai73-kaji
sigfpai73-kaji
 
Open Source Type Pad Mobile
Open Source Type Pad MobileOpen Source Type Pad Mobile
Open Source Type Pad Mobile
 
技術トレンディセミナー フレームワークとしてのTrac
技術トレンディセミナー フレームワークとしてのTrac技術トレンディセミナー フレームワークとしてのTrac
技術トレンディセミナー フレームワークとしてのTrac
 
【13 C 2】デベロッパーに贈る!M-V-VMパターンで造るWPFアプリケーション
【13 C 2】デベロッパーに贈る!M-V-VMパターンで造るWPFアプリケーション【13 C 2】デベロッパーに贈る!M-V-VMパターンで造るWPFアプリケーション
【13 C 2】デベロッパーに贈る!M-V-VMパターンで造るWPFアプリケーション
 

More from devsumi2009

【12-E-2】 SEC流品質作りこみESQR 組込みソフトウェア開発向け品質作り込みガイドの紹介
【12-E-2】 SEC流品質作りこみESQR 組込みソフトウェア開発向け品質作り込みガイドの紹介【12-E-2】 SEC流品質作りこみESQR 組込みソフトウェア開発向け品質作り込みガイドの紹介
【12-E-2】 SEC流品質作りこみESQR 組込みソフトウェア開発向け品質作り込みガイドの紹介devsumi2009
 
【12-E-4】 『脱Excel』を実現!統合プロジェクト管理パッケージ『SI Object Browser PM』を利用してIT企業も近代化しよう~PM...
【12-E-4】 『脱Excel』を実現!統合プロジェクト管理パッケージ『SI Object Browser PM』を利用してIT企業も近代化しよう~PM...【12-E-4】 『脱Excel』を実現!統合プロジェクト管理パッケージ『SI Object Browser PM』を利用してIT企業も近代化しよう~PM...
【12-E-4】 『脱Excel』を実現!統合プロジェクト管理パッケージ『SI Object Browser PM』を利用してIT企業も近代化しよう~PM...devsumi2009
 
【12-B-1】 実例で学ぶ Objective-C 2.0 と GUI の関係~ iPhone アプリ開発を視野に入れて
【12-B-1】 実例で学ぶ Objective-C 2.0 と GUI の関係~ iPhone アプリ開発を視野に入れて【12-B-1】 実例で学ぶ Objective-C 2.0 と GUI の関係~ iPhone アプリ開発を視野に入れて
【12-B-1】 実例で学ぶ Objective-C 2.0 と GUI の関係~ iPhone アプリ開発を視野に入れてdevsumi2009
 
【13-C-3】 RIA 開発をとりまく技術の進化と環境の変化
【13-C-3】 RIA 開発をとりまく技術の進化と環境の変化【13-C-3】 RIA 開発をとりまく技術の進化と環境の変化
【13-C-3】 RIA 開発をとりまく技術の進化と環境の変化devsumi2009
 
【13-C-5】 パネルディスカッション 帳票開発の肝
【13-C-5】 パネルディスカッション 帳票開発の肝【13-C-5】 パネルディスカッション 帳票開発の肝
【13-C-5】 パネルディスカッション 帳票開発の肝devsumi2009
 
【13-B-3】 企業システムをマッシュアップ型に変えるには
【13-B-3】 企業システムをマッシュアップ型に変えるには【13-B-3】 企業システムをマッシュアップ型に変えるには
【13-B-3】 企業システムをマッシュアップ型に変えるにはdevsumi2009
 
【13-C-6】 帳票開発に時間かけすぎていませんか?~もっと簡単に「作る」現場、「使う」現場の最適解を探る~
【13-C-6】 帳票開発に時間かけすぎていませんか?~もっと簡単に「作る」現場、「使う」現場の最適解を探る~【13-C-6】 帳票開発に時間かけすぎていませんか?~もっと簡単に「作る」現場、「使う」現場の最適解を探る~
【13-C-6】 帳票開発に時間かけすぎていませんか?~もっと簡単に「作る」現場、「使う」現場の最適解を探る~devsumi2009
 
【13-D-3】 プロとしてのOracleアーキテクチャ入門 ~ 番外編 ~
【13-D-3】 プロとしてのOracleアーキテクチャ入門 ~ 番外編 ~【13-D-3】 プロとしてのOracleアーキテクチャ入門 ~ 番外編 ~
【13-D-3】 プロとしてのOracleアーキテクチャ入門 ~ 番外編 ~devsumi2009
 
【13-B-4】 Java VMへの処方箋 ~先進のメモリ管理技術とは~
【13-B-4】 Java VMへの処方箋 ~先進のメモリ管理技術とは~【13-B-4】 Java VMへの処方箋 ~先進のメモリ管理技術とは~
【13-B-4】 Java VMへの処方箋 ~先進のメモリ管理技術とは~devsumi2009
 
【13-B-2】 パネルディスカッション:クラウド時代のプログラミングスタイルを語り合おう
【13-B-2】 パネルディスカッション:クラウド時代のプログラミングスタイルを語り合おう【13-B-2】 パネルディスカッション:クラウド時代のプログラミングスタイルを語り合おう
【13-B-2】 パネルディスカッション:クラウド時代のプログラミングスタイルを語り合おうdevsumi2009
 
【12-A-1】 開発プロセスの心
【12-A-1】 開発プロセスの心【12-A-1】 開発プロセスの心
【12-A-1】 開発プロセスの心devsumi2009
 
【13-C-6】 帳票開発に時間かけすぎていませんか?~もっと簡単に「作る」現場、「使う」現場の最適解を探る~
【13-C-6】 帳票開発に時間かけすぎていませんか?~もっと簡単に「作る」現場、「使う」現場の最適解を探る~【13-C-6】 帳票開発に時間かけすぎていませんか?~もっと簡単に「作る」現場、「使う」現場の最適解を探る~
【13-C-6】 帳票開発に時間かけすぎていませんか?~もっと簡単に「作る」現場、「使う」現場の最適解を探る~devsumi2009
 
【13-E-1】 システムの見える化~エンドユーザーの立場から
【13-E-1】 システムの見える化~エンドユーザーの立場から【13-E-1】 システムの見える化~エンドユーザーの立場から
【13-E-1】 システムの見える化~エンドユーザーの立場からdevsumi2009
 
【13-E-1】 システムの見える化~エンドユーザーの立場から
【13-E-1】 システムの見える化~エンドユーザーの立場から【13-E-1】 システムの見える化~エンドユーザーの立場から
【13-E-1】 システムの見える化~エンドユーザーの立場からdevsumi2009
 
【13-D-4】 アナタのアプリ性能改善の秘訣、オラクルが教えます!
【13-D-4】 アナタのアプリ性能改善の秘訣、オラクルが教えます!【13-D-4】 アナタのアプリ性能改善の秘訣、オラクルが教えます!
【13-D-4】 アナタのアプリ性能改善の秘訣、オラクルが教えます!devsumi2009
 
【13-D-1】 ERP5に見るストレージ技術
【13-D-1】 ERP5に見るストレージ技術【13-D-1】 ERP5に見るストレージ技術
【13-D-1】 ERP5に見るストレージ技術devsumi2009
 
【12-D-2】 WPF アプリケーション開発
【12-D-2】 WPF アプリケーション開発【12-D-2】 WPF アプリケーション開発
【12-D-2】 WPF アプリケーション開発devsumi2009
 
【12-D-3】 ASP.NET MVC - 概要と仕組み
【12-D-3】 ASP.NET MVC - 概要と仕組み【12-D-3】 ASP.NET MVC - 概要と仕組み
【12-D-3】 ASP.NET MVC - 概要と仕組みdevsumi2009
 
【12-E-6】 ERP導入の投資対効果 ~SAPの導入事例を元に~
【12-E-6】 ERP導入の投資対効果 ~SAPの導入事例を元に~【12-E-6】 ERP導入の投資対効果 ~SAPの導入事例を元に~
【12-E-6】 ERP導入の投資対効果 ~SAPの導入事例を元に~devsumi2009
 
【12-A-2】 ケーススタディ:不景気と戦うシステムインテグレート
【12-A-2】 ケーススタディ:不景気と戦うシステムインテグレート【12-A-2】 ケーススタディ:不景気と戦うシステムインテグレート
【12-A-2】 ケーススタディ:不景気と戦うシステムインテグレートdevsumi2009
 

More from devsumi2009 (20)

【12-E-2】 SEC流品質作りこみESQR 組込みソフトウェア開発向け品質作り込みガイドの紹介
【12-E-2】 SEC流品質作りこみESQR 組込みソフトウェア開発向け品質作り込みガイドの紹介【12-E-2】 SEC流品質作りこみESQR 組込みソフトウェア開発向け品質作り込みガイドの紹介
【12-E-2】 SEC流品質作りこみESQR 組込みソフトウェア開発向け品質作り込みガイドの紹介
 
【12-E-4】 『脱Excel』を実現!統合プロジェクト管理パッケージ『SI Object Browser PM』を利用してIT企業も近代化しよう~PM...
【12-E-4】 『脱Excel』を実現!統合プロジェクト管理パッケージ『SI Object Browser PM』を利用してIT企業も近代化しよう~PM...【12-E-4】 『脱Excel』を実現!統合プロジェクト管理パッケージ『SI Object Browser PM』を利用してIT企業も近代化しよう~PM...
【12-E-4】 『脱Excel』を実現!統合プロジェクト管理パッケージ『SI Object Browser PM』を利用してIT企業も近代化しよう~PM...
 
【12-B-1】 実例で学ぶ Objective-C 2.0 と GUI の関係~ iPhone アプリ開発を視野に入れて
【12-B-1】 実例で学ぶ Objective-C 2.0 と GUI の関係~ iPhone アプリ開発を視野に入れて【12-B-1】 実例で学ぶ Objective-C 2.0 と GUI の関係~ iPhone アプリ開発を視野に入れて
【12-B-1】 実例で学ぶ Objective-C 2.0 と GUI の関係~ iPhone アプリ開発を視野に入れて
 
【13-C-3】 RIA 開発をとりまく技術の進化と環境の変化
【13-C-3】 RIA 開発をとりまく技術の進化と環境の変化【13-C-3】 RIA 開発をとりまく技術の進化と環境の変化
【13-C-3】 RIA 開発をとりまく技術の進化と環境の変化
 
【13-C-5】 パネルディスカッション 帳票開発の肝
【13-C-5】 パネルディスカッション 帳票開発の肝【13-C-5】 パネルディスカッション 帳票開発の肝
【13-C-5】 パネルディスカッション 帳票開発の肝
 
【13-B-3】 企業システムをマッシュアップ型に変えるには
【13-B-3】 企業システムをマッシュアップ型に変えるには【13-B-3】 企業システムをマッシュアップ型に変えるには
【13-B-3】 企業システムをマッシュアップ型に変えるには
 
【13-C-6】 帳票開発に時間かけすぎていませんか?~もっと簡単に「作る」現場、「使う」現場の最適解を探る~
【13-C-6】 帳票開発に時間かけすぎていませんか?~もっと簡単に「作る」現場、「使う」現場の最適解を探る~【13-C-6】 帳票開発に時間かけすぎていませんか?~もっと簡単に「作る」現場、「使う」現場の最適解を探る~
【13-C-6】 帳票開発に時間かけすぎていませんか?~もっと簡単に「作る」現場、「使う」現場の最適解を探る~
 
【13-D-3】 プロとしてのOracleアーキテクチャ入門 ~ 番外編 ~
【13-D-3】 プロとしてのOracleアーキテクチャ入門 ~ 番外編 ~【13-D-3】 プロとしてのOracleアーキテクチャ入門 ~ 番外編 ~
【13-D-3】 プロとしてのOracleアーキテクチャ入門 ~ 番外編 ~
 
【13-B-4】 Java VMへの処方箋 ~先進のメモリ管理技術とは~
【13-B-4】 Java VMへの処方箋 ~先進のメモリ管理技術とは~【13-B-4】 Java VMへの処方箋 ~先進のメモリ管理技術とは~
【13-B-4】 Java VMへの処方箋 ~先進のメモリ管理技術とは~
 
【13-B-2】 パネルディスカッション:クラウド時代のプログラミングスタイルを語り合おう
【13-B-2】 パネルディスカッション:クラウド時代のプログラミングスタイルを語り合おう【13-B-2】 パネルディスカッション:クラウド時代のプログラミングスタイルを語り合おう
【13-B-2】 パネルディスカッション:クラウド時代のプログラミングスタイルを語り合おう
 
【12-A-1】 開発プロセスの心
【12-A-1】 開発プロセスの心【12-A-1】 開発プロセスの心
【12-A-1】 開発プロセスの心
 
【13-C-6】 帳票開発に時間かけすぎていませんか?~もっと簡単に「作る」現場、「使う」現場の最適解を探る~
【13-C-6】 帳票開発に時間かけすぎていませんか?~もっと簡単に「作る」現場、「使う」現場の最適解を探る~【13-C-6】 帳票開発に時間かけすぎていませんか?~もっと簡単に「作る」現場、「使う」現場の最適解を探る~
【13-C-6】 帳票開発に時間かけすぎていませんか?~もっと簡単に「作る」現場、「使う」現場の最適解を探る~
 
【13-E-1】 システムの見える化~エンドユーザーの立場から
【13-E-1】 システムの見える化~エンドユーザーの立場から【13-E-1】 システムの見える化~エンドユーザーの立場から
【13-E-1】 システムの見える化~エンドユーザーの立場から
 
【13-E-1】 システムの見える化~エンドユーザーの立場から
【13-E-1】 システムの見える化~エンドユーザーの立場から【13-E-1】 システムの見える化~エンドユーザーの立場から
【13-E-1】 システムの見える化~エンドユーザーの立場から
 
【13-D-4】 アナタのアプリ性能改善の秘訣、オラクルが教えます!
【13-D-4】 アナタのアプリ性能改善の秘訣、オラクルが教えます!【13-D-4】 アナタのアプリ性能改善の秘訣、オラクルが教えます!
【13-D-4】 アナタのアプリ性能改善の秘訣、オラクルが教えます!
 
【13-D-1】 ERP5に見るストレージ技術
【13-D-1】 ERP5に見るストレージ技術【13-D-1】 ERP5に見るストレージ技術
【13-D-1】 ERP5に見るストレージ技術
 
【12-D-2】 WPF アプリケーション開発
【12-D-2】 WPF アプリケーション開発【12-D-2】 WPF アプリケーション開発
【12-D-2】 WPF アプリケーション開発
 
【12-D-3】 ASP.NET MVC - 概要と仕組み
【12-D-3】 ASP.NET MVC - 概要と仕組み【12-D-3】 ASP.NET MVC - 概要と仕組み
【12-D-3】 ASP.NET MVC - 概要と仕組み
 
【12-E-6】 ERP導入の投資対効果 ~SAPの導入事例を元に~
【12-E-6】 ERP導入の投資対効果 ~SAPの導入事例を元に~【12-E-6】 ERP導入の投資対効果 ~SAPの導入事例を元に~
【12-E-6】 ERP導入の投資対効果 ~SAPの導入事例を元に~
 
【12-A-2】 ケーススタディ:不景気と戦うシステムインテグレート
【12-A-2】 ケーススタディ:不景気と戦うシステムインテグレート【12-A-2】 ケーススタディ:不景気と戦うシステムインテグレート
【12-A-2】 ケーススタディ:不景気と戦うシステムインテグレート
 

【12-B-4】 並列処理開発を支援するコンパイラの機能

  • 1. 並列処理開発を支援する コンパイラの機能 12-B-4 大野圭一 サン・マイクロシステムズ株式会社 東京ソフトウェア本部 製品開発統括部
  • 2. 目次  並列化とマルチコア  並列プログラミングモデル  共有メモリモデル  スレッド  自動並列化  OpenMP  Sun Studio Express 11/08  並列処理開発支援  Linux 版を使った Ubuntu 上でのデモ
  • 3. なぜ並列化なのか ? 並列化は最適化テクニックの一つ 目的とするところは実行速度の向上 目的のために複数のプロセッサまたはコアを使う 1コア 4コア 並列化 時 間 4コア使うことにより、コアあ たりの実行時間を1/4にする
  • 4. 並列化とは ? 処理の順序に依存性が無いことが確実であれば、 その「実行単位」は並列である 別の言い方をすれば、それらの処理の実行順序に 意味は無いということ 機械語命令の列 プログラム行の集まり 粒 アルゴリズム 度 解決しようとしている問題
  • 5. 並列プログラミングモデル  さまざまな並列プログラミングモデル  もっともよく知られているものとして:  (疎結合)クラスターシステム - 分散メモリ  socket (標準、低レベル)  MPI - Message Passing Interface (デファクト)  単一システム - 共有メモリ  POSIXスレッド(標準、低レベル)  自動並列化(コンパイラによって実現)  OpenMP(デファクト)
  • 6. MPI 分散メモリモデル 0 1 M M 2 3 M M 4 5 M M クラスターシステム
  • 7. 共有メモリモデル 共有メモリ 0 1 P M M M 単一システム
  • 8. スレッドモデル  アプリケーションを並列化するための明 確で基本的なスレッドモデル  開発者が多くの詳細な動作を定義:  スレッドの生成と管理  スレッド間で分担する作業  スレッド間の同期処理 …  このモデルの例  Javaスレッド、POSIXスレッド、 Solarisスレッド
  • 9. 自動並列化 (-xautopar)  コンパイラが並列化(ループ処理が対象)  繰り返し部分を分割して並列実行  同一のバイナリであらゆるスレッド数に対応 for (i=0; i<1000; i++) a[i] = b[i] + c[i]; OMP_NUM_THREADS=4 スレッド3 スレッド0 スレッド1 スレッド2 500-749 750-999 0-249 250-499  例: SPECfp2006で16%の向上(OMP_NUM_THREADS=2)
  • 10. 自動並列化の例 % cc -c -fast -xrestrict -xautopar -xloopinfo mxv.c quot;mxv.cquot;, line 3: PARALLELIZED, and serial version generated quot;mxv.cquot;, line 6: not parallelized, unsafe dependence (sum) 1 void mxv(int m,int n,double *a,double *b[],double *c) 2 { ループの並列化 3 for (int i=0; i<m; i++) 4 { j 5 double sum = 0.0; 6 for (int j=0; j<n; j++) i 7 sum += b[i][j]*c[j]; = * 8 a[i] = sum; 9 } 10 }
  • 11. 参考 : 自動ベクトル化 (-xvector=simd)  SIMD命令を使用するようにコンパイル  SSE2以降をサポートしたプラットフォームで 使用  ループ処理で効果的 for (i=0; i<1000; i++) a[i] = b[i] + c[i]; for (i=0; i<1000; i++) a[i:i+3] = b[i:i+3] + c[i:i+3];
  • 12. OpenMP とは ?  C/C++、Fortranで共有メモリ型並列処理 を記述するためのデファクト  構成要素  コンパイラ指示、実行時処理、環境変数  OpenMP Architecture Review Board (ARB)が仕様を管理  2008年5月にVersion 3.0リリース  http://www.openmp.org
  • 13. OpenMP の利点  優れたパフォーマンスと拡張性  適切に使用すれば …  デファクトであり成熟した技術  非常に多くのコンパイラでサポート 要求されるプログラミング作業が少ない  逐次処理版を維持  段階的な並列化をサポート  マルチコアアーキテクチャに適合   軽量、HWスレッド上での効果的な実行
  • 14. OpenMP の例 #pragma omp parallel for parallel loop for (int i=0; i<m; i++) j { double sum = 0.0; for (int j=0; j<n; j++) i = sum += b[i][j]*c[j]; * a[i] = sum; } スレッド0 スレッド1 for (i=0,1,2,3,4) for (i=5,6,7,8,9) i=0 i=5 sum = Σ b[i=0][j]*c[j] sum = Σ b[i=5][j]*c[j] a[0] = sum a[5] = sum i=1 i=6
  • 15. OpenMP 3.0  2008年5月リリース  注目すべき理由  TASKのサポート  TASKによって幅広いアプリケーションが 並列化可能に
  • 16. タスクのコンセプト タスク指定に スレッドはプー 遭遇したスレ ルの中のタスク ッドはプール を実行 に追加 開発者はアプリケーション内でタスクを指定 実行時システムがタスクを実行
  • 17. 例 - リンクリスト ........ while(my_pointer) { (void) do_independent_work (my_pointer); my_pointer = my_pointer->next ; } // End of while loop ........ OpenMP 3.0より前は並列化が難しい: 繰り返すべき回数を数えた上で、 whileループをforループに変換
  • 18. 例 - リンクリストのタスク指定 my_pointer = listhead; #pragma omp parallel { OpenMP Task #pragma omp single { while(my_pointer) { #pragma omp task firstprivate(my_pointer) { (void) do_independent_work (my_pointer); } my_pointer = my_pointer->next ; } } // End of single - implied barrier } // End of parallel region - implied barrier
  • 19. ハイブリッドモデル 分散メモリ 共有メモリ 共有メモリ 0 1 P 0 1 P M M M M M M
  • 20. Sun Studio Express 11/08  C/C++/Fortran 統合開発環境  http://developers.sun.com/sunstudio/  新機能評価のための先行リリース  正式リリース版は Sun Studio 12  サポートプラットフォーム  Solaris 10 01/06 以降  OpenSolaris 2008.05, 2008.11  SuSE Linux Enterprise Server 10  RedHat Enterprise Linux 5  Ubuntu 8.04, CentOS 5.1
  • 21. 並列処理開発の支援 自動並列化と自動ベクトル化  デバッガ  パフォーマンスアナライザ   パフォーマンス上のボトルネックを検出  スレッドアナライザ  データ競合とデッドロックの検出
  • 22. デモ  Sun Studio Express 11/08  Ubuntu 8.10 (サポート外)  以下の手順で UI の一部を日本語化 (サポート外)  Sun Studio Express “Tarfile Installer” をダウンロードして インストール http://developers.sun.com/sunstudio/downloads/express/  NetBeans 日本語化 zip ファイルをダウンロードして Sun Studio のインストールディレクトリに展開 http://ja.netbeans.org/downloads/65/index.html#jazip $ sudo mkdir -p /opt/sun $ cd /opt/sun $ ~/StudioExpress-lin-x86-2008-11-ii.sh --print-sla $ sudo ~/StudioExpress-lin-x86-2008-11-ii.sh --acept-sla $ cd /opt/sun/netbeans-6.5ss $ sudo unzip -q ~/nb65ja-200811051154.zip $ export PATH=/opt/sun/sunstudioceres/bin:$PATH
  • 23. まとめ  並列化の方法  分散メモリモデル  共有メモリモデル  自動並列化 - コンパイラによる並列化  OpenMP - 可搬で比較的容易な並列化  Sun Studio Express 11/08
  • 24. ありがとうございました  学生向け Java & Solaris 無料 E-Learning SAI (Sun Academic Initiative) http://blogs.sun.com/akihito/resource/e-learning-1.pdf