@@ -160,7 +160,7 @@ mod hl {
160
160
161
161
k. set_arg ( 0 , & v) ;
162
162
163
- queue. enqueue_async_kernel ( & k, 1isize , None , ( ) ) . wait ( ) ;
163
+ queue. enqueue_async_kernel ( & k, None , 1isize , None , ( ) ) . wait ( ) ;
164
164
165
165
let v: Vec < isize > = queue. get ( & v, ( ) ) ;
166
166
@@ -185,7 +185,7 @@ mod hl {
185
185
k. set_arg ( 0 , & v) ;
186
186
k. set_arg ( 1 , & 42isize ) ;
187
187
188
- queue. enqueue_async_kernel ( & k, 1isize , None , ( ) ) . wait ( ) ;
188
+ queue. enqueue_async_kernel ( & k, None , 1isize , None , ( ) ) . wait ( ) ;
189
189
190
190
let v: Vec < isize > = queue. get ( & v, ( ) ) ;
191
191
@@ -209,7 +209,7 @@ mod hl {
209
209
210
210
k. set_arg ( 0 , & v) ;
211
211
212
- queue. enqueue_async_kernel ( & k, 1isize , None , ( ) ) . wait ( ) ;
212
+ queue. enqueue_async_kernel ( & k, None , 1isize , None , ( ) ) . wait ( ) ;
213
213
214
214
let v: Vec < isize > = queue. get ( & v, ( ) ) ;
215
215
@@ -234,7 +234,7 @@ mod hl {
234
234
235
235
let mut e : Option < Event > = None ;
236
236
for _ in 0isize .. 8 {
237
- e = Some ( queue. enqueue_async_kernel ( & k, 1isize , None , e) ) ;
237
+ e = Some ( queue. enqueue_async_kernel ( & k, None , 1isize , None , e) ) ;
238
238
}
239
239
e. wait ( ) ;
240
240
@@ -269,15 +269,15 @@ mod hl {
269
269
k_inc_b. set_arg ( 0 , & b) ;
270
270
271
271
let event_list = [
272
- queue. enqueue_async_kernel ( & k_inc_a, 1isize , None , ( ) ) ,
273
- queue. enqueue_async_kernel ( & k_inc_b, 1isize , None , ( ) ) ,
272
+ queue. enqueue_async_kernel ( & k_inc_a, None , 1isize , None , ( ) ) ,
273
+ queue. enqueue_async_kernel ( & k_inc_b, None , 1isize , None , ( ) ) ,
274
274
] ;
275
275
276
276
k_add. set_arg ( 0 , & a) ;
277
277
k_add. set_arg ( 1 , & b) ;
278
278
k_add. set_arg ( 2 , & c) ;
279
279
280
- let event = queue. enqueue_async_kernel ( & k_add, 1isize , None , & event_list[ ..] ) ;
280
+ let event = queue. enqueue_async_kernel ( & k_add, None , 1isize , None , & event_list[ ..] ) ;
281
281
282
282
let v: Vec < isize > = queue. get ( & c, event) ;
283
283
@@ -312,7 +312,7 @@ mod hl {
312
312
313
313
k. set_arg ( 0 , & v) ;
314
314
315
- queue. enqueue_async_kernel ( & k, ( 3isize , 3isize ) , None , ( ) ) . wait ( ) ;
315
+ queue. enqueue_async_kernel ( & k, None , ( 3isize , 3isize ) , None , ( ) ) . wait ( ) ;
316
316
317
317
let v: Vec < isize > = queue. get ( & v, ( ) ) ;
318
318
@@ -385,7 +385,7 @@ mod hl {
385
385
386
386
k. set_arg ( 0 , & v) ;
387
387
388
- let e = queue. enqueue_async_kernel ( & k, 1isize , None , ( ) ) ;
388
+ let e = queue. enqueue_async_kernel ( & k, None , 1isize , None , ( ) ) ;
389
389
e. wait ( ) ;
390
390
391
391
// the that are returned are not useful for unit test, this test
@@ -469,7 +469,7 @@ mod array {
469
469
let k = prog. create_kernel ( "test" ) ;
470
470
471
471
k. set_arg ( 0 , & a_cl) ;
472
- let event = queue. enqueue_async_kernel ( & k, ( 8isize , 8isize ) , None , ( ) ) ;
472
+ let event = queue. enqueue_async_kernel ( & k, None , ( 8isize , 8isize ) , None , ( ) ) ;
473
473
queue. read ( & a_cl, & mut a, & event) ;
474
474
475
475
for x in 0usize .. 8usize {
@@ -480,6 +480,53 @@ mod array {
480
480
} )
481
481
}
482
482
483
+ #[ test]
484
+ fn kernel_2d_offset ( )
485
+ {
486
+ :: test_all_platforms_devices ( & mut |device, ctx, queue| {
487
+ let mut a = Array2D :: new ( 8 , 8 , |_, _| { ( 1 ) as i32 } ) ;
488
+ let b = Array2D :: new ( 8 , 8 , |x, y| { ( x* y) as i32 } ) ;
489
+ let a_cl = ctx. create_buffer_from ( & a, CL_MEM_READ_WRITE ) ;
490
+
491
+ let src = "__kernel void test(__global int *a, ulong size_x) { \
492
+ int x_off = get_global_offset(0); \
493
+ int x = get_global_id(0) + x_off; \
494
+ int y_off = get_global_offset(1); \
495
+ int y = get_global_id(1) + y_off; \
496
+ a[size_x*y + x] = x*y; \
497
+ }";
498
+ let prog = ctx. create_program_from_source ( src) ;
499
+ match prog. build ( device) {
500
+ Ok ( _) => ( ) ,
501
+ Err ( build_log) => {
502
+ println ! ( "Error building program:\n " ) ;
503
+ println ! ( "{}" , build_log) ;
504
+ panic ! ( "" ) ;
505
+ }
506
+ }
507
+ let k = prog. create_kernel ( "test" ) ;
508
+
509
+ k. set_arg ( 0 , & a_cl) ;
510
+ k. set_arg ( 1 , & a. width ( ) ) ;
511
+ let event = queue. enqueue_async_kernel ( & k, Some ( ( 3 , 3 ) ) , ( 5isize , 5isize ) , None , ( ) ) ;
512
+ queue. read ( & a_cl, & mut a, & event) ;
513
+
514
+ println ! ( "" ) ;
515
+ for y in 0usize .. 8usize {
516
+ for x in 0usize .. 8usize {
517
+ let _a = a. get ( x, y) ;
518
+ print ! ( "{:?}\t " , _a) ;
519
+ if x < 3 || y < 3 {
520
+ expect ! ( a. get( x, y) , 1 ) ;
521
+ } else {
522
+ expect ! ( a. get( x, y) , b. get( x, y) ) ;
523
+ }
524
+ }
525
+ println ! ( "" ) ;
526
+ }
527
+ } )
528
+ }
529
+
483
530
#[ test]
484
531
fn put_get_3d ( )
485
532
{
@@ -552,7 +599,7 @@ mod array {
552
599
let k = prog. create_kernel ( "test" ) ;
553
600
554
601
k. set_arg ( 0 , & a_cl) ;
555
- let event = queue. enqueue_async_kernel ( & k, ( 8isize , 8isize , 8isize ) , None , ( ) ) ;
602
+ let event = queue. enqueue_async_kernel ( & k, None , ( 8isize , 8isize , 8isize ) , None , ( ) ) ;
556
603
queue. read ( & a_cl, & mut a, & event) ;
557
604
558
605
for x in 0usize .. 8usize {
0 commit comments