IBM Migration Advisor for Power Linux – Quick Fix

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