diff --git a/unit_test/test_HermitianMatrix.cc b/unit_test/test_HermitianMatrix.cc index 59fcf79c..687afe09 100644 --- a/unit_test/test_HermitianMatrix.cc +++ b/unit_test/test_HermitianMatrix.cc @@ -362,11 +362,6 @@ void test_HermitianMatrix_fromDevices() } } - for (int dev = 0; dev < num_devices; ++dev) { - blas::device_free(Aarray[dev], *dev_queues[dev]); - } - delete[] Aarray; - //---------- // uplo=General fails test_assert_throw( @@ -374,9 +369,20 @@ void test_HermitianMatrix_fromDevices() blas::Uplo::General, n, Aarray, num_devices, lda, nb, p, q, mpi_comm ), slate::Exception); - // free the device specific queues - for (int dev = 0; dev < num_devices; ++dev) - delete dev_queues[dev]; + //---------- + // Free arrays. + for (int dev = 0; dev < num_devices; ++dev) { + blas::device_free( Aarray[ dev ], *dev_queues[ dev ] ); + Aarray[ dev ] = nullptr; + } + delete[] Aarray; + Aarray = nullptr; + + // Free the device specific queues. + for (int dev = 0; dev < num_devices; ++dev) { + delete dev_queues[ dev ]; + dev_queues[ dev ] = nullptr; + } } //============================================================================== diff --git a/unit_test/test_SymmetricMatrix.cc b/unit_test/test_SymmetricMatrix.cc index 22ec8675..813ceeb6 100644 --- a/unit_test/test_SymmetricMatrix.cc +++ b/unit_test/test_SymmetricMatrix.cc @@ -362,11 +362,6 @@ void test_SymmetricMatrix_fromDevices() } } - for (int dev = 0; dev < num_devices; ++dev) { - blas::device_free(Aarray[dev], *dev_queues[dev]); - } - delete[] Aarray; - //---------- // uplo=General fails test_assert_throw( @@ -374,9 +369,20 @@ void test_SymmetricMatrix_fromDevices() blas::Uplo::General, n, Aarray, num_devices, lda, nb, p, q, mpi_comm ), slate::Exception); - // free the device specific queues - for (int dev = 0; dev < num_devices; ++dev) - delete dev_queues[dev]; + //---------- + // Free arrays. + for (int dev = 0; dev < num_devices; ++dev) { + blas::device_free( Aarray[ dev ], *dev_queues[ dev ] ); + Aarray[ dev ] = nullptr; + } + delete[] Aarray; + Aarray = nullptr; + + // Free the device specific queues. + for (int dev = 0; dev < num_devices; ++dev) { + delete dev_queues[ dev ]; + dev_queues[ dev ] = nullptr; + } } //==============================================================================