[PR]
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
プログラミング、3DCGとその他いろいろについて
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
こちらも合わせてお読みください。
今回のテーマはデバイスです。
OpenCLではデバイスとはGPUかCPUのことです。
OpenCLで並列計算しようと思ったら、デバイスを列挙しなくてはいけません。
(プラットフォームのところでも同じようなことを言ったような気もしますが、プラットフォームはソフトウェアで、デバイスはそれで動くハードウェアということだと思います。)
前回出てきたプラットフォームはハードウェアのメーカーを表すようなものでした。
正確にはそのメーカーの作ったソフトウェアですが。
今回扱うデバイスは、そのメーカーの使ったハードウェアのことです。
プラットフォームから、デバイスを取得できます。
using OpenCLNet; class Program { static void Main() { foreach (var platform in OpenCL.GetPlatforms()) { foreach (var device in platform.QueryDevices(DeviceType.DEFAULT)) { System.Console.WriteLine(device); } } } }
実行結果は次のようになりました:
Name: Redwood Vendor: Advanced Micro Devices, Inc. VendorID: 4098 DriverVersion: 1124.2 (VM) Profile: FULL_PROFILE Version: OpenCL 1.2 AMD-APP (1124.2) Extensions: cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomic s cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_3d_ image_writes cl_khr_byte_addressable_store cl_khr_gl_sharing cl_ext_atomic_count ers_32 cl_amd_device_attribute_query cl_amd_vec3 cl_amd_printf cl_amd_media_ops cl_amd_media_ops2 cl_amd_popcnt cl_khr_d3d10_sharing DeviceType: GPU MaxComputeUnits: 5 MaxWorkItemDimensions: 3 MaxWorkItemSizes: 0=256 1=256 2=256 MaxWorkGroupSize: 256 PreferredVectorWidthChar: 16 PreferredVectorWidthShort: 8 PreferredVectorWidthInt: 4 PreferredVectorWidthLong: 2 PreferredVectorWidthFloat: 4 PreferredVectorWidthDouble: 0 MaxClockFrequency: 650 AddressBits: 32 MaxMemAllocSize: 536870912 ImageSupport: True MaxReadImageArgs: 128 MaxWriteImageArgs: 8 Image2DMaxWidth: 16384 Image2DMaxHeight: 16384 Image3DMaxWidth: 2048 Image3DMaxHeight: 2048 Image3DMaxDepth: 2048 MaxSamplers: 16 MaxParameterSize: 1024 MemBaseAddrAlign: 2048 MinDataTypeAlignSize: 128 SingleFPConfig: 62 GlobalMemCacheType: NONE GlobalMemCacheLineSize: 0 GlobalMemCacheSize: 0 GlobalMemSize: 1073741824 MaxConstantBufferSize: 65536 MaxConstantArgs: 8 LocalMemType: LOCAL LocalMemSize: 32768 ErrorCorrectionSupport: False ProfilingTimerResolution: 1 EndianLittle: True Available: True CompilerAvailable: True ExecutionCapabilities: 1 QueueProperties: 2
ここでつかったPlatform.QueryDevicesは次のようなメソッドです。
public Device[] QueryDevices(DeviceType deviceType);
DeviceTypeは次の5つから選びます:
cl_device_type | 解説 |
CPU | CPUです。 |
GPU | GPUです。 |
ACCELERATOR | IBM CELLなどです。 |
DEFAULT | デフォルトのデバイスです。 |
ALL | 使用可能な全てのOpenCLデバイスです。 |