Commit f1c5e412 authored by Tomáš Oberhuber's avatar Tomáš Oberhuber
Browse files

Refactoring the array operations.

parent 896116b2
Loading
Loading
Loading
Loading
+68 −69
Original line number Diff line number Diff line
/***************************************************************************
                          tnlArrayOperationsTest.cpp  -  description
                          tnlArrayOperations.h  -  description
                             -------------------
    begin                : Jul 15, 2013
    copyright            : (C) 2013 by Tomas Oberhuber
@@ -34,57 +34,56 @@ class tnlArrayOperations< tnlHost >
                               const Index size );

   template< typename Element >
   bool freeMemory( Element* data );
   static bool freeMemory( Element* data );

   template< typename Element, typename Index >
   bool setMemory( Element* data,
                       const Element& value,
                       const Index size );
   template< typename Element >
   static void setMemoryElement( Element* data,
                                 const Element& value );

   template< typename DestinationElement, typename SourceElement, typename Index >
   bool copyMemoryToHost( DestinationElement* destination,
                          const SourceElement* source,
                          const Index size );
   template< typename Element >
   static Element getMemoryElement( Element* data );

   template< typename Element, typename Index >
   bool copyMemoryToHost( Element* destination,
                              const Element* source,
                              const Index size );
   static Element& getArrayElementReference( Element* data, const Index i );

   template< typename Element, typename Index >
   static const Element& getArrayElementReference( const Element* data, const Index i );

   template< typename DestinationElement, typename SourceElement, typename Index >
   bool copyMemoryToCuda( DestinationElement* destination,
                          const SourceElement* source,
                          const Index size );

   template< typename Element, typename Index >
   bool copyMemoryToCuda( Element* destination,
                              const Element* source,
   static bool setMemory( Element* data,
                          const Element& value,
                          const Index size );

   template< typename Element,
   template< typename DestinationElement,
             typename DestinationDevice,
             typename SourceElement,
             typename Index >
   bool compareMemoryOnHost( const Element* data1,
                           const Element* data2,
   static bool copyMemory( DestinationElement* destination,
                           const SourceElement* source,
                           const Index size );

   template< typename Element1,
             typename Element2,
   /*template< typename Element,
             typename DestinationDevice,
             typename Index >
   bool compareMemoryOnHost( const Element1* data1,
                           const Element2* data2,
                           const Index size );
   static bool copyMemory( Element* destination,
                           const Element* source,
                           const Index size );*/

   template< typename Element1,
             typename DestinationDevice,
             typename Element2,
             typename Index >
   bool compareMemoryOnCuda( const Element1* hostData,
                               const Element2* deviceData,
   static bool compareMemory( const Element1* destination,
                              const Element2* source,
                              const Index size );
   template< typename Element,

   /*template< typename Element,
             typename DestinationDevice,
             typename Index >
   bool compareMemoryOnCuda( const Element* deviceData1,
                             const Element* deviceData2,
                             const Index size );
   static bool compareMemory( const Element* destination,
                              const Element* source,
                              const Index size );*/
};

template<>
@@ -97,58 +96,58 @@ class tnlArrayOperations< tnlCuda >
                               const Index size );

   template< typename Element >
   bool freeMemory( Element* data );
   static bool freeMemory( Element* data );

   template< typename Element >
   static void setMemoryElement( Element* data,
                                 const Element& value );

   template< typename Element >
   static Element getMemoryElement( const Element* data );

   template< typename Element, typename Index >
   bool setMemory( Element* data,
                       const Element& value,
                       const Index size );
   static Element& getArrayElementReference( Element* data, const Index i );

   template< typename DestinationElement, typename SourceElement, typename Index >
   bool copyMemoryToHost( DestinationElement* destination,
                          const SourceElement* source,
                          const Index size );
   template< typename Element, typename Index >
   static const Element& getArrayElementReference( const Element* data, const Index i );

   template< typename Element, typename Index >
   bool copyMemoryToHost( Element* destination,
                              const Element* source,
   static bool setMemory( Element* data,
                          const Element& value,
                          const Index size );

   template< typename DestinationElement, typename SourceElement, typename Index >
   bool copyMemoryToCuda( DestinationElement* destination,
   template< typename DestinationElement,
             typename DestinationDevice,
             typename SourceElement,
             typename Index >
   static bool copyMemory( DestinationElement* destination,
                           const SourceElement* source,
                           const Index size );

   template< typename Element, typename Index >
   bool copyMemoryToCuda( Element* destination,
   /*template< typename Element,
             typename DestinationDevice,
             typename Index >
   static bool copyMemory( Element* destination,
                           const Element* source,
                           const Index size );

   template< typename Element,
             typename DestinationDevice,
             typename Index >
   bool compareMemoryOnHost( const Element* data1,
                           const Element* data2,
                           const Index size );

   template< typename Element1,
             typename Element2,
             typename Index >
   bool compareMemoryOnHost( const Element1* data1,
                           const Element2* data2,
                           const Index size );
   static bool compareMemory( const Element* destination,
                              const Element* source,
                              const Index size );*/

   template< typename Element1,
             typename DestinationDevice,
             typename Element2,
             typename Index >
   bool compareMemoryOnCuda( const Element1* hostData,
                               const Element2* deviceData,
                               const Index size );
   template< typename Element,
             typename Index >
   bool compareMemoryOnCuda( const Element* deviceData1,
                             const Element* deviceData2,
   static bool compareMemory( const Element1* destination,
                              const Element2* source,
                              const Index size );
};

#include <implementation/core/arrays/tnlArrayOperationsHost_impl.h>
#include <implementation/core/arrays/tnlArrayOperationsCuda_impl.h>

#endif /* TNLARRAYOPERATIONS_H_ */
+0 −44
Original line number Diff line number Diff line
@@ -21,7 +21,6 @@
#include <core/tnlDevice.h>
#include <core/tnlString.h>
#include <core/tnlAssert.h>
#include <implementation/core/memory-operations.h>

class tnlCuda
{
@@ -31,49 +30,6 @@ class tnlCuda

   static tnlDeviceEnum getDevice();

   template< typename Element, typename Index >
   static void allocateMemory( Element*& data, const Index size );

   template< typename Element >
   static void freeMemory( Element* data );


   template< typename Element >
   static void setMemoryElement( Element* data,
                                 const Element& value );

   template< typename Element >
   static Element getMemoryElement( const Element* data );

   template< typename Element, typename Index >
   static Element& getArrayElementReference( Element* data, const Index i );

   template< typename Element, typename Index >
   static const Element& getArrayElementReference(const Element* data, const Index i );

   template< typename DestinationElement,
             typename SourceElement,
             typename Index,
             typename Device >
   static bool memcpy( DestinationElement* destination,
                       const SourceElement* source,
                       const Index size );

   template< typename Element, typename Index, typename Device >
   static bool memcpy( Element* destination,
                       const Element* source,
                       const Index size );

   template< typename Element, typename Index, typename Device >
   static bool memcmp( const Element* data1,
                       const Element* data2,
                       const Index size );

   template< typename Element, typename Index >
   static bool memset( Element* destination,
                       const Element& value,
                       const Index size );

   static int getMaxGridSize();

   static void setMaxGridSize( int newMaxGridSize );
+0 −41
Original line number Diff line number Diff line
@@ -20,7 +20,6 @@

#include <core/tnlDevice.h>
#include <core/tnlString.h>
#include <implementation/core/memory-operations.h>

class tnlHost
{
@@ -29,46 +28,6 @@ class tnlHost
   static tnlString getDeviceType();

   static tnlDeviceEnum getDevice();

   template< typename Element, typename Index >
   static void allocateMemory( Element*& data, const Index size );

   template< typename Element >
   static void freeMemory( Element* data );

   template< typename Element >
   static void setMemoryElement( Element* data,
                                 const Element& value );

   template< typename Element >
   static Element getMemoryElement( Element* data );

   template< typename Element, typename Index >
   static Element& getArrayElementReference( Element* data, const Index i );

   template< typename Element, typename Index >
   static const Element& getArrayElementReference(const Element* data, const Index i );

   template< typename DestinationElement, typename SourceElement, typename Index, typename Device >
   static bool memcpy( DestinationElement* destination,
                       const SourceElement* source,
                       const Index size );

   template< typename Element, typename Index, typename Device >
   static bool memcpy( Element* destination,
                       const Element* source,
                       const Index size );

   template< typename Element, typename Index, typename Device >
   static bool memcmp( const Element* data1,
                       const Element* data2,
                       const Index size );

   template< typename Element, typename Index >
   static bool memset( Element* destination,
                       const Element& value,
                       const Index size );

};

#include <implementation/core/tnlHost_impl.h>
+1 −4
Original line number Diff line number Diff line
@@ -19,7 +19,6 @@ set( common_SOURCES
     ${CURRENT_DIR}/tnlTimerCPU.cpp      
     ${CURRENT_DIR}/mfilename.cpp 
     ${CURRENT_DIR}/mpi-supp.cpp 
     ${CURRENT_DIR}/tnlHost_impl.cpp
     ${CURRENT_DIR}/tnlCuda.cpp )       

IF( BUILD_CUDA )
@@ -28,7 +27,6 @@ IF( BUILD_CUDA )
        ${tnl_implementation_core_cuda_CUDA__SOURCES}
        ${tnl_implementation_core_vectors_CUDA__SOURCES}
        ${common_SOURCES} 
        ${CURRENT_DIR}/memory-operations_impl.cu 
        PARENT_SCOPE )
ENDIF()    

@@ -37,7 +35,6 @@ set( tnl_implementation_core_SOURCES
     ${tnl_implementation_core_cuda_SOURCES}
     ${tnl_implementation_core_vectors_SOURCES}
     ${common_SOURCES}
     ${CURRENT_DIR}/memory-operations_impl.cpp
     PARENT_SCOPE )
        
INSTALL( FILES ${headers} DESTINATION include/tnl-${tnlVersion}/implementation/core )
+5 −0
Original line number Diff line number Diff line
SET( headers tnlArray_impl.h
             tnlArrayOperationsHost_impl.h
             tnlArrayOperationsCuda_impl.h
             tnlMultiArray1D_impl.h
             tnlMultiArray2D_impl.h
             tnlMultiArray3D_impl.h
@@ -7,6 +9,8 @@ SET( headers tnlArray_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
     ${CURRENT_DIR}/tnlSharedArray_impl.cpp
     ${CURRENT_DIR}/tnlMultiArray_impl.cpp
     ${CURRENT_DIR}/tnlArray_impl.cpp )       
@@ -14,6 +18,7 @@ set( common_SOURCES
IF( BUILD_CUDA )
   set( tnl_implementation_core_arrays_CUDA__SOURCES
        ${common_SOURCES}
        ${CURRENT_DIR}/tnlArrayOperationsCuda_impl.cu
        ${CURRENT_DIR}/tnlArray_impl.cu
        PARENT_SCOPE )
ENDIF()    
Loading