忍者ブログ

Memeplexes

プログラミング、3DCGとその他いろいろについて

C#でOpenCL入門 (OpenCLNet版) デバイス

デバイス

こちらも合わせてお読みください。

今回のテーマはデバイスです。
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デバイスです。




拍手[0回]

PR