OpenCLLink`
OpenCLLink`

OpenCLMemoryAllocate

OpenCLMemoryAllocate[t,len]

t の新しい一次元リストを割り当て,OpenCLMemoryを返す.

OpenCLMemoryAllocate[t,{d1,d2,}]

t の次元{d1,d2,}の新しいリストを割り当て,OpenCLMemoryを返す.

詳細とオプション

  • OpenCLLink アプリケーションは,Needs["OpenCLLink`"]を使ってロードしなければならない.
  • 有効なOpenCLMemoryAllocateの型:
  • IntegerRealComplex
    "Byte""Bit16""Integer"
    "Byte[2]""Bit16[2]""Integer32[2]"
    "Byte[4]""Bit16[4]""Integer32[4]"
    "Byte[8]""Bit16[8]""Integer32[8]"
    "Byte[16]""Bit16[16]""Integer32[16]"
    "UnsignedByte""UnsignedBit16""UnsignedInteger"
    "UnsignedByte[2]""UnsignedBit16[2]""UnsignedInteger[2]"
    "UnsignedByte[4]""UnsignedBit16[4]""UnsignedInteger[4]"
    "UnsignedByte[8]""UnsignedBit16[8]""UnsignedInteger[8]"
    "UnsignedByte[16]""UnsignedBit16[16]""UnsignedInteger[16]"
    "Double""Float""Integer64"
    "Double[2]""Float[2]""Integer64[2]"
    "Double[4]""Float[4]""Integer64[4]"
    "Double[8]""Float[8]""Integer64[8]"
    "Double[16]""Float[16]""Integer64[16]"
  • OpenCLMemoryは,OpenCLMemoryInformationを使って問合せを行うことができる.
  • OpenCLMemoryは,OpenCLMemoryGetを使って取り込まれる.
  • OpenCLMemoryは,OpenCLMemoryUnloadを使ってアンロードされる.
  • OpenCLMemoryAllocateは,出力メモリ等に書き込むためにメモリが割り当てられなければならない場合に使われる.
  • 使用できるオプション:
  • "Device" Automatic計算に使用するOpenCLデバイス
    "Platform" Automatic計算に使用するOpenCLプラットフォーム
    "TargetPrecision" Automatic計算に使用する精度

例題

すべて開くすべて閉じる

  (2)

まず OpenCLLink アプリケーションをロードする:

メモリを割り当て,これを OpenCLLink メモリマネージャを使って登録する:

階数3のテンソルを OpenCLLink メモリマネージャに割り当てる:

割り当てられたメモリについての情報を返す:

Realを使う場合,"Float"あるいは"Double"のいずれであれ,これはOpenCL デバイスに基づく:

この場合,システムは倍精度をサポートする.これは"TargetPrecision"オプションを使って無効にすることができる:

スコープ  (1)

入力の次元は0であってはならない.一次元の場合では許されない:

二次元の場合も同様である:

オプション  (3)

"Device"  (1)

計算に使用するデバイスは選ぶことができるが,一旦他のOpenCLの呼出しで設定されると,これを変更することはできない:

"Platform"  (1)

計算に使用するプラットフォームは選ぶことができるが,一旦他のOpenCLの呼出しで設定されると,これを変更することはできない:

"TargetPrecision"  (1)

目標精度を使って OpenCLLink にどのようにRealの型を解釈すべきかを指示することができる.デフォルトでは,システムが倍精度をサポートするかどうかを検知することによって決められる:

以下のシステムは倍精度をサポートする:

Realの型は"Double"として解釈される."Float"の使用を強制するには,"TargetPrecision""Single"に設定する:

アプリケーション  (1)

リストの全要素を0に設定する:

必要なメモリを割り当てる:

OpenCLFunctionLoadを使って関数をロードする:

OpenCLFunctionを実行する:

メモリについての情報を示す."DeviceStatus""Synchronized"である:

GPUからメモリを得る:

メモリについての情報を示す."DeviceStatus"および"HostStatus""Synchronized"である:

考えられる問題  (1)

OpenCLMemoryAllocateはメモリ要素の割当てを設定しない:

メモリの場所に保存されたものをすべて得る:

さらに割当てを行うと別の値が返されることが多い:

メモリを割り当てる.これは,先ほど割り当てられた値とは異なっている:

Wolfram Research (2010), OpenCLMemoryAllocate, Wolfram言語関数, https://reference.wolfram.com/language/OpenCLLink/ref/OpenCLMemoryAllocate.html.

テキスト

Wolfram Research (2010), OpenCLMemoryAllocate, Wolfram言語関数, https://reference.wolfram.com/language/OpenCLLink/ref/OpenCLMemoryAllocate.html.

CMS

Wolfram Language. 2010. "OpenCLMemoryAllocate." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/OpenCLLink/ref/OpenCLMemoryAllocate.html.

APA

Wolfram Language. (2010). OpenCLMemoryAllocate. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/OpenCLLink/ref/OpenCLMemoryAllocate.html

BibTeX

@misc{reference.wolfram_2024_openclmemoryallocate, author="Wolfram Research", title="{OpenCLMemoryAllocate}", year="2010", howpublished="\url{https://reference.wolfram.com/language/OpenCLLink/ref/OpenCLMemoryAllocate.html}", note=[Accessed: 18-November-2024 ]}

BibLaTeX

@online{reference.wolfram_2024_openclmemoryallocate, organization={Wolfram Research}, title={OpenCLMemoryAllocate}, year={2010}, url={https://reference.wolfram.com/language/OpenCLLink/ref/OpenCLMemoryAllocate.html}, note=[Accessed: 18-November-2024 ]}