生活随笔
收集整理的這篇文章主要介紹了
读书笔记-OpenCL编程指南 HelloWorld
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
main函數會實現或調用一組函數,完成以下操作:
可以和OpenCL入門二:OpenCL基礎概念中的代碼進行對比
OpenCL內核
__kernel
void vector_add(global
const float *a
, global
const float *b
, global
float *result
)
{ int gid
= get_global_id(0);result
[gid
] = a
[gid
] + b
[gid
];
}
————————————————
版權聲明:本文為CSDN博主「肥叔菌」的原創文章,遵循CC
4.0 BY
-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https
://blog
.csdn
.net
/asmartkiller
/article
/details
/86611145
主函數
選擇OpenCL平臺并創建一個上下文
選擇設備并創建命令隊列
創建和構建程序對象
執行內核
cl_context context
= 0;
cl_command_queue commandQueue
= 0;
cl_program program
= 0;
cl_device_id device
= 0;
cl_kernel kernel
= 0;
cl_mem memObjects
[3] = { 0, 0, 0};
cl_int errNum
;
context
= CreateContext(&device
);
commandQueue
= CreateCommandQueue(context
, device
);
program
= CreateProgram(context
, device
, "device.cl");
kernel
= clCreateKernel(program
, "vector_add", NULL);
float result
[ARRAY_SIZE
];
float a
[ARRAY_SIZE
];
float b
[ARRAY_SIZE
];
for (int i
= 0; i
< ARRAY_SIZE
; i
++)
{a
[i
] = (float)i
;b
[i
] = (float)(i
* 2);
}
if (!CreateMemObjects(context
, memObjects
, a
, b
))
{return 1;
}
errNum
= clSetKernelArg(kernel
, 0, sizeof(cl_mem
), &memObjects
[0]);
errNum
|= clSetKernelArg(kernel
, 1, sizeof(cl_mem
), &memObjects
[1]);
errNum
|= clSetKernelArg(kernel
, 2, sizeof(cl_mem
), &memObjects
[2]);
if (errNum
!= CL_SUCCESS
)
{return 1;
}
size_t gloabalWorkSize
= ARRAY_SIZE
;size_t localWorkSize
= 1;std
::cout
<< "GPU 運行開始:" << time_stamp() << std
::endl
;errNum
= clEnqueueNDRangeKernel(commandQueue
, kernel
, 1, NULL, &gloabalWorkSize
, &localWorkSize
, 0, NULL, NULL);std
::cout
<< "GPU 運行結束:" << time_stamp() << std
::endl
;
errNum
= clEnqueueReadBuffer(commandQueue
, memObjects
[2], CL_TRUE
, 0, sizeof(float) * ARRAY_SIZE
, result
, 0, NULL, NULL);
for (int i
= 0; i
< ARRAY_SIZE
; i
++){printf("i = %d:%f\n",i
,result
[i
]);}
————————————————
版權聲明:本文為CSDN博主「肥叔菌」的原創文章,遵循CC
4.0 BY
-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https
://blog
.csdn
.net
/asmartkiller
/article
/details
/86611145
檢查OpenCL中的錯誤
總結
以上是生活随笔為你收集整理的读书笔记-OpenCL编程指南 HelloWorld的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。