resource-types.xml
内
次のプロパティを追加します
<configuration> <property> <name>yarn.resource-types</name> <value>yarn.io/fpga</value> </property> </configuration>
Capacity Scheduler
の場合、FPGAのスケジューリング/分離を有効にするには、DominantResourceCalculator
を構成する必要があります。DominantResourceCalculator
を構成するには、次のプロパティを使用します(capacity-scheduler.xml
内)。
プロパティ | デフォルト値 |
---|---|
yarn.scheduler.capacity.resource-calculator | org.apache.hadoop.yarn.util.resource.DominantResourceCalculator |
yarn-site.xml
内<property> <name>yarn.nodemanager.resource-plugins</name> <value>yarn.io/fpga</value> </property>
これは、NodeManager側でFPGA分離モジュールを有効にするためのものです。
デフォルトでは、上記の設定が設定されている場合、YARNは自動的にFPGAを検出し構成します。管理者が特別な要件を持っている場合にのみ、次の設定を yarn-site.xml
で設定する必要があります。
1) 許可されたFPGAデバイス
プロパティ | デフォルト値 |
---|---|
yarn.nodemanager.resource-plugins.fpga.allowed-fpga-devices | auto |
YARN NodeManagerで管理できるFPGAデバイスを指定し、カンマで区切ります。FPGAデバイスの数は、スケジューリングの決定を行うためにRMに報告されます。auto(デフォルト)に設定すると、YARNはシステムからFPGAリソースを自動的に検出します。
管理者がYARNで管理するFPGAデバイスのサブセットのみを希望する場合は、FPGAデバイスを手動で指定します。現在、c-e.cfgで1つのメジャー番号のみを構成できるため、FPGAデバイスはマイナーデバイス番号で識別されます。Intelデバイスの場合、FPGAのマイナーデバイス番号を取得する一般的な方法は、「aocl diagnose」を使用して、デバイス名でueventを確認することです。
2) FPGAを検出するための実行可能ファイル
プロパティ | デフォルト値 |
---|---|
yarn.nodemanager.resource-plugins.fpga.path-to-discovery-executables |
yarn.nodemanager.resource.fpga.allowed-fpga-devices=autoが指定されている場合、YARN NodeManagerはFPGA情報を取得するためにFPGA検出バイナリ(現在はIntelFpgaOpenclPluginのみをサポート)を実行する必要があります。値が空(デフォルト)の場合、YARN NodeManagerはベンダープラグインの設定から検出可能な実行可能ファイルを見つけようとします。たとえば、「IntelFpgaOpenclPlugin」は、環境「ALTERAOCLSDKROOT」から取得したディレクトリで「aocl」を見つけようとします。
3) 使用するFPGAプラグイン
プロパティ | デフォルト値 |
---|---|
yarn.nodemanager.resource-plugins.fpga.vendor-plugin.class | org.apache.hadoop.yarn.server.nodemanager.containermanager.resourceplugin.fpga.IntelFpgaOpenclPlugin |
現在のところ、FPGA用のIntel OpenCL SDKのみがサポートされています。FPGAで実行されるIPプログラム(.aocxファイル)は、Intelプラットフォームに基づいてOpenCLで記述する必要があります。
4) CGroupsマウント FPGA分離は、FPGAデバイスごとの分離を行うためにCGroup デバイスコントローラーを使用します。CGroupsサブデバイスを自動的にマウントするには、次の設定を yarn-site.xml
に追加する必要があります。そうしないと、管理者はこの機能を使用するためにデバイスサブフォルダーを手動で作成する必要があります。
プロパティ | デフォルト値 |
---|---|
yarn.nodemanager.linux-container-executor.cgroups.mount | true |
YARN CGroups構成の詳細については、YARNでのCGroupsの使用 を参照してください。
container-executor.cfg
内一般に、次の設定を container-executor.cfg
に追加する必要があります。fpga.major-device-numberとallowed-device-minor-numbersは、オプションの許可されたデバイスです。
[fpga] module.enabled=true fpga.major-device-number=## Major device number of FPGA, by default is 246. Strongly recommend setting this fpga.allowed-device-minor-numbers=## Comma separated allowed minor device numbers, empty means all FPGA devices managed by YARN.
ユーザーがDocker以外の環境でFPGAアプリケーションを実行する必要がある場合
[cgroups] # Root of system cgroups (Cannot be empty or "/") root=/cgroup # Parent folder of YARN's CGroups yarn-hierarchy=yarn
分散シェルは現在、メモリとvcore以外の追加のリソースタイプを指定することをサポートしています
Dockerコンテナを使用せずに分散シェルを実行します(.bashrcには、SDK関連の環境変数が含まれています)
yarn jar <path/to/hadoop-yarn-applications-distributedshell.jar> \ -jar <path/to/hadoop-yarn-applications-distributedshell.jar> \ -shell_command "source /home/yarn/.bashrc && aocl diagnose" \ -container_resources memory-mb=2048,vcores=2,yarn.io/fpga=1 \ -num_containers 1
次のような出力が表示されるはずです。
aocl diagnose: Running diagnose from /home/fpga/intelFPGA_pro/17.0/hld/board/nalla_pcie/linux64/libexec ------------------------- acl0 ------------------------- Vendor: Nallatech ltd Phys Dev Name Status Information aclnalla_pcie0Passed nalla_pcie (aclnalla_pcie0) PCIe dev_id = 2494, bus:slot.func = 02:00.00, Gen3 x8 FPGA temperature = 54.4 degrees C. Total Card Power Usage = 32.4 Watts. Device Power Usage = 0.0 Watts. DIAGNOSTIC_PASSED ---------------------------------------------------------
コンテナ起動前にYARNが構成する必要があるIPを指定します。
FPGAリソースの場合、コンテナは環境変数 "REQUESTED_FPGA_IP_ID" を持つことができ、これによりYARNは起動前にIPをダウンロードしてフラッシュします。たとえば、REQUESTED_FPGA_IP_ID=“matrix_mul” の場合、コンテナのローカルディレクトリで「matirx_mul」を含む名前のIPファイル(".aocx"ファイル)を検索します(アプリケーションが最初に配布する必要があります)。現在、すべてのデバイスに対して1つのIPフラッシュのみをサポートしています。ユーザーがこの環境変数を設定しない場合、ユーザーのアプリケーションがIPファイル自体を見つけることができると仮定します。OpenCLアプリケーションは、その場でIPファイルを見つけてデバイスを再プログラムする可能性があるため、YARNでのIPの事前ダウンロードと再プログラミングは必須ではないことに注意してください。ただし、YARNがコンテナに対してこれを行うと、最速の再プログラミングパスが実現します。