@@ -274,149 +274,164 @@ end
274274
275275# ###########################################################################################
276276
277- @testset " atomics (low level)" begin
277+ # @testset "atomics (low level)" begin
278278
279- @testset " atomic_add($T )" for T in [Int32, UInt32]
280- a = oneArray ([zero (T)])
279+ @testset " atomic_add($T )" for T in [Int32, UInt32, Float32]
280+ if oneAPI. is_integrated () && T == Float32
281+ continue
282+ end
283+ a = oneArray ([zero (T)])
281284
282- function kernel (a, b)
283- oneAPI. atomic_add! (pointer (a), b)
284- return
285+ function kernel (a, b)
286+ oneAPI. atomic_add! (pointer (a), b)
287+ return
288+ end
289+
290+ @oneapi items= 256 kernel (a, one (T))
291+ @test Array (a)[1 ] == T (256 )
285292 end
286293
287- @oneapi items= 256 kernel (a, one (T))
288- @test Array (a)[1 ] == T (256 )
289- end
294+ @testset " atomic_sub($T )" for T in [Int32, UInt32, Float32]
295+ if oneAPI. is_integrated () && T == Float32
296+ continue
297+ end
298+ a = oneArray ([T (256 )])
290299
291- @testset " atomic_sub($T )" for T in [Int32, UInt32]
292- a = oneArray ([T (256 )])
300+ function kernel (a, b)
301+ oneAPI. atomic_sub! (pointer (a), b)
302+ return
303+ end
293304
294- function kernel (a, b)
295- oneAPI. atomic_sub! (pointer (a), b)
296- return
305+ @oneapi items= 256 kernel (a, one (T))
306+ @test Array (a)[1 ] == T (0 )
297307 end
298308
299- @oneapi items= 256 kernel (a, one (T))
300- @test Array (a)[1 ] == T (0 )
301- end
309+ @testset " atomic_inc($T )" for T in [Int32, UInt32]
310+ a = oneArray ([zero (T)])
302311
303- @testset " atomic_inc($T )" for T in [Int32, UInt32]
304- a = oneArray ([zero (T)])
312+ function kernel (a)
313+ oneAPI. atomic_inc! (pointer (a))
314+ return
315+ end
305316
306- function kernel (a)
307- oneAPI. atomic_inc! (pointer (a))
308- return
317+ @oneapi items= 256 kernel (a)
318+ @test Array (a)[1 ] == T (256 )
309319 end
310320
311- @oneapi items= 256 kernel (a)
312- @test Array (a)[1 ] == T (256 )
313- end
321+ @testset " atomic_dec($T )" for T in [Int32, UInt32]
322+ a = oneArray ([T (256 )])
314323
315- @testset " atomic_dec($T )" for T in [Int32, UInt32]
316- a = oneArray ([T (256 )])
324+ function kernel (a)
325+ oneAPI. atomic_dec! (pointer (a))
326+ return
327+ end
317328
318- function kernel (a)
319- oneAPI. atomic_dec! (pointer (a))
320- return
329+ @oneapi items= 256 kernel (a)
330+ @test Array (a)[1 ] == T (0 )
321331 end
322332
323- @oneapi items= 256 kernel (a)
324- @test Array (a)[1 ] == T (0 )
325- end
333+ @testset " atomic_min($T )" for T in [Int32, UInt32, Float32]
334+ if oneAPI. is_integrated () && T == Float32
335+ continue
336+ end
337+ a = oneArray ([T (256 )])
326338
327- @testset " atomic_min($T )" for T in [Int32, UInt32]
328- a = oneArray ([T (256 )])
339+ function kernel (a, T)
340+ i = get_global_id ()
341+ oneAPI. atomic_min! (pointer (a), T (i))
342+ return
343+ end
329344
330- function kernel (a, T)
331- i = get_global_id ()
332- oneAPI. atomic_min! (pointer (a), i% T)
333- return
345+ @oneapi items= 256 kernel (a, T)
346+ @test Array (a)[1 ] == one (T)
334347 end
335348
336- @oneapi items= 256 kernel (a, T)
337- @test Array (a)[1 ] == one (T)
338- end
349+ @testset " atomic_max($T )" for T in [Int32, UInt32, Float32]
350+ if oneAPI. is_integrated () && T == Float32
351+ continue
352+ end
353+ a = oneArray ([zero (T)])
339354
340- @testset " atomic_max($T )" for T in [Int32, UInt32]
341- a = oneArray ([zero (T)])
355+ function kernel (a, T)
356+ i = get_global_id ()
357+ oneAPI. atomic_max! (pointer (a), T (i))
358+ return
359+ end
342360
343- function kernel (a, T)
344- i = get_global_id ()
345- oneAPI. atomic_max! (pointer (a), i% T)
346- return
361+ @oneapi items= 256 kernel (a, T)
362+ @test Array (a)[1 ] == T (256 )
347363 end
348364
349- @oneapi items= 256 kernel (a, T)
350- @test Array (a)[1 ] == T (256 )
351- end
352-
353- @testset " atomic_and($T )" for T in [Int32, UInt32]
354- a = oneArray ([T (1023 )])
365+ @testset " atomic_and($T )" for T in [Int32, UInt32]
366+ a = oneArray ([T (1023 )])
355367
356- function kernel (a, T)
357- i = get_global_id () - 1
358- k = 1
359- for i = 1 : i
360- k *= 2
368+ function kernel (a, T)
369+ i = get_global_id () - 1
370+ k = 1
371+ for i = 1 : i
372+ k *= 2
373+ end
374+ b = 1023 - k # 1023 - 2^i
375+ oneAPI. atomic_and! (pointer (a), T (b))
376+ return
361377 end
362- b = 1023 - k # 1023 - 2^i
363- oneAPI. atomic_and! (pointer (a), T (b))
364- return
365- end
366378
367- @oneapi items= 10 kernel (a, T)
368- @test Array (a)[1 ] == zero (T)
369- end
379+ @oneapi items= 10 kernel (a, T)
380+ @test Array (a)[1 ] == zero (T)
381+ end
370382
371- @testset " atomic_or($T )" for T in [Int32, UInt32]
372- a = oneArray ([zero (T)])
383+ @testset " atomic_or($T )" for T in [Int32, UInt32]
384+ a = oneArray ([zero (T)])
373385
374- function kernel (a, T)
375- i = get_global_id ()
376- b = 1 # 2^(i-1)
377- for i = 1 : i
378- b *= 2
386+ function kernel (a, T)
387+ i = get_global_id ()
388+ b = 1 # 2^(i-1)
389+ for i = 1 : i
390+ b *= 2
391+ end
392+ b ÷= 2
393+ oneAPI. atomic_or! (pointer (a), T (b))
394+ return
379395 end
380- b ÷= 2
381- oneAPI. atomic_or! (pointer (a), T (b))
382- return
383- end
384396
385- @oneapi items= 10 kernel (a, T)
386- @test Array (a)[1 ] == T (1023 )
387- end
397+ @oneapi items= 10 kernel (a, T)
398+ @test Array (a)[1 ] == T (1023 )
399+ end
388400
389- @testset " atomic_xor($T )" for T in [Int32, UInt32]
390- a = oneArray ([T (1023 )])
401+ @testset " atomic_xor($T )" for T in [Int32, UInt32]
402+ a = oneArray ([T (1023 )])
391403
392- function kernel (a, T)
393- i = get_global_id ()
394- b = 1 # 2^(i-1)
395- for i = 1 : i
396- b *= 2
404+ function kernel (a, T)
405+ i = get_global_id ()
406+ b = 1 # 2^(i-1)
407+ for i = 1 : i
408+ b *= 2
409+ end
410+ b ÷= 2
411+ oneAPI. atomic_xor! (pointer (a), T (b))
412+ return
397413 end
398- b ÷= 2
399- oneAPI . atomic_xor! ( pointer (a) , T (b) )
400- return
414+
415+ @oneapi items = 10 kernel (a , T)
416+ @test Array (a)[ 1 ] == zero (T)
401417 end
402418
403- @oneapi items= 10 kernel (a, T)
404- @test Array (a)[1 ] == zero (T)
405- end
419+ @testset " atomic_xchg($T )" for T in [Int32, UInt32, Float32]
420+ if oneAPI. is_integrated () && T == Float32
421+ continue
422+ end
423+ a = oneArray ([zero (T)])
406424
407- @testset " atomic_xchg($T )" for T in [Int32, UInt32, Float32]
408- a = oneArray ([zero (T)])
425+ function kernel (a, b)
426+ oneAPI. atomic_xchg! (pointer (a), b)
427+ return
428+ end
409429
410- function kernel (a, b)
411- oneAPI. atomic_xchg! (pointer (a), b)
412- return
430+ @oneapi items= 256 kernel (a, one (T))
431+ @test Array (a)[1 ] == one (T)
413432 end
414433
415- @oneapi items= 256 kernel (a, one (T))
416- @test Array (a)[1 ] == one (T)
417- end
418-
419- end
434+ # end
420435
421436
422437
0 commit comments