Új hozzászólás Aktív témák

  • Yodafon

    senior tag

    Plíz ne legyen már olyan bonyolult használni!! :O

    Nvidia: nem debuggolja
    Amd APP Sdk: csak ati kártyán lehet debuggolni
    Intel: Opencl sdk-ja egy nagy no comment

    Meg amúgy is miért kell on the fly fordítani az opencl kódot? Miért nem lehet több platformot együtt használni ha már olyan nagy mellszélességgel terjesztik az heterogenizmust? Miért kell ilyeneket látnom benne?
    /* Create OpenCL context */
    context = clCreateContext(NULL, 1, device_id, NULL, NULL, &ret);
    checkError(ret, "clCreateContext");

    /* Create Command Queue */
    command_queue = clCreateCommandQueue(context, device_id[0], 0, &ret);
    checkError(ret, "clCreateCommandQueue");

    /* Create Memory Buffer */
    memobj = clCreateBuffer(context, CL_MEM_READ_WRITE, MEM_SIZE * sizeof(float), NULL, &ret);
    checkError(ret, "clCreateBuffer");

    /* Create Kernel Program from the source */
    program = clCreateProgramWithSource(context, 1, (const char **)&source_str,
    (const size_t *)&source_size, &ret);
    checkError(ret, "clCreateProgramWithSource");

    /* Build Kernel Program */
    ret = clBuildProgram(program, 1, device_id,
    //"-g -s \"C:\\Users\\Laci\\documents\\visual studio 2013\\Projects\\OpenCLProject1\\OpenCLProject1\\OpenCLFile.cl\""
    NULL
    ,NULL, NULL);
    checkError(ret, "clBuildProgram");

    /* Create OpenCL Kernel */
    kernel = clCreateKernel(program, "PrimeTestKernel", &ret);
    checkError(ret, "clCreateKernel");

    Miért nem lehet úgy mint a CUDA-ban:

    cudaStatus = cudaSetDevice(0);
    addKernel<<<1, size>>>(dev_c, dev_a, dev_b);

    Oszt csókolom.. Miért kell ennyire túlbonyolítani? :O

    I'm gangsta!

  • LordX

    veterán

    válasz Yodafon #1 üzenetére

    Eh?

    Az AMD SDK csak AMD kártyán debuggolás kb olyan probléma, hogy x86-ra lefordított progit csak x86-os procival lehet debuggolni, hát, irigylem a problémát. BTW, procin is lehet, és az lehet Intel is.

    Ugyanezért szerinted az AMD SDK hogy fog nVidia bytekódot fordítani, és viszont? Sehogy. Ezért kell online fordítani. Az nV meg visszafelé kompatibilis saját magával, azért van offline CUDA fordító (Ja, meg talán az előző verziót reklámozták nagy csinnadrattával, hogy most már van online fordító is. Éljen :U ). Valamint offline OpenCL fordításra ott van a SPIR. Csak "nValaki" nem támogatja, mindenki más igen.

    A kód meg hozzáértő programozó után úgy néz ki, hogy:
    try {
    cl::Program program(source_str);
    program.build("-g -s whatever");
    cl::Kernel kernel(program, "PrimeTestKernel");
    } catch (const cl::Error& err) { std::cerr << err.what(); }

    Tudni kéne használni..

  • Meteorhead

    aktív tag

    válasz LordX #2 üzenetére

    Jajj LordX, szívemből szólottál... :U

    OpenCL bonyolult meg minden, de cl.hpp óta azért közepesen használható. Csak metaprogramozásra alkalmatlan. 2.1-gyel ez lényegesen változni fog.

Új hozzászólás Aktív témák