OpenMP* メモリー空間とアロケーター

この機能は ifx でのみ利用できます。

変数の保存と取得のために OpenMP* はメモリー空間と呼ばれるメモリーを提供します。異なるメモリー空間は異なる特性を持っています。変数の使用方法とアクセス方法に応じて、適切なメモリー空間が決定されます。

各メモリー空間には固有のアロケーターがあり、その空間内のメモリーを割り当てたり、解放するために使用されます。アロケーターは、メモリー空間内の他の割り当てと重複しない連続した空間に変数を割り当ています。異なる特性を持つ複数のメモリー空間を単一のメモリーリソースに割り当てることも可能です。

アロケーターの動作は、指定したアロケーターの特性によって影響を受けます。アロケーターの特性、指定可能な値、およびデフォルト値を次の表に示します。

アロケーターの特性

指定可能な値

デフォルト値

access

  • all
  • cgroup
  • pteam
  • thread

all

alignment

バイト数を指定する 2 の累乗の正の整数値

1 バイト

fallback

  • abort_fb
  • allocator_fb
  • default_mem_fb
  • null_fb

default_mem_fb

fb_data

アロケーター・ハンドル

なし

partition

  • blocked
  • environment
  • interleaved
  • nearest

environment

pinned

  • true
  • false

false

pool_size

正の整数値

実装定義

sync_hint

  • contended
  • uncontended
  • private
  • serialized

contended

access 特性は、割り当てられるメモリーのアクセシビリティーを指定します。access には、次の値を指定できます。

alignment 特性は、割り当てられる変数のアライメントを指定します。変数は、少なくとも指定された値 (バイト) でアライメントされます。デフォルト設定は 1 バイトです。アライメントは、アライメント要件を指定するディレクティブや OpenMP* ランタイム・アロケーター・ルーチンによっても影響をうけます。

fallback 特性は、アロケーターが割り当て要求を満たすことができない場合の動作を示します。fallback には、次の値を指定できます。

fb_data 特性は、要求されたアロケーターが割り当て要求を満たせなかった場合に使用するフォールバック・アロケーターを指定することを可能にします。fb_data 特性で指定されたアロケーターを使用するには、失敗したアロケーターの fallback 特性が allocator_fb に設定されていなければなりません。

partition 特性は、アロケーターのメモリー空間によって表されるストレージリソース上で、割り当てられるメモリーがどのように分割されるかを示します。partition には、次の値を指定できます。

pinned 特性の値が true の場合、アロケーターによって行われた各割り当ては、解放されるまでストレージの同じ位置に残ります。デフォルト設定は false です。

pool_size の値は、割り当てが行われていない場合にアロケーターが利用可能なストレージの総バイト数です。以下は、pool_size に影響します。

sync_hint 特性は、複数のスレッドがアロケーターにアクセスする方法を示します。sync_hint には、次の値を指定できます。

OpenMP* には、事前定義された 5 つのメモリー空間があります。

OpenMP* 標準規格の拡張として、追加で以下の 3 つの事前定義済みメモリー空間があります。

以下の表は、事前定義済みメモリー・アロケーター、関連するメモリー空間、およびデフォルト以外のメモリー特性値を示しています。

アロケーター名

関連するメモリー空間

デフォルト以外の特性値

omp_default_mem_alloc

omp_default_mem_space

fallback=null_fb

omp_large_cap_mem_alloc

omp_large_cap_mem_space

なし

omp_low_lat_mem_alloc

omp_low_lat_mem_space

なし

omp_high_bw_mem_alloc

omp_high_bw_mem_space

なし

omp_const_mem_alloc

omp_const_mem_space

なし

omp_cgroup_mem_alloc

実装/システム定義

access=cgroup

omp_pteam_mem_alloc

実装/システム定義

access=pteam

omp_thread_mem_alloc

実装/システム定義

access=thread

omp_target_host_mem_alloc

omp_target_host_mem_space

なし

omp_target_shared_mem_alloc

omp_target_shared_mem_space

なし

omp_target_device_mem_alloc

omp_target_device_mem_space

なし

関連情報