9

opencl カーネルが CPU ではなく GPU で実際に実行されていることを 100% 確実にするにはどうすればよいでしょうか。openCL カーネルも CPU 上で実行できるため、これを理解することはできません。ここに何かポインタはありますか?

4

4 に答える 4

5

OpenCL コンテキストを作成するときに、コンピューターで使用可能なプラットフォームとデバイスを選択する必要があります。clGetPlatformInfoclGetDeviceInfoを使用して、プラットフォームとデバイスに関する情報を取得できます。NVIDIA および AMD SDK にサンプル コードがあり、プラットフォームとデバイスを一覧表示できます。

AMD (gDEBugger、Code XL)、NVIDIA (Visual Profiler)、および Intel (Intel GPA) デバイスの場合、プロファイリング ツールを使用できます。

于 2012-10-02T13:41:06.677 に答える
4

コンテキストを作成するときは、GPU のみが必要であることを指定するフラグCL_DEVICE_TYPE_GPUを渡すことができるclCreateContextFromTypeを使用します。このようなものは、GPU の使用を保証します (100% 確信できます)。

cl_uint num_platforms = 0;
clGetPlatformIDs(0, NULL, &num_platforms);
cl_platform_id* platform = malloc(sizeof(cl_platform_id) * num_platforms);
cl_context_properties cprops[3] = { CL_CONTEXT_PLATFORM, (cl_context_properties)platform[0], 0 };
ctx = clCreateContextFromType(cprops, CL_DEVICE_TYPE_GPU, NULL, NULL, &err);

コンテキストとデバイスが既にセットアップされている場合は、次のようにデバイスのタイプを照会できます。

cl_device_type dev_type;
clGetDeviceInfo(my_device, CL_DEVICE_TYPE, sizeof(dev_type), &dev_type, NULL);
if (dev_type == CL_DEVICE_TYPE_GPU) {
    printf("I'm 100%% sure this device is a GPU");
}

このデバイスで作成されたコマンド キューにエンキューするものはすべて、GPU で実行されます。

于 2012-10-03T08:36:24.063 に答える
0

TechPowerUp GPU-Z を使用するだけで、GPU にワークロードがあるかどうかを確認できます。別の解決策: デバイス タイプ CL_Device_Type_GPU で GPU を使用しているかどうかを明示的に指定できます。

于 2012-10-02T14:35:38.013 に答える
0

Macbook Pro と Mac Pro で MenuMeters を使用しています。CPU が使用されている場合は明らかです。(XCode で OpenCL を使用する場合、プロファイリング ツールが機能するかどうかはわかりません....)

于 2012-10-03T06:49:10.437 に答える