IBM Migration Advisorによる x86LinuxからPowerへの移植 -ご説明資料- 平成27年xx月xx日 日本アイ・ビー・エム株式会社 © 2015 IBM Corporation IBM Power Systems 目次 1. IBM Migration Advisor for Power Linux 機能概要 1. X86 vs POWER 非互換チェック機能 2. プロジェクト独自のカスタマイズ機能 3. Quick Fix機能 2. サンプルソースでの調査例 2 © 2015 IBM Corporation IBM Power Systems IBM Migration Advisor for Power Linux機能概要 機能概要 Power LinuxでC言語アプリケーション開発用のEclipseベース統合開発環境(IDE) であるIBM SDK for Power Linuxに含まれる機能の一つ C/C++プログラムソースをスキャンしてPower Linux環境に移植する場合のプラッ トフォーム非互換のコーディング箇所を洗い出すツール Version 1.6からLittle EndianのPower Linuxにも対応している チェック時にターゲットPower Linuxのエンディアンを選択可能 x86 Linux上のEclipse環境でSDK for Power Linuxのメニューから使用します x86 Linux環境のみでMigration Advisorで移植性チェック可能 x86独自機能を使っている場合が有効 SQL中心のDBのバッチプログラムなど、x86独自機能を使っていない場合、この ツールを使うメリットはありません 入手先、詳細情報はIBM のWebサイトからダウンロード可能 2013年10月 2014年10月 Version 1.4 発表 Version 1.6 発表 C/C++アプリ ケーション開発 Power Linux Cアプリケー ション開発 Eclipseベース x86 Linux IBM SDK for Power Linux Migration Advisor 3 © 2015 IBM Corporation IBM Power Systems Migration Advisorでの移植性チェック項目(1/2) 項 Migration Advisor メニュー項目 番 1 x86 specific compiler built in マイグレーションアドバイザーでの 検出されるコーディング例 チェック項目 x86 コンパイラー独自ビルトイン関数 __builtin_infq(); 2 x86 specific assembly asm( "mov %ax, 0"); __asm__("mov %ax, 0"); a:4; 変数定義での ビットフィールド使用 int int b:4; int i = 0x12345678; エンディアンの違いで結果の相違が発 if ( *(char *)&i == 0x12) { 生する可能性があるキャスト printf ("Big endian¥n"); } union { エンディアンの違いで結果の相違が発 short int val1; 生する可能性があるunion char val2; } long double型の使用箇所 “__x86__”の定義名プリプロセッ #if defined(__x86__) サー #endif ( Performance Degradation ) PowerLinuxでサポートされない syscall Intel Integrated Performance Primitives x86 Linux独自API Intel Math Kernel Library Message Passing Interface Library 3 Struct with bitfields 4 Cast with endianness 5 Union with endianness issues 6 Long double usage 7 Performance degradation 8 Syscall not available 9 Linux/x86-specific API checker 4 カスタマ Quick イズ機能 Fix機能 ● x86 インラインアセンブリ ● ● ● ● © 2015 IBM Corporation IBM Power Systems Migration Advisorでの移植性チェック項目(2/2) 項 Migration Advisor メニュー項目 番 10 Float 128 usage Transaction 11 Hardware Memory(HTM) portable Pthreads 12 Non implimentation 5 マイグレーションアドバイザーでの チェック項目 Float 128の移植性チェック 検出されるコーディング例 __float128 X86の拡張命令である、Transactional Hardware Transaction Memoryの移 Synchronization Extensions (TSX)を使用してい 植性チェック る場合検出される #include <pthread.h> void foo(){ 移植性で問題があるpthreadsの使用 pthread_id_np_t tid; tid = pthread_getthreadid_np(); } カスタマ Quick イズ機能 Fix機能 ● © 2015 IBM Corporation IBM Power Systems IBM Migration Advisor for Power Linux - カスタマイズ機能 - 移植性チェック機能の中で、以下の3つについては、移⾏プロジェクト独⾃環境に合わせ て、チェック項目のカスタマイズが可能 チェック機能 (GUIでのメニュー) カスタマイズ可能な内容 Performance degradation チェック対象の Syscall not available 以下の指定が可能 プリプロセッサーマクロを追加・削除できる 32 bit POWERアーキテクチャーでのみサポートがないSYSCALLをチェック 64 bit POWERアーキテクチャーでのみサポートがないSYSCALLをチェック 32,64 bit POWERアーキテクチャーでサポートがないSYSCALLをチェック Linux/x86-specific API checker 6 チェックする関数名をファイルから登録、 削除できる。 GUIメニューから、チェック対象の関数名、 API名を追加、削除できる デフォルトで登録されているのは以下の関数: Intel Integrated Performance Primitives 7.0 API Intel Math Kernel Library 10.3 API Message Passing Interface Library 2.2 API © 2015 IBM Corporation IBM Power Systems (ご参考)Performance Degradationチェック機能のカスタマイズ画面 チェック機能のカスタマイズ画面 (ご参考) 検索するキーワード の追加、削除が可能 7 © 2015 IBM Corporation IBM Power Systems IBM Migration Advisor for Power Linux – Quick Fix機能 機能 移植上の問題解決のヒントをpop up windowsで提供します 開発者がそのヒントが有効と判断する場合は、ヒントの修正案に従い、ソース コードをEclipse上で修正することができます quick fixes機能が使用可能なチェック項目 (1) x86 specific compiler built in (2) Performance degradation (3) Hardware Transaction Memory(HTM) ASMマクロのQuick Fixメニュー 8 © 2015 IBM Corporation IBM Power Systems (ご参考)Migration (ご参考) Advisor機能の有効化 機能の有効化 Eclipse 環境での”Migration Advisor”の機能を有効にします プロジェクトの「Properties」-> C/C++General -> Code Analysis チェックボックスの設定で非互 換検出機能をENABLE, DISABLEします チェックボックスの設定で Migration Advisor 共通機能の 設定 非互換チェック機能の有効、無効化するWindow 9 Migration Advisor機能のプロパティー設定Window © 2015 IBM Corporation IBM Power Systems Migration Advisor 調査output例(1) IBM Software Development Kit (SDK) for PowerLinuxの一つの機能である x86からPowerLinuxへのCプログラム移植性調査ツールの非互換検出例です 以下のような形式でPower Linuxへの移植性で問題になる可能性のある項目が報告されます N o Migration Advisor Type 1 Struct with BitFields 2 Union with endianness issues 3 Long double usage 4 Cast with endianness issues 5 Cast with endianness issues 6 Cast with endianness issues 10 Description Resource Path Location Check for possible problems related to this struct with bit fields Potential endianness issue when creating a Union with "char" and "short int" types. Potential migration issue due size of long double variables in Power architecture Potential endianness issues when casting from "int *" to "char *" Potential endianness issues when casting from "int *" to "char *" Potential endianness issues when casting from "_TBK1 *" to "char *" endtest4.c /loptool/src line 25 endtest4.c /loptool/src line 20 endtest4.c /loptool/src line 16 endtest4.c /loptool/src line 40 endtest4.c /loptool/src line 43 endtest4.c /loptool/src line 80 © 2015 IBM Corporation IBM Power Systems Migration Advisor 調査output例(2) EclipseでのMigration Advisor メッセージ例 Migration Advisor で検出された非互 換箇所のメッセー ジ 11 © 2015 IBM Corporation IBM Power Systems Power Linuxのエンディアンの選択方法 Migration Advisorのチェック実⾏時にポップアップWindowsが表示され Power Linuxのエンディアンを選択可能です 以下の図は同じソースでエンディアンのチェックを選択した時と、選択しない場合 のエラー報告の⽐較例です。 エンディアンの問題が10箇所レポートされています エンディアンのチェックあり 12 エンディアンのチェックなし © 2015 IBM Corporation IBM Power Systems 参考情報 Software Development Toolkit for PowerLinux Web サイト http://www-304.ibm.com/webapp/set2/sas/f/lopdiags/sdklop.html IBM SDK for Power Linux ダウンロード http://www-304.ibm.com/webapp/set2/sas/f/lopdiags/sdkdownload.html 13 © 2015 IBM Corporation IBM Power Systems ワークショップ、セッション、および資料は、IBMまたはセッション発表者によって準備され、それぞれ独⾃の⾒解を反映したものです。それら は情報提供の目的のみで提供されており、いかなる参加者に対しても法律的またはその他の指導や助⾔を意図したものではなく、またそのような 結果を⽣むものでもありません。本講演資料に含まれている情報については、完全性と正確性を期するよう努⼒しましたが、「現状のまま」提供 され、明⽰または暗⽰にかかわらずいかなる保証も伴わないものとします。本講演資料またはその他の資料の使⽤によって、あるいはその他の関 連によって、いかなる損害が生じた場合も、IBMは責任を負わないものとします。 本講演資料に含まれている内容は、IBMまたはそのサプライヤ ーやライセンス交付者からいかなる保証または表明を引きだすことを意図したものでも、IBMソフトウェアの使用を規定する適用ライセンス契約 の条項を変更することを意図したものでもなく、またそのような結果を⽣むものでもありません。 本講演資料でIBM製品、プログラム、またはサービスに言及していても、IBMが営業活動を⾏っているすべての国でそれらが使⽤可能であることを 暗⽰するものではありません。本講演資料で⾔及している製品リリース⽇付や製品機能は、市場機会またはその他の要因に基づいてIBM独自の決 定権をもっていつでも変更できるものとし、いかなる⽅法においても将来の製品または機能が使⽤可能になると確約することを意図したものでは ありません。本講演資料に含まれている内容は、参加者が開始する活動によって特定の販売、売上⾼の向上、またはその他の結果が⽣じると述べ る、または暗示することを意図したものでも、またそのような結果を生むものでもありません。 パフォーマンスは、管理された環境において標準 的なIBMベンチマークを使用した測定と予測に基づいています。ユーザーが経験する実際のスループットやパフォーマンスは、ユーザーのジョブ ・ストリームにおけるマルチプログラミングの量、⼊出⼒構成、ストレージ構成、および処理されるワークロードなどの考慮事項を含む、数多く の要因に応じて変化します。したがって、個々のユーザーがここで述べられているものと同様の結果を得られると確約するものではありません。 記述されているすべてのお客様事例は、それらのお客様がどのようにIBM製品を使⽤したか、またそれらのお客様が達成した結果の実例として⽰ されたものです。実際の環境コストおよびパフォーマンス特性は、お客様ごとに異なる場合があります。 IBM、IBM ロゴ、ibm.com、Power Systems、PureSystems、およびSystem zは、世界の多くの国で登録されたInternational Business Machines Corporationの商標です。 他の製品名およびサービス名等は、それぞれIBMまたは各社の商標である場合があります。 現時点での IBM の商標リストについては、www.ibm.com/legal/copytrade.shtmlをご覧ください。 Linuxは、Linus Torvaldsの米国およびその他の国における登録商標です。 © 2015 IBM Corporation
© Copyright 2024 ExpyDoc