@@ -728,7 +728,7 @@ public void testAtomic16() throws TornadoExecutionPlanException {
728728 }
729729
730730 @ Test
731- public void testAtomic17_getAndIncrement () throws TornadoExecutionPlanException {
731+ public void testAtomic17_getAndIncrement_kernel_api () throws TornadoExecutionPlanException {
732732 assertNotBackend (TornadoVMBackendType .PTX );
733733 assertNotBackend (TornadoVMBackendType .SPIRV );
734734
@@ -755,11 +755,41 @@ public void testAtomic17_getAndIncrement() throws TornadoExecutionPlanException
755755 WorkerGrid workerGrid = new WorkerGrid1D (32 );
756756 GridScheduler gridScheduler = new GridScheduler ("s0.t0" , workerGrid );
757757 try (TornadoExecutionPlan executionPlan = new TornadoExecutionPlan (immutableTaskGraph )) {
758- TornadoExecutionResult executionResult = executionPlan .withGridScheduler (gridScheduler ).execute ();
758+ executionPlan .withGridScheduler (gridScheduler ).execute ();
759+ }
759760
760- if (!executionResult .isReady ()) {
761- fail ();
762- }
761+ atomic17GetAndIncrement (dataSequential , jai );
762+
763+ assertEquals (jai .get (), ai .get ());
764+ assertArrayEquals (dataSequential .toHeapArray (), dataTornadoVM .toHeapArray ());
765+ }
766+
767+ @ Test
768+ public void testAtomic17_getAndIncrement_parallel_api () throws TornadoExecutionPlanException {
769+ assertNotBackend (TornadoVMBackendType .PTX );
770+ assertNotBackend (TornadoVMBackendType .SPIRV );
771+
772+ Random random = new Random ();
773+ final int size = 32 ;
774+ IntArray dataTornadoVM = new IntArray (size );
775+ IntArray dataSequential = new IntArray (size );
776+ for (int i = 0 ; i < size ; i ++) {
777+ int intRandomValue = random .nextInt ();
778+ dataTornadoVM .set (i , intRandomValue );
779+ dataSequential .set (i , intRandomValue );
780+ }
781+
782+ AtomicInteger ai = new AtomicInteger (200 );
783+ AtomicInteger jai = new AtomicInteger (200 );
784+
785+ TaskGraph taskGraph = new TaskGraph ("s0" ) //
786+ .transferToDevice (DataTransferMode .EVERY_EXECUTION , dataTornadoVM , ai ) //
787+ .task ("t0" , TestAtomics ::atomic17GetAndIncrement , dataTornadoVM , ai ) //
788+ .transferToHost (DataTransferMode .EVERY_EXECUTION , dataTornadoVM , ai ); //
789+
790+ ImmutableTaskGraph immutableTaskGraph = taskGraph .snapshot ();
791+ try (TornadoExecutionPlan executionPlan = new TornadoExecutionPlan (immutableTaskGraph )) {
792+ executionPlan .execute ();
763793 }
764794
765795 atomic17GetAndIncrement (dataSequential , jai );
@@ -769,7 +799,7 @@ public void testAtomic17_getAndIncrement() throws TornadoExecutionPlanException
769799 }
770800
771801 @ Test
772- public void testAtomic17_incrementAndGet () throws TornadoExecutionPlanException {
802+ public void testAtomic17_incrementAndGet_kernel_api () throws TornadoExecutionPlanException {
773803 assertNotBackend (TornadoVMBackendType .PTX );
774804 assertNotBackend (TornadoVMBackendType .SPIRV );
775805
@@ -796,11 +826,41 @@ public void testAtomic17_incrementAndGet() throws TornadoExecutionPlanException
796826 WorkerGrid workerGrid = new WorkerGrid1D (32 );
797827 GridScheduler gridScheduler = new GridScheduler ("s0.t0" , workerGrid );
798828 try (TornadoExecutionPlan executionPlan = new TornadoExecutionPlan (immutableTaskGraph )) {
799- TornadoExecutionResult executionResult = executionPlan .withGridScheduler (gridScheduler ).execute ();
829+ executionPlan .withGridScheduler (gridScheduler ).execute ();
830+ }
800831
801- if (!executionResult .isReady ()) {
802- fail ();
803- }
832+ atomic17IncrementAndGet (dataSequential , jai );
833+
834+ assertEquals (jai .get (), ai .get ());
835+ assertArrayEquals (dataSequential .toHeapArray (), dataTornadoVM .toHeapArray ());
836+ }
837+
838+ @ Test
839+ public void testAtomic17_incrementAndGet_parallel_api () throws TornadoExecutionPlanException {
840+ assertNotBackend (TornadoVMBackendType .PTX );
841+ assertNotBackend (TornadoVMBackendType .SPIRV );
842+
843+ Random random = new Random ();
844+ final int size = 32 ;
845+ IntArray dataTornadoVM = new IntArray (size );
846+ IntArray dataSequential = new IntArray (size );
847+ for (int i = 0 ; i < size ; i ++) {
848+ int intRandomValue = random .nextInt ();
849+ dataTornadoVM .set (i , intRandomValue );
850+ dataSequential .set (i , intRandomValue );
851+ }
852+
853+ AtomicInteger ai = new AtomicInteger (200 );
854+ AtomicInteger jai = new AtomicInteger (200 );
855+
856+ TaskGraph taskGraph = new TaskGraph ("s0" ) //
857+ .transferToDevice (DataTransferMode .EVERY_EXECUTION , dataTornadoVM , ai ) //
858+ .task ("t0" , TestAtomics ::atomic17IncrementAndGet , dataTornadoVM , ai ) //
859+ .transferToHost (DataTransferMode .EVERY_EXECUTION , dataTornadoVM , ai ); //
860+
861+ ImmutableTaskGraph immutableTaskGraph = taskGraph .snapshot ();
862+ try (TornadoExecutionPlan executionPlan = new TornadoExecutionPlan (immutableTaskGraph )) {
863+ executionPlan .execute ();
804864 }
805865
806866 atomic17IncrementAndGet (dataSequential , jai );
0 commit comments