web-dev-qa-db-ja.com

OpenCLの互換性をテストするにはどうすればよいですか?

Intel HD3000とi7コアが統合されたMacBookPro 13 'を持っています。
並列プログラミングを使用する必要があります。

私の教育顧問は、それが私のMacBookで動作するかどうかを教えてくれませんでした。

テスト用にラップトップで実行できるテストはありますか? +これは見つかりましたが、LinuxとWindowsSDKしかありません...おそらくLinuxバージョンはMacでも機能します。

どうすればいいですか?

14
fragant1996

vocaroの答えは絶対に正しいです。特定のグラフィックチップがOpenCLをサポートしていない場合でも、常にSnowLeopardおよびLionでCPUコンピューティングデバイスを使用できます。

次のプログラムは、特定のMacintosh上のOpenCL対応デバイスを表示します。

// clang -framework OpenCL dumpcl.c -o dumpcl && ./dumpcl

#include <stdio.h>
#include <stdlib.h>
#include <OpenCL/opencl.h>

int main(int argc, char* const argv[]) {
    cl_uint num_devices, i;
    clGetDeviceIDs(NULL, CL_DEVICE_TYPE_ALL, 0, NULL, &num_devices);

    cl_device_id* devices = calloc(sizeof(cl_device_id), num_devices);
    clGetDeviceIDs(NULL, CL_DEVICE_TYPE_ALL, num_devices, devices, NULL);

    char buf[128];
    for (i = 0; i < num_devices; i++) {
        clGetDeviceInfo(devices[i], CL_DEVICE_NAME, 128, buf, NULL);
        fprintf(stdout, "Device %s supports ", buf);

        clGetDeviceInfo(devices[i], CL_DEVICE_VERSION, 128, buf, NULL);
        fprintf(stdout, "%s\n", buf);
    }

    free(devices);
}

私のMacbookでは、これは次のようになります。

Device Intel(R) Core(TM) i7-2635QM CPU @ 2.00GHz supports OpenCL 1.1 
Device ATI Radeon HD 6490M supports OpenCL 1.1 

このプログラムを出発点として、他のデバイス情報を要求できます。 clGetDeviceInfo のKhronosAPIリファレンスが役立つはずです。

40
James

AppleはOSX Snow LeopardおよびLionに同梱されている組み込みのOpenCLプラットフォームを使用できます。次のガイドに従ってください:

http://developer.Apple.com/library/mac/#documentation/Performance/Conceptual/OpenCL_MacProgGuide/

Intel HD 3000 GPUでは機能せず、CPUのみで機能することに注意してください。

3
vocaro

Corei5-2467Mを搭載したmacbookair2011でOpenCLをテストしました。そして、Appleによって作成されたOpenCLの実装は、GPUだけでなく、CPUでは正しく機能しないと言えます。大きな問題は、ワークグループのサイズを1より大きく設定する場合です。

0
Lucas Ribeiro