Skip to content

Commit 5729e76

Browse files
committed
[test] Added new unit-tests for parallel api
1 parent 4219a22 commit 5729e76

File tree

1 file changed

+70
-10
lines changed
  • tornado-unittests/src/main/java/uk/ac/manchester/tornado/unittests/atomics

1 file changed

+70
-10
lines changed

tornado-unittests/src/main/java/uk/ac/manchester/tornado/unittests/atomics/TestAtomics.java

Lines changed: 70 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)