2016-04-23 181 views
0

我有點新手絲毫OpenCL和我想嘗試以下方法,使用ClMagma和OpenCL內核:的OpenCL內核+ ClMagma陣列

cl_mem A_k, B_k; 
magma_malloc(&A_k, col*row*sizeof(double)); 
magma_malloc(&B_k, col*row*sizeof(double)); 

magma_dgemm(MagmaNoTrans, MagmaTrans, row, row, col, alpha, A_k, size, row, A_k, size, row, beta, B_k, size, row, queue); 

而且他們我想用A_k和B_k一個的OpenCL內核裏面,但如果我使用類似:

status = clSetKernelArg(k_test, 0, sizeof(cl_mem), &A_k); 

我收到「CL_INVALID_MEM_OBJECT」所以我怎麼可以使用的OpenCL內核whitout移動給主機,然後再設備裏面A_k陣列(製作與clCreateBuffer新的數組)。

Alredy試圖 「clEnqueueCopyBuffer」,並沒有工作

任何幫助將非常apreciated,THX!

+0

magma_dmalloc_pinned可以工作,如果是對齊問題? –

+0

使用固定內存無變化,問題是在OpenCl內核中使用岩漿指針數組...... thx tho – Miguel

回答