root / Epidevomath / float.py @ 109
Historique | Voir | Annoter | Télécharger (652 octet)
1 | 109 | equemene | import numpy as np |
---|---|---|---|
2 | 109 | equemene | import pyopencl as cl |
3 | 109 | equemene | import pyopencl.array as cl_array |
4 | 109 | equemene | |
5 | 109 | equemene | |
6 | 109 | equemene | deviceID = 0
|
7 | 109 | equemene | platformID = 0
|
8 | 109 | equemene | workGroup=(1,1) |
9 | 109 | equemene | |
10 | 109 | equemene | N = 10
|
11 | 109 | equemene | testData = np.zeros(N, dtype=cl_array.vec.float4) |
12 | 109 | equemene | |
13 | 109 | equemene | dev = cl.get_platforms()[platformID].get_devices()[deviceID] |
14 | 109 | equemene | |
15 | 109 | equemene | ctx = cl.Context([dev]) |
16 | 109 | equemene | queue = cl.CommandQueue(ctx) |
17 | 109 | equemene | mf = cl.mem_flags |
18 | 109 | equemene | Data_In = cl.Buffer(ctx, mf.READ_WRITE, testData.nbytes) |
19 | 109 | equemene | |
20 | 109 | equemene | |
21 | 109 | equemene | prg = cl.Program(ctx, """
|
22 | 109 | equemene |
|
23 | 109 | equemene | __kernel void Pack_Cmplx( __global float4* Data_In, int N)
|
24 | 109 | equemene | {
|
25 | 109 | equemene | int gid = get_global_id(0);
|
26 | 109 | equemene |
|
27 | 109 | equemene | Data_In[gid] = 1;
|
28 | 109 | equemene | }
|
29 | 109 | equemene | """).build()
|
30 | 109 | equemene | |
31 | 109 | equemene | prg.Pack_Cmplx(queue, (N,1), workGroup, Data_In, np.int32(N))
|
32 | 109 | equemene | cl.enqueue_copy(queue, testData, Data_In) |
33 | 109 | equemene | |
34 | 109 | equemene | |
35 | 109 | equemene | print testData |