Hirdetés

2024. április 19., péntek

Gyorskeresés

Hozzászólások

(#1) Yodafon


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!

(#2) LordX válasza Yodafon (#1) üzenetére


LordX
veterán

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..

(#3) Meteorhead válasza LordX (#2) üzenetére


Meteorhead
aktív tag

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.

Copyright © 2000-2024 PROHARDVER Informatikai Kft.