1 2 3 4 | var platforms = WebCL.getPlatformIDs(); var ctx_props = [WebCL.CL_CONTEXT_PLATFORM, platforms[0]]; var ctx = WebCL.createContextFromType(ctx_props, WebCL.CL_DEVICE_TYPE_GPU); var devices = ctx.getContextInfo(WebCL.CL_CONTEXT_DEVICES); |
1 2 3 4 5 6 7 | var program_src = "__kernel void basic(__global float4* in_vec, \ __global float4* out_vec) { \ out_vec[0] = in_vec[0]; \ }"; var program = ctx.createProgramWithSource(program_src); program.buildProgram([devices[0]], ""); var kernel = program.createKernel("basic"); |
1 2 3 4 | var in_buff = ctx.createBuffer(WebCL.CL_MEM_READ_ONLY, 16); var out_buff = ctx.createBuffer(WebCL.CL_MEM_WRITE_ONLY, 16); kernel.setKernelArg(0, in_buff); kernel.setKernelArg(1, out_buff); |
1 2 3 4 | var queue = ctx.createCommandQueue(devices[0], 0); var in_data = new Float32Array([1.5, 2.5, 3.5, 4.5]); queue.enqueueWriteBuffer(in_buff, false, 0, 16, in_data, []); queue.enqueueTask(kernel, []); |
1 2 3 4 5 | out_data = new Float32Array(4); queue.enqueueReadBuffer(out_buff, true, 0, 16, out_data, []); var output = document.getElementById("output"); output.innerHTML = "Output: " + out_data[0] + ", " + out_data[1] + ", "; output.innerHTML += out_data[2] + ", " + out_data[3]; |
1 2 3 4 5 6 7 | for(i=a; i<A; i++) { for(j=b; j<B; j++) { for(k=c; k<C; k++) { process_data(i, j, k); } } } |
1 2 3 4 5 6 7 | for(i=5; i<50; i++) { for(j=6; j<60; j++) { for(k=7; k<70; k++) { process_data(i, j, k); } } } |
1 | queue.enqueueTask(kernel, 3, [5, 6, 7], [45, 64, 73], [], []); |
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) | Powered by Discuz! 7.0.0 |