内容の正当性を保証するものではありません。また、転記等はご遠慮ください。 オリジナルの知的財産権は University of California に属します。 原文: Platforms | |
最終更新時刻 9:16 PM, Dec. 22 2003 JST
| |
プラットフォーム |
BOINCは、 各種オペレーティング・システムや各種ハードウェア・アーキテクチャのホストが広く参加できるようにと考えている。 例えば、ホストは、 様々なプロセッサー(486、ペンティアム、AMD)上の各種バージョンのウインドウズ(95、98、ME、2000、XP) で実行しているだろうし、更に多様なアーキテクチャの拡張(ATIとかNVidiaのグラフィックスコプロセッサー) を含んでいるかもしれない。 BOINCは下記目標を目指している。
プラットフォームは、実行プログラムを生成する際のターゲットになる。 全プラットフォームの情報は各プロジェクトのBOINCデータベースに保持される。 各プラットフォームは、名前(name)と 扱うことができるアーキテクチャーの範囲について記述(description)を有する。 BOINCの各プログラム(コアクライアントおよびアプリケーション)は、一つのプラットフォームに関連付けられる。
プラットフォームは、少なくともCPUアーキテクチャとオペレーティング・システムの組合せとなる。 それらを以下に例示する。
名前(name) | 記述(description) |
---|---|
windows_intelx86 | Intel x86互換のプロセッサー上で稼動する Microsoft Windows(95もしくはそれ以降) |
linux_xxx | Intel x86互換のプロセッサー上で稼動する Linux |
macos_ppc | Motorola PowerPC上で稼動する Mac OS 9.0 もしくはそれ以降 |
sparc_solaris | SPARC互換のプロセッサー上で稼動する Solaris 2.1 もしくはそれ以降 |
あるバージョンの新機能を利用するときに限り、 プラットフォームの名前に(例えばOSの)バージョンを付ける。 例えば、プラットフォーム「sparc_solaris2.8」は、 「SPARC互換のプロセッサー上で稼動する Solaris 2.8 もしくはそれ以降」を意図する。
簡素化のため、プラットフォームは相互に排他的と仮定する。 プラットフォーム「X」用のアプリケーションは、 Xと異なるプラットフォーム「Y」のコアクライアントが稼動しているホストでは使用できないと判定する。 BOINCのスケジューリングサーバ(scheduling server)は、 同一プラットフォームのアプリケーションがある場合のみ、ホストにワーク(work)を送信する。
プラットフォームの種類はなるべく少なく絞りたい。 例えば、「Solaris2.6」「Solaris2.7」の二つのプラットフォームがあると仮定しよう。 Solaris2.6用のコアクライアントが稼動しているホストでは、 Solaris2.6用のアプリケーションのみが実行できる。 この場合では、アプリケーション開発者は、たとえ 2.6用と 2.7用が同一プログラムであろうとも、 二つのバージョンを作る必要がある。
BOINCは、特定アーキテクチャーの機能を利用するアプリケーションを許容する。 ただし、アプリケーションがそのアーキテクチャの機能を自己認識する負担を負わなければならない。
言い換えると、もしも仮に「AMD 3DNow 命令セット」を利用するようなアプリケーションを製作しようと欲したとしても、 プラットフォーム「windows_amd_3dnow」を新規作成してはならない。 代わりに、プラットフォーム「windows_intelx86」用に、 「3DNow」が装備された機械かどうか判別し適切なコードに分岐するするようなバージョンを1つ[だけ]作るべきである。
統計情報を詳細に分類できるようにするために、 BOINCは計算処理が終了した個々のリザルト(result)について、以下の処理を行う。
最初に、コアクライアントは「CPUベンダー、CPUモデル、OS名およびOSバージョン」を探す。 これらの情報はホストレコード(the host record)に格納されている。
次に、特定のアーキテクチャ情報を認識するアプリケーションは
コアクライアントにその情報を渡すことができる。
これには、the BOINC API
で提供する「boinc_architecture()」関数を用いる。
コアクライアントへ渡された情報(プロジェクトごとに固有の文字列だが、典型的にはXML形式を使う)は、
リザルト(result)データベースレコードの
architecture_xml欄に記録される。
例えば、アプリケーションは下記のような文字列を渡すかもしれない。
<has_3dnow_instructions/> <graphics_board>ATI Rage 64MBこれにより、例えば「3DNow命令」を搭載したホストと他のインテル互換ホストとを比較して(訳注) 各種パフォーマンス統計をレポーティングできるかもしれない。
BOINCの各プロジェクトは自由にプロジェクト用のプラットフォームを新規作成できる。 しかしながら、混乱を回避するために、 プラットフォームの新規作成と命名は単一グループで調整することが望ましい。 (現時点ではUCBのSETI@homeプロジェクトが調整している)
各種プラットフォームの情報は、BOINCデータベースのplatformテーブルに保持される。 add ユーティリィティを使用して新規作成が可能である。