diff --git a/src/implementation/core/arrays/CMakeLists.txt b/src/implementation/core/arrays/CMakeLists.txt index d30452c0f46b8c8dc24fde1d2f3f984ddfeb3f3f..7273c791f3fb155e3eaaa19ff2979efa5282edd0 100755 --- a/src/implementation/core/arrays/CMakeLists.txt +++ b/src/implementation/core/arrays/CMakeLists.txt @@ -8,9 +8,7 @@ SET( headers tnlArray_impl.h tnlSharedArray_impl.h ) SET( CURRENT_DIR ${CMAKE_SOURCE_DIR}/src/implementation/core/arrays ) -set( common_SOURCES - ${CURRENT_DIR}/tnlArrayOperationsHost_impl.cpp - ${CURRENT_DIR}/tnlArrayOperationsCuda_impl.cpp +set( common_SOURCES ${CURRENT_DIR}/tnlSharedArray_impl.cpp ${CURRENT_DIR}/tnlMultiArray_impl.cpp ${CURRENT_DIR}/tnlArray_impl.cpp ) @@ -18,9 +16,14 @@ set( common_SOURCES IF( BUILD_CUDA ) set( tnl_implementation_core_arrays_CUDA__SOURCES ${common_SOURCES} + ${CURRENT_DIR}/tnlArrayOperationsHost_impl.cu ${CURRENT_DIR}/tnlArrayOperationsCuda_impl.cu ${CURRENT_DIR}/tnlArray_impl.cu PARENT_SCOPE ) +ELSE() + set( common_SOURCES + ${CURRENT_DIR}/tnlArrayOperationsHost_impl.cpp + ${CURRENT_DIR}/tnlArrayOperationsCuda_impl.cpp ) ENDIF() set( tnl_implementation_core_arrays_SOURCES diff --git a/src/implementation/core/arrays/tnlArrayOperationsCuda_impl.h b/src/implementation/core/arrays/tnlArrayOperationsCuda_impl.h index aef5373a423c3787dfee33280eced24e18ae6217..4a89b872177aca5807c9db32780460e57d627edf 100644 --- a/src/implementation/core/arrays/tnlArrayOperationsCuda_impl.h +++ b/src/implementation/core/arrays/tnlArrayOperationsCuda_impl.h @@ -18,6 +18,7 @@ #ifndef TNLARRAYOPERATIONSCUDA_IMPL_H_ #define TNLARRAYOPERATIONSCUDA_IMPL_H_ +#include <tnlConfig.h> #include <core/mfuncs.h> template< typename Element, typename Index > diff --git a/src/implementation/core/arrays/tnlArrayOperationsHost_impl.cu b/src/implementation/core/arrays/tnlArrayOperationsHost_impl.cu new file mode 100644 index 0000000000000000000000000000000000000000..0e5761c85696713786ef1b03deffbd152b1aee6c --- /dev/null +++ b/src/implementation/core/arrays/tnlArrayOperationsHost_impl.cu @@ -0,0 +1,151 @@ +/*************************************************************************** + tnlArrayOperationsHost_impl.cu - description + ------------------- + begin : Jul 16, 2013 + copyright : (C) 2013 by Tomas Oberhuber + email : tomas.oberhuber@fjfi.cvut.cz + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +#include <core/arrays/tnlArrayOperations.h> + +#ifdef TEMPLATE_EXPLICIT_INSTANTIATION + +template bool tnlArrayOperations< tnlHost >::allocateMemory< char, int >( char*& data, const int size ); +template bool tnlArrayOperations< tnlHost >::allocateMemory< int, int >( int*& data, const int size ); +template bool tnlArrayOperations< tnlHost >::allocateMemory< long int, int >( long int*& data, const int size ); +template bool tnlArrayOperations< tnlHost >::allocateMemory< float, int >( float*& data, const int size ); +template bool tnlArrayOperations< tnlHost >::allocateMemory< double, int >( double*& data, const int size ); +template bool tnlArrayOperations< tnlHost >::allocateMemory< long double, int >( long double*& data, const int size ); +template bool tnlArrayOperations< tnlHost >::allocateMemory< char, long int >( char*& data, const long int size ); +template bool tnlArrayOperations< tnlHost >::allocateMemory< int, long int >( int*& data, const long int size ); +template bool tnlArrayOperations< tnlHost >::allocateMemory< long int, long int >( long int*& data, const long int size ); +template bool tnlArrayOperations< tnlHost >::allocateMemory< float, long int >( float*& data, const long int size ); +template bool tnlArrayOperations< tnlHost >::allocateMemory< double, long int >( double*& data, const long int size ); +template bool tnlArrayOperations< tnlHost >::allocateMemory< long double, long int >( long double*& data, const long int size ); + +template bool tnlArrayOperations< tnlHost >::freeMemory< char >( char* data ); +template bool tnlArrayOperations< tnlHost >::freeMemory< int >( int* data ); +template bool tnlArrayOperations< tnlHost >::freeMemory< long int >( long int* data ); +template bool tnlArrayOperations< tnlHost >::freeMemory< float >( float* data ); +template bool tnlArrayOperations< tnlHost >::freeMemory< double >( double* data ); +template bool tnlArrayOperations< tnlHost >::freeMemory< long double >( long double* data ); + +template void tnlArrayOperations< tnlHost >::setMemoryElement< char >( char* data, const char& value ); +template void tnlArrayOperations< tnlHost >::setMemoryElement< int >( int* data, const int& value ); +template void tnlArrayOperations< tnlHost >::setMemoryElement< long int >( long int* data, const long int& value ); +template void tnlArrayOperations< tnlHost >::setMemoryElement< float >( float* data, const float& value ); +template void tnlArrayOperations< tnlHost >::setMemoryElement< double >( double* data, const double& value ); +template void tnlArrayOperations< tnlHost >::setMemoryElement< long double >( long double* data, const long double& value ); + +template char tnlArrayOperations< tnlHost >::getMemoryElement< char >( char* data ); +template int tnlArrayOperations< tnlHost >::getMemoryElement< int >( int* data ); +template long int tnlArrayOperations< tnlHost >::getMemoryElement< long int >( long int* data ); +template float tnlArrayOperations< tnlHost >::getMemoryElement< float >( float* data ); +template double tnlArrayOperations< tnlHost >::getMemoryElement< double >( double* data ); +template long double tnlArrayOperations< tnlHost >::getMemoryElement< long double >( long double* data ); + +template char& tnlArrayOperations< tnlHost >::getArrayElementReference< char, int >( char* data, const int i ); +template int& tnlArrayOperations< tnlHost >::getArrayElementReference< int, int >( int* data, const int i ); +template long int& tnlArrayOperations< tnlHost >::getArrayElementReference< long int, int >( long int* data, const int i ); +template float& tnlArrayOperations< tnlHost >::getArrayElementReference< float, int >( float* data, const int i ); +template double& tnlArrayOperations< tnlHost >::getArrayElementReference< double, int >( double* data, const int i ); +template long double& tnlArrayOperations< tnlHost >::getArrayElementReference< long double, int >( long double* data, const int i ); + +template char& tnlArrayOperations< tnlHost >::getArrayElementReference< char, long int >( char* data, const long int i ); +template int& tnlArrayOperations< tnlHost >::getArrayElementReference< int, long int >( int* data, const long int i ); +template long int& tnlArrayOperations< tnlHost >::getArrayElementReference< long int, long int >( long int* data, const long int i ); +template float& tnlArrayOperations< tnlHost >::getArrayElementReference< float, long int >( float* data, const long int i ); +template double& tnlArrayOperations< tnlHost >::getArrayElementReference< double, long int >( double* data, const long int i ); +template long double& tnlArrayOperations< tnlHost >::getArrayElementReference< long double, long int >( long double* data, const long int i ); + +template const char& tnlArrayOperations< tnlHost >::getArrayElementReference< char, int >( const char* data, const int i ); +template const int& tnlArrayOperations< tnlHost >::getArrayElementReference< int, int >( const int* data, const int i ); +template const long int& tnlArrayOperations< tnlHost >::getArrayElementReference< long int, int >( const long int* data, const int i ); +template const float& tnlArrayOperations< tnlHost >::getArrayElementReference< float, int >( const float* data, const int i ); +template const double& tnlArrayOperations< tnlHost >::getArrayElementReference< double, int >( const double* data, const int i ); +template const long double& tnlArrayOperations< tnlHost >::getArrayElementReference< long double, int >( const long double* data, const int i ); + +template const char& tnlArrayOperations< tnlHost >::getArrayElementReference< char, long int >( const char* data, const long int i ); +template const int& tnlArrayOperations< tnlHost >::getArrayElementReference< int, long int >( const int* data, const long int i ); +template const long int& tnlArrayOperations< tnlHost >::getArrayElementReference< long int, long int >( const long int* data, const long int i ); +template const float& tnlArrayOperations< tnlHost >::getArrayElementReference< float, long int >( const float* data, const long int i ); +template const double& tnlArrayOperations< tnlHost >::getArrayElementReference< double, long int >( const double* data, const long int i ); +template const long double& tnlArrayOperations< tnlHost >::getArrayElementReference< long double, long int >( const long double* data, const long int i ); + +template bool tnlArrayOperations< tnlHost >::copyMemory< char, tnlHost, char, int >( char* destination, const char* source, const int size ); +template bool tnlArrayOperations< tnlHost >::copyMemory< int, tnlHost, int, int >( int* destination, const int* source, const int size ); +template bool tnlArrayOperations< tnlHost >::copyMemory< long int, tnlHost, long int, int >( long int* destination, const long int* source, const int size ); +template bool tnlArrayOperations< tnlHost >::copyMemory< float, tnlHost, float, int >( float* destination, const float* source, const int size ); +template bool tnlArrayOperations< tnlHost >::copyMemory< double, tnlHost, double, int >( double* destination, const double* source, const int size ); +template bool tnlArrayOperations< tnlHost >::copyMemory< long double, tnlHost, long double, int >( long double* destination, const long double* source, const int size ); +template bool tnlArrayOperations< tnlHost >::copyMemory< char, tnlHost, char, long int >( char* destination, const char* source, const long int size ); +template bool tnlArrayOperations< tnlHost >::copyMemory< int, tnlHost, int, long int >( int* destination, const int* source, const long int size ); +template bool tnlArrayOperations< tnlHost >::copyMemory< long int, tnlHost, long int, long int >( long int* destination, const long int* source, const long int size ); +template bool tnlArrayOperations< tnlHost >::copyMemory< float, tnlHost, float, long int >( float* destination, const float* source, const long int size ); +template bool tnlArrayOperations< tnlHost >::copyMemory< double, tnlHost, double, long int >( double* destination, const double* source, const long int size ); +template bool tnlArrayOperations< tnlHost >::copyMemory< long double, tnlHost, long double, long int >( long double* destination, const long double* source, const long int size ); +template bool tnlArrayOperations< tnlHost >::copyMemory< char, tnlCuda, char, int >( char* destination, const char* source, const int size ); +template bool tnlArrayOperations< tnlHost >::copyMemory< int, tnlCuda, int, int >( int* destination, const int* source, const int size ); +template bool tnlArrayOperations< tnlHost >::copyMemory< long int, tnlCuda, long int, int >( long int* destination, const long int* source, const int size ); +template bool tnlArrayOperations< tnlHost >::copyMemory< float, tnlCuda, float, int >( float* destination, const float* source, const int size ); +template bool tnlArrayOperations< tnlHost >::copyMemory< double, tnlCuda, double, int >( double* destination, const double* source, const int size ); +template bool tnlArrayOperations< tnlHost >::copyMemory< long double, tnlCuda, long double, int >( long double* destination, const long double* source, const int size ); +template bool tnlArrayOperations< tnlHost >::copyMemory< char, tnlCuda, char, long int >( char* destination, const char* source, const long int size ); +template bool tnlArrayOperations< tnlHost >::copyMemory< int, tnlCuda, int, long int >( int* destination, const int* source, const long int size ); +template bool tnlArrayOperations< tnlHost >::copyMemory< long int, tnlCuda, long int, long int >( long int* destination, const long int* source, const long int size ); +template bool tnlArrayOperations< tnlHost >::copyMemory< float, tnlCuda, float, long int >( float* destination, const float* source, const long int size ); +template bool tnlArrayOperations< tnlHost >::copyMemory< double, tnlCuda, double, long int >( double* destination, const double* source, const long int size ); +template bool tnlArrayOperations< tnlHost >::copyMemory< long double, tnlCuda, long double, long int >( long double* destination, const long double* source, const long int size ); + +template bool tnlArrayOperations< tnlHost >::compareMemory< char, tnlHost, char, int >( const char* data1, const char* data2, const int size ); +template bool tnlArrayOperations< tnlHost >::compareMemory< int, tnlHost, int, int >( const int* data1, const int* data2, const int size ); +template bool tnlArrayOperations< tnlHost >::compareMemory< long int, tnlHost, long int, int >( const long int* data1, const long int* data2, const int size ); +template bool tnlArrayOperations< tnlHost >::compareMemory< float, tnlHost, float, int >( const float* data1, const float* data2, const int size ); +template bool tnlArrayOperations< tnlHost >::compareMemory< double, tnlHost, double, int >( const double* data1, const double* data2, const int size ); +template bool tnlArrayOperations< tnlHost >::compareMemory< long double, tnlHost, long double, int >( const long double* data1, const long double* data2, const int size ); +template bool tnlArrayOperations< tnlHost >::compareMemory< char, tnlHost, char, long int >( const char* data1, const char* data2, const long int size ); +template bool tnlArrayOperations< tnlHost >::compareMemory< int, tnlHost, int, long int >( const int* data1, const int* data2, const long int size ); +template bool tnlArrayOperations< tnlHost >::compareMemory< long int, tnlHost, long int, long int >( const long int* data1, const long int* data2, const long int size ); +template bool tnlArrayOperations< tnlHost >::compareMemory< float, tnlHost, float, long int >( const float* data1, const float* data2, const long int size ); +template bool tnlArrayOperations< tnlHost >::compareMemory< double, tnlHost, double, long int >( const double* data1, const double* data2, const long int size ); +template bool tnlArrayOperations< tnlHost >::compareMemory< long double, tnlHost, long double, long int >( const long double* data1, const long double* data2, const long int size ); +template bool tnlArrayOperations< tnlHost >::compareMemory< char, tnlCuda, char, int >( const char* data1, const char* data2, const int size ); +template bool tnlArrayOperations< tnlHost >::compareMemory< int, tnlCuda, int, int >( const int* data1, const int* data2, const int size ); +template bool tnlArrayOperations< tnlHost >::compareMemory< long int, tnlCuda, long int, int >( const long int* data1, const long int* data2, const int size ); +template bool tnlArrayOperations< tnlHost >::compareMemory< float, tnlCuda, float, int >( const float* data1, const float* data2, const int size ); +template bool tnlArrayOperations< tnlHost >::compareMemory< double, tnlCuda, double, int >( const double* data1, const double* data2, const int size ); +template bool tnlArrayOperations< tnlHost >::compareMemory< long double, tnlCuda, long double, int >( const long double* data1, const long double* data2, const int size ); +template bool tnlArrayOperations< tnlHost >::compareMemory< char, tnlCuda, char, long int >( const char* data1, const char* data2, const long int size ); +template bool tnlArrayOperations< tnlHost >::compareMemory< int, tnlCuda, int, long int >( const int* data1, const int* data2, const long int size ); +template bool tnlArrayOperations< tnlHost >::compareMemory< long int, tnlCuda, long int, long int >( const long int* data1, const long int* data2, const long int size ); +template bool tnlArrayOperations< tnlHost >::compareMemory< float, tnlCuda, float, long int >( const float* data1, const float* data2, const long int size ); +template bool tnlArrayOperations< tnlHost >::compareMemory< double, tnlCuda, double, long int >( const double* data1, const double* data2, const long int size ); +template bool tnlArrayOperations< tnlHost >::compareMemory< long double, tnlCuda, long double, long int >( const long double* data1, const long double* data2, const long int size ); + +template bool tnlArrayOperations< tnlHost >::setMemory< char, int >( char* destination, const char& value, const int size ); +template bool tnlArrayOperations< tnlHost >::setMemory< int, int >( int* destination, const int& value, const int size ); +template bool tnlArrayOperations< tnlHost >::setMemory< long int, int >( long int* destination, const long int& value, const int size ); +template bool tnlArrayOperations< tnlHost >::setMemory< float, int >( float* destination, const float& value, const int size ); +template bool tnlArrayOperations< tnlHost >::setMemory< double, int >( double* destination, const double& value, const int size ); +template bool tnlArrayOperations< tnlHost >::setMemory< long double, int >( long double* destination, const long double& value, const int size ); +template bool tnlArrayOperations< tnlHost >::setMemory< char, long int >( char* destination, const char& value, const long int size ); +template bool tnlArrayOperations< tnlHost >::setMemory< int, long int >( int* destination, const int& value, const long int size ); +template bool tnlArrayOperations< tnlHost >::setMemory< long int, long int >( long int* destination, const long int& value, const long int size ); +template bool tnlArrayOperations< tnlHost >::setMemory< float, long int >( float* destination, const float& value, const long int size ); +template bool tnlArrayOperations< tnlHost >::setMemory< double, long int >( double* destination, const double& value, const long int size ); +template bool tnlArrayOperations< tnlHost >::setMemory< long double, long int >( long double* destination, const long double& value, const long int size ); + +#endif + + + + diff --git a/src/implementation/core/arrays/tnlArrayOperationsHost_impl.h b/src/implementation/core/arrays/tnlArrayOperationsHost_impl.h index a8a321d94e13919ba9941881652c8138881e66c9..c1a1279fad91fa68a57df18a90ef076d943948be 100644 --- a/src/implementation/core/arrays/tnlArrayOperationsHost_impl.h +++ b/src/implementation/core/arrays/tnlArrayOperationsHost_impl.h @@ -17,7 +17,7 @@ #ifndef TNLARRAYOPERATIONSHOST_IMPL_H_ #define TNLARRAYOPERATIONSHOST_IMPL_H_ - +#include <tnlConfig.h> #include <core/cuda/device-check.h> template< typename Element, typename Index > @@ -85,6 +85,7 @@ bool tnlArrayOperations< tnlHost > :: copyMemory( DestinationElement* destinatio destination[ i ] = ( DestinationElement) source[ i ]; if( DestinationDevice :: getDevice() == tnlCudaDevice ) { + #ifdef HAVE_CUDA DestinationElement* buffer = new DestinationElement[ tnlCuda::getGPUTransferBufferSize() ]; if( ! buffer ) diff --git a/src/implementation/solvers/linear/krylov/tnlGMRESSolver_impl.h b/src/implementation/solvers/linear/krylov/tnlGMRESSolver_impl.h index b4549ec136f2cf4504b1e9de6f375dd5d91e948a..81393a8e09d62991146372811656a3f8b523918d 100644 --- a/src/implementation/solvers/linear/krylov/tnlGMRESSolver_impl.h +++ b/src/implementation/solvers/linear/krylov/tnlGMRESSolver_impl.h @@ -228,6 +228,7 @@ bool tnlGMRESSolver< Matrix, Preconditioner > :: solve( const Vector& b, Vector& return true; } //DBG_WAIT; + this -> refreshSolverMonitor(); if( ! this -> nextIteration() ) return false; } @@ -252,6 +253,7 @@ bool tnlGMRESSolver< Matrix, Preconditioner > :: solve( const Vector& b, Vector& beta = _r. lpNorm( ( RealType ) 2.0 ); } this -> setResidue( beta / normb ); + this -> refreshSolverMonitor(); if( ! this -> nextIteration() ) return false; } diff --git a/tests/unit-tests/core/cuda/tnlCudaReductionTester.h b/tests/unit-tests/core/cuda/tnlCudaReductionTester.h index 9ac39964adc3cfff4b32373912401bd36945874d..3fbda6feab66390d8310d42a49c37b74bb584472 100644 --- a/tests/unit-tests/core/cuda/tnlCudaReductionTester.h +++ b/tests/unit-tests/core/cuda/tnlCudaReductionTester.h @@ -309,7 +309,7 @@ class tnlCudaReductionTester : public CppUnit :: TestCase for( int i = 0; i < size; i ++ ) hostData[ i ] = 1; - copyMemoryHostToCuda( deviceData, hostData, size ); + tnlArrayOperations< tnlHost >::copyMemory< Type, tnlCuda, Type, int >( deviceData, hostData, size ); CPPUNIT_ASSERT( checkCudaDevice ); tnlParallelReductionLogicalAnd< Type, int > andOperation; @@ -323,7 +323,7 @@ class tnlCudaReductionTester : public CppUnit :: TestCase CPPUNIT_ASSERT( result == 1 ); hostData[ 0 ] = 0; - copyMemoryHostToCuda( deviceData, hostData, size ); + tnlArrayOperations< tnlHost >::copyMemory< Type, tnlCuda, Type, int >( deviceData, hostData, size ); CPPUNIT_ASSERT( checkCudaDevice ); CPPUNIT_ASSERT( ( reductionOnCudaDevice( andOperation, size, deviceData, ( Type* ) 0, result ) ) ); @@ -335,7 +335,7 @@ class tnlCudaReductionTester : public CppUnit :: TestCase for( int i = 0; i < size; i ++ ) hostData[ i ] = 0; - copyMemoryHostToCuda( deviceData, hostData, size ); + tnlArrayOperations< tnlHost >::copyMemory< Type, tnlCuda, Type, int >( deviceData, hostData, size ); CPPUNIT_ASSERT( checkCudaDevice ); CPPUNIT_ASSERT( ( reductionOnCudaDevice( andOperation, size, deviceData, ( Type* ) 0, result ) ) ); @@ -350,14 +350,14 @@ class tnlCudaReductionTester : public CppUnit :: TestCase { int size( 7628198 ); Type *hostData, *deviceData; - allocateMemoryHost( hostData, size ); - allocateMemoryCuda( deviceData, size ); + tnlArrayOperations< tnlHost >::allocateMemory( hostData, size ); + tnlArrayOperations< tnlCuda >::allocateMemory( deviceData, size ); CPPUNIT_ASSERT( checkCudaDevice ); for( int i = 0; i < size; i ++ ) hostData[ i ] = 1; - copyMemoryHostToCuda( deviceData, hostData, size ); + tnlArrayOperations< tnlHost >::copyMemory< Type, tnlCuda, Type, int >( deviceData, hostData, size ); CPPUNIT_ASSERT( checkCudaDevice ); tnlParallelReductionLogicalAnd< Type, int > andOperation; @@ -371,7 +371,7 @@ class tnlCudaReductionTester : public CppUnit :: TestCase CPPUNIT_ASSERT( result == 1 ); hostData[ 0 ] = 0; - copyMemoryHostToCuda( deviceData, hostData, size ); + tnlArrayOperations< tnlHost >::copyMemory< Type, tnlCuda, Type, int >( deviceData, hostData, size ); CPPUNIT_ASSERT( checkCudaDevice ); CPPUNIT_ASSERT( ( reductionOnCudaDevice( andOperation, size, deviceData, ( Type* ) 0, result ) ) ); @@ -383,7 +383,7 @@ class tnlCudaReductionTester : public CppUnit :: TestCase for( int i = 0; i < size; i ++ ) hostData[ i ] = 0; - copyMemoryHostToCuda( deviceData, hostData, size ); + tnlArrayOperations< tnlHost >::copyMemory< Type, tnlCuda, Type, int >( deviceData, hostData, size ); CPPUNIT_ASSERT( checkCudaDevice ); CPPUNIT_ASSERT( ( reductionOnCudaDevice( andOperation, size, deviceData, ( Type* ) 0, result ) ) ); @@ -399,16 +399,16 @@ class tnlCudaReductionTester : public CppUnit :: TestCase const int size( 125 ); Type *hostData1, *hostData2, *deviceData1, *deviceData2; - allocateMemoryHost( hostData1, size ); - allocateMemoryHost( hostData2, size ); - allocateMemoryCuda( deviceData1, size ); - allocateMemoryCuda( deviceData2, size ); + tnlArrayOperations< tnlHost >::allocateMemory( hostData1, size ); + tnlArrayOperations< tnlHost >::allocateMemory( hostData2, size ); + tnlArrayOperations< tnlCuda >::allocateMemory( deviceData1, size ); + tnlArrayOperations< tnlCuda >::allocateMemory( deviceData2, size ); CPPUNIT_ASSERT( checkCudaDevice ); for( int i = 0; i < size; i ++ ) hostData1[ i ] = hostData2[ i ] = 1; - copyMemoryHostToCuda( deviceData1, hostData1, size ); - copyMemoryHostToCuda( deviceData2, hostData2, size ); + tnlArrayOperations< tnlHost >::copyMemory< Type, tnlCuda, Type, int >( deviceData1, hostData1, size ); + tnlArrayOperations< tnlHost >::copyMemory< Type, tnlCuda, Type, int >( deviceData2, hostData2, size ); CPPUNIT_ASSERT( checkCudaDevice ); bool result( false ); @@ -424,7 +424,7 @@ class tnlCudaReductionTester : public CppUnit :: TestCase CPPUNIT_ASSERT( result == false ); hostData1[ 0 ] = 0; - copyMemoryHostToCuda( deviceData1, hostData1, size ); + tnlArrayOperations< tnlHost >::copyMemory< Type, tnlCuda, Type, int >( deviceData1, hostData1, size ); CPPUNIT_ASSERT( checkCudaDevice ); CPPUNIT_ASSERT( @@ -437,7 +437,7 @@ class tnlCudaReductionTester : public CppUnit :: TestCase for( int i = 0; i < size; i ++ ) hostData1[ i ] = 0; - copyMemoryHostToCuda( deviceData1, hostData1, size ); + tnlArrayOperations< tnlHost >::copyMemory< Type, tnlCuda, Type, int >( deviceData1, hostData1, size ); CPPUNIT_ASSERT( checkCudaDevice ); CPPUNIT_ASSERT( @@ -455,16 +455,16 @@ class tnlCudaReductionTester : public CppUnit :: TestCase const int size( 1258976 ); Type *hostData1, *hostData2, *deviceData1, *deviceData2; - allocateMemoryHost( hostData1, size ); - allocateMemoryHost( hostData2, size ); - allocateMemoryCuda( deviceData1, size ); - allocateMemoryCuda( deviceData2, size ); + tnlArrayOperations< tnlHost >::allocateMemory( hostData1, size ); + tnlArrayOperations< tnlHost >::allocateMemory( hostData2, size ); + tnlArrayOperations< tnlCuda >::allocateMemory( deviceData1, size ); + tnlArrayOperations< tnlCuda >::allocateMemory( deviceData2, size ); CPPUNIT_ASSERT( checkCudaDevice ); for( int i = 0; i < size; i ++ ) hostData1[ i ] = hostData2[ i ] = 1; - copyMemoryHostToCuda( deviceData1, hostData1, size ); - copyMemoryHostToCuda( deviceData2, hostData2, size ); + tnlArrayOperations< tnlHost >::copyMemory< Type, tnlCuda, Type, int >( deviceData1, hostData1, size ); + tnlArrayOperations< tnlHost >::copyMemory< Type, tnlCuda, Type, int >( deviceData2, hostData2, size ); CPPUNIT_ASSERT( checkCudaDevice ); bool result( false ); @@ -480,7 +480,7 @@ class tnlCudaReductionTester : public CppUnit :: TestCase CPPUNIT_ASSERT( result == false ); hostData1[ 0 ] = 0; - copyMemoryHostToCuda( deviceData1, hostData1, size ); + tnlArrayOperations< tnlHost >::copyMemory< Type, tnlCuda, Type, int >( deviceData1, hostData1, size ); CPPUNIT_ASSERT( checkCudaDevice ); CPPUNIT_ASSERT( @@ -493,7 +493,7 @@ class tnlCudaReductionTester : public CppUnit :: TestCase for( int i = 0; i < size; i ++ ) hostData1[ i ] = 0; - copyMemoryHostToCuda( deviceData1, hostData1, size ); + tnlArrayOperations< tnlHost >::copyMemory< Type, tnlCuda, Type, int >( deviceData1, hostData1, size ); CPPUNIT_ASSERT( checkCudaDevice ); CPPUNIT_ASSERT( @@ -511,10 +511,10 @@ class tnlCudaReductionTester : public CppUnit :: TestCase const int size( 125 ); Type *hostData1, *hostData2, *deviceData1, *deviceData2; - allocateMemoryHost( hostData1, size ); - allocateMemoryHost( hostData2, size ); - allocateMemoryCuda( deviceData1, size ); - allocateMemoryCuda( deviceData2, size ); + tnlArrayOperations< tnlHost >::allocateMemory( hostData1, size ); + tnlArrayOperations< tnlHost >::allocateMemory( hostData2, size ); + tnlArrayOperations< tnlCuda >::allocateMemory( deviceData1, size ); + tnlArrayOperations< tnlCuda >::allocateMemory( deviceData2, size ); CPPUNIT_ASSERT( checkCudaDevice ); hostData1[ 0 ] = 0; @@ -526,8 +526,8 @@ class tnlCudaReductionTester : public CppUnit :: TestCase hostData2[ i ] = -hostData2[ i - 1 ]; sdot += hostData1[ i ] * hostData2[ i ]; } - copyMemoryHostToCuda( deviceData1, hostData1, size ); - copyMemoryHostToCuda( deviceData2, hostData2, size ); + tnlArrayOperations< tnlHost >::copyMemory< Type, tnlCuda, Type, int >( deviceData1, hostData1, size ); + tnlArrayOperations< tnlHost >::copyMemory< Type, tnlCuda, Type, int >( deviceData2, hostData2, size ); CPPUNIT_ASSERT( checkCudaDevice ); Type result( 0.0 ); @@ -545,10 +545,10 @@ class tnlCudaReductionTester : public CppUnit :: TestCase const int size( 125789 ); Type *hostData1, *hostData2, *deviceData1, *deviceData2; - allocateMemoryHost( hostData1, size ); - allocateMemoryHost( hostData2, size ); - allocateMemoryCuda( deviceData1, size ); - allocateMemoryCuda( deviceData2, size ); + tnlArrayOperations< tnlHost >::allocateMemory( hostData1, size ); + tnlArrayOperations< tnlHost >::allocateMemory( hostData2, size ); + tnlArrayOperations< tnlCuda >::allocateMemory( deviceData1, size ); + tnlArrayOperations< tnlCuda >::allocateMemory( deviceData2, size ); CPPUNIT_ASSERT( checkCudaDevice ); hostData1[ 0 ] = 0; @@ -560,8 +560,8 @@ class tnlCudaReductionTester : public CppUnit :: TestCase hostData2[ i ] = -hostData2[ i - 1 ]; sdot += hostData1[ i ] * hostData2[ i ]; } - copyMemoryHostToCuda( deviceData1, hostData1, size ); - copyMemoryHostToCuda( deviceData2, hostData2, size ); + tnlArrayOperations< tnlHost >::copyMemory< Type, tnlCuda, Type, int >( deviceData1, hostData1, size ); + tnlArrayOperations< tnlHost >::copyMemory< Type, tnlCuda, Type, int >( deviceData2, hostData2, size ); CPPUNIT_ASSERT( checkCudaDevice ); Type result( 0.0 ); @@ -578,12 +578,12 @@ class tnlCudaReductionTester : public CppUnit :: TestCase const int size( 123 ); Type *hostZeros, *hostOnes, *hostLinear, *deviceZeros, *deviceOnes, *deviceLinear; - allocateMemoryHost( hostZeros, size ); - allocateMemoryHost( hostOnes, size ); - allocateMemoryHost( hostLinear, size ); - allocateMemoryCuda( deviceZeros, size ); - allocateMemoryCuda( deviceOnes, size ); - allocateMemoryCuda( deviceLinear, size ); + tnlArrayOperations< tnlHost >::allocateMemory( hostZeros, size ); + tnlArrayOperations< tnlHost >::allocateMemory( hostOnes, size ); + tnlArrayOperations< tnlHost >::allocateMemory( hostLinear, size ); + tnlArrayOperations< tnlCuda >::allocateMemory( deviceZeros, size ); + tnlArrayOperations< tnlCuda >::allocateMemory( deviceOnes, size ); + tnlArrayOperations< tnlCuda >::allocateMemory( deviceLinear, size ); CPPUNIT_ASSERT( checkCudaDevice ); for( int i = 0; i < size; i ++ ) @@ -593,9 +593,9 @@ class tnlCudaReductionTester : public CppUnit :: TestCase hostLinear[ i ] = i; } - copyMemoryHostToCuda( deviceZeros, hostZeros, size ); - copyMemoryHostToCuda( deviceOnes, hostOnes, size ); - copyMemoryHostToCuda( deviceLinear, hostLinear, size ); + tnlArrayOperations< tnlHost >::copyMemory< Type, tnlCuda, Type, int >( deviceZeros, hostZeros, size ); + tnlArrayOperations< tnlHost >::copyMemory< Type, tnlCuda, Type, int >( deviceOnes, hostOnes, size ); + tnlArrayOperations< tnlHost >::copyMemory< Type, tnlCuda, Type, int >( deviceLinear, hostLinear, size ); CPPUNIT_ASSERT( checkCudaDevice ); tnlParallelReductionDiffSum< Type, int > diffSumOp; @@ -680,12 +680,12 @@ class tnlCudaReductionTester : public CppUnit :: TestCase ( reductionOnCudaDevice( diffAbsMaxOp, size, deviceZeros, deviceLinear, result ) ) ); CPPUNIT_ASSERT( result == size - 1 ); - freeMemoryHost( hostZeros ); - freeMemoryHost( hostOnes ); - freeMemoryHost( hostLinear ); - freeMemoryCuda( deviceZeros ); - freeMemoryCuda( deviceOnes ); - freeMemoryCuda( deviceLinear ); + tnlArrayOperations< tnlHost >::freeMemory( hostZeros ); + tnlArrayOperations< tnlHost >::freeMemory( hostOnes ); + tnlArrayOperations< tnlHost >::freeMemory( hostLinear ); + tnlArrayOperations< tnlCuda >::freeMemory( deviceZeros ); + tnlArrayOperations< tnlCuda >::freeMemory( deviceOnes ); + tnlArrayOperations< tnlCuda >::freeMemory( deviceLinear ); } @@ -695,12 +695,12 @@ class tnlCudaReductionTester : public CppUnit :: TestCase const int size( 12387 ); Type *hostZeros, *hostOnes, *hostLinear, *deviceZeros, *deviceOnes, *deviceLinear; - allocateMemoryHost( hostZeros, size ); - allocateMemoryHost( hostOnes, size ); - allocateMemoryHost( hostLinear, size ); - allocateMemoryCuda( deviceZeros, size ); - allocateMemoryCuda( deviceOnes, size ); - allocateMemoryCuda( deviceLinear, size ); + tnlArrayOperations< tnlHost >::allocateMemory( hostZeros, size ); + tnlArrayOperations< tnlHost >::allocateMemory( hostOnes, size ); + tnlArrayOperations< tnlHost >::allocateMemory( hostLinear, size ); + tnlArrayOperations< tnlCuda >::allocateMemory( deviceZeros, size ); + tnlArrayOperations< tnlCuda >::allocateMemory( deviceOnes, size ); + tnlArrayOperations< tnlCuda >::allocateMemory( deviceLinear, size ); CPPUNIT_ASSERT( checkCudaDevice ); for( int i = 0; i < size; i ++ ) @@ -710,9 +710,9 @@ class tnlCudaReductionTester : public CppUnit :: TestCase hostLinear[ i ] = i; } - copyMemoryHostToCuda( deviceZeros, hostZeros, size ); - copyMemoryHostToCuda( deviceOnes, hostOnes, size ); - copyMemoryHostToCuda( deviceLinear, hostLinear, size ); + tnlArrayOperations< tnlHost >::copyMemory< Type, tnlCuda, Type, int >( deviceZeros, hostZeros, size ); + tnlArrayOperations< tnlHost >::copyMemory< Type, tnlCuda, Type, int >( deviceOnes, hostOnes, size ); + tnlArrayOperations< tnlHost >::copyMemory< Type, tnlCuda, Type, int >( deviceLinear, hostLinear, size ); CPPUNIT_ASSERT( checkCudaDevice ); tnlParallelReductionDiffSum< Type, int > diffSumOp; @@ -798,12 +798,12 @@ class tnlCudaReductionTester : public CppUnit :: TestCase ( reductionOnCudaDevice( diffAbsMaxOp, size, deviceZeros, deviceLinear, result ) ) ); CPPUNIT_ASSERT( result == size - 1 ); - freeMemoryHost( hostZeros ); - freeMemoryHost( hostOnes ); - freeMemoryHost( hostLinear ); - freeMemoryCuda( deviceZeros ); - freeMemoryCuda( deviceOnes ); - freeMemoryCuda( deviceLinear ); + tnlArrayOperations< tnlHost >::freeMemory( hostZeros ); + tnlArrayOperations< tnlHost >::freeMemory( hostOnes ); + tnlArrayOperations< tnlHost >::freeMemory( hostLinear ); + tnlArrayOperations< tnlCuda >::freeMemory( deviceZeros ); + tnlArrayOperations< tnlCuda >::freeMemory( deviceOnes ); + tnlArrayOperations< tnlCuda >::freeMemory( deviceLinear ); } };