Loading src/core/cuda/CMakeLists.txt +2 −1 Original line number Diff line number Diff line set( headers cuda-reduction.h set( headers cuda-prefix-sum.h cuda-reduction.h reduction-operations.h ) INSTALL( FILES ${headers} DESTINATION include/tnl-${tnlVersion}/core/cuda ) No newline at end of file src/core/cuda/cuda-prefix-sum.h 0 → 100644 +24 −0 Original line number Diff line number Diff line /*************************************************************************** cuda-prefix-sum.h - description ------------------- begin : Jan 18, 2014 copyright : (C) 2014 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. * * * ***************************************************************************/ #ifndef CUDA_PREFIX_SUM_H_ #define CUDA_PREFIX_SUM_H_ #endif /* CUDA_PREFIX_SUM_H_ */ src/core/tnlFile.h +24 −12 Original line number Diff line number Diff line Loading @@ -166,7 +166,11 @@ bool tnlFile :: read( Type* buffer, sizeof( Type ), elements, file ) != elements ) { cerr << "I am not able to read the data from the file " << fileName << "." << endl; perror( "Fread ended with the error code" ); return false; } this->readElements = elements; return true; } Loading Loading @@ -194,15 +198,18 @@ bool tnlFile :: read( Type* buffer, while( readElements < elements ) { int transfer = :: Min( ( Index ) ( elements - readElements ), host_buffer_size ); if( fread( host_buffer, sizeof( Type ), transfer, file ) != transfer * sizeof( Type ) ) size_t transfered = fread( host_buffer, sizeof( Type ), transfer, file ); if( transfered != transfer ) { cerr << "I am not able to read the data from the file " << fileName << "." << endl; cerr << transfered << " bytes were transfered. " << endl; perror( "Fread ended with the error code" ); return false; } if( cudaMemcpy( ( void* ) & ( buffer[ readElements ] ), host_buffer, bytesRead, transfer * sizeof( Type ), cudaMemcpyHostToDevice ) != cudaSuccess ) { cerr << "Transfer of data from the CUDA device to the file " << this -> fileName Loading @@ -211,7 +218,7 @@ bool tnlFile :: read( Type* buffer, free( host_buffer ); return false; } readElements += bytesRead / sizeof( Type ); readElements += transfer; } free( host_buffer ); return true; Loading Loading @@ -250,7 +257,8 @@ bool tnlFile :: write( const Type* buffer, elements, this->file ) != elements ) { cerr << "Writing to the file " << this->fileName << " failed." << endl; cerr << "I am not able to write the data to the file " << fileName << "." << endl; perror( "Fwrite ended with the error code" ); return false; } this->writtenElements = elements; Loading @@ -275,11 +283,11 @@ bool tnlFile :: write( const Type* buffer, return false; } while( writtenElements < elements ) while( this->writtenElements < elements ) { Index transfer = :: Min( elements - writtenElements, host_buffer_size ); Index transfer = :: Min( elements - this->writtenElements, host_buffer_size ); if( cudaMemcpy( host_buffer, ( void* ) & ( buffer[ writtenElements ] ), ( void* ) & ( buffer[ this->writtenElements ] ), transfer * sizeof( Type ), cudaMemcpyDeviceToHost ) != cudaSuccess ) { Loading @@ -291,9 +299,13 @@ bool tnlFile :: write( const Type* buffer, if( fwrite( host_buffer, sizeof( Type ), transfer, this->file ) != transfer*sizeof( Type ) ) this->file ) != transfer ) { cerr << "I am not able to write the data to the file " << fileName << "." << endl; perror( "Fwrite ended with the error code" ); return false; writtenElements += transfer; } this->writtenElements += transfer; } free( host_buffer ); return true; Loading src/generators/functions/tnlExpBumpFunction.h +21 −0 Original line number Diff line number Diff line Loading @@ -60,10 +60,17 @@ class tnlExpBumpFunction< 1, Vertex, Device > : public tnlExpBumpFunctionBase< t tnlExpBumpFunction(); #ifdef HAVE_NOT_CXX11 template< int XDiffOrder, int YDiffOrder, int ZDiffOrder > RealType getF( const VertexType& v ) const; #else template< int XDiffOrder = 0, int YDiffOrder = 0, int ZDiffOrder = 0 > RealType getF( const VertexType& v ) const; #endif }; template< typename Vertex, typename Device > Loading @@ -77,10 +84,17 @@ class tnlExpBumpFunction< 2, Vertex, Device > : public tnlExpBumpFunctionBase< t tnlExpBumpFunction(); #ifdef HAVE_NOT_CXX11 template< int XDiffOrder, int YDiffOrder, int ZDiffOrder > RealType getF( const VertexType& v ) const; #else template< int XDiffOrder = 0, int YDiffOrder = 0, int ZDiffOrder = 0 > RealType getF( const VertexType& v ) const; #endif }; template< typename Vertex, typename Device > Loading @@ -94,10 +108,17 @@ class tnlExpBumpFunction< 3, Vertex, Device > : public tnlExpBumpFunctionBase< t tnlExpBumpFunction(); #ifdef HAVE_NOT_CXX11 template< int XDiffOrder, int YDiffOrder, int ZDiffOrder > RealType getF( const VertexType& v ) const; #else template< int XDiffOrder = 0, int YDiffOrder = 0, int ZDiffOrder = 0 > RealType getF( const VertexType& v ) const; #endif }; #include <implementation/generators/functions/tnlExpBumpFunction_impl.h> Loading src/generators/functions/tnlFunctionDiscretizer.h +10 −0 Original line number Diff line number Diff line Loading @@ -23,12 +23,22 @@ class tnlFunctionDiscretizer { public: #ifdef HAVE_NOT_CXX11 template< int XDiffOrder, int YDiffOrder, int ZDiffOrder > static void discretize( const Mesh& mesh, const Function& function, DiscreteFunction& discreteFunction ); #else template< int XDiffOrder = 0, int YDiffOrder = 0, int ZDiffOrder = 0 > static void discretize( const Mesh& mesh, const Function& function, DiscreteFunction& discreteFunction ); #endif }; #include <implementation/generators/functions/tnlFunctionDiscretizer_impl.h> Loading Loading
src/core/cuda/CMakeLists.txt +2 −1 Original line number Diff line number Diff line set( headers cuda-reduction.h set( headers cuda-prefix-sum.h cuda-reduction.h reduction-operations.h ) INSTALL( FILES ${headers} DESTINATION include/tnl-${tnlVersion}/core/cuda ) No newline at end of file
src/core/cuda/cuda-prefix-sum.h 0 → 100644 +24 −0 Original line number Diff line number Diff line /*************************************************************************** cuda-prefix-sum.h - description ------------------- begin : Jan 18, 2014 copyright : (C) 2014 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. * * * ***************************************************************************/ #ifndef CUDA_PREFIX_SUM_H_ #define CUDA_PREFIX_SUM_H_ #endif /* CUDA_PREFIX_SUM_H_ */
src/core/tnlFile.h +24 −12 Original line number Diff line number Diff line Loading @@ -166,7 +166,11 @@ bool tnlFile :: read( Type* buffer, sizeof( Type ), elements, file ) != elements ) { cerr << "I am not able to read the data from the file " << fileName << "." << endl; perror( "Fread ended with the error code" ); return false; } this->readElements = elements; return true; } Loading Loading @@ -194,15 +198,18 @@ bool tnlFile :: read( Type* buffer, while( readElements < elements ) { int transfer = :: Min( ( Index ) ( elements - readElements ), host_buffer_size ); if( fread( host_buffer, sizeof( Type ), transfer, file ) != transfer * sizeof( Type ) ) size_t transfered = fread( host_buffer, sizeof( Type ), transfer, file ); if( transfered != transfer ) { cerr << "I am not able to read the data from the file " << fileName << "." << endl; cerr << transfered << " bytes were transfered. " << endl; perror( "Fread ended with the error code" ); return false; } if( cudaMemcpy( ( void* ) & ( buffer[ readElements ] ), host_buffer, bytesRead, transfer * sizeof( Type ), cudaMemcpyHostToDevice ) != cudaSuccess ) { cerr << "Transfer of data from the CUDA device to the file " << this -> fileName Loading @@ -211,7 +218,7 @@ bool tnlFile :: read( Type* buffer, free( host_buffer ); return false; } readElements += bytesRead / sizeof( Type ); readElements += transfer; } free( host_buffer ); return true; Loading Loading @@ -250,7 +257,8 @@ bool tnlFile :: write( const Type* buffer, elements, this->file ) != elements ) { cerr << "Writing to the file " << this->fileName << " failed." << endl; cerr << "I am not able to write the data to the file " << fileName << "." << endl; perror( "Fwrite ended with the error code" ); return false; } this->writtenElements = elements; Loading @@ -275,11 +283,11 @@ bool tnlFile :: write( const Type* buffer, return false; } while( writtenElements < elements ) while( this->writtenElements < elements ) { Index transfer = :: Min( elements - writtenElements, host_buffer_size ); Index transfer = :: Min( elements - this->writtenElements, host_buffer_size ); if( cudaMemcpy( host_buffer, ( void* ) & ( buffer[ writtenElements ] ), ( void* ) & ( buffer[ this->writtenElements ] ), transfer * sizeof( Type ), cudaMemcpyDeviceToHost ) != cudaSuccess ) { Loading @@ -291,9 +299,13 @@ bool tnlFile :: write( const Type* buffer, if( fwrite( host_buffer, sizeof( Type ), transfer, this->file ) != transfer*sizeof( Type ) ) this->file ) != transfer ) { cerr << "I am not able to write the data to the file " << fileName << "." << endl; perror( "Fwrite ended with the error code" ); return false; writtenElements += transfer; } this->writtenElements += transfer; } free( host_buffer ); return true; Loading
src/generators/functions/tnlExpBumpFunction.h +21 −0 Original line number Diff line number Diff line Loading @@ -60,10 +60,17 @@ class tnlExpBumpFunction< 1, Vertex, Device > : public tnlExpBumpFunctionBase< t tnlExpBumpFunction(); #ifdef HAVE_NOT_CXX11 template< int XDiffOrder, int YDiffOrder, int ZDiffOrder > RealType getF( const VertexType& v ) const; #else template< int XDiffOrder = 0, int YDiffOrder = 0, int ZDiffOrder = 0 > RealType getF( const VertexType& v ) const; #endif }; template< typename Vertex, typename Device > Loading @@ -77,10 +84,17 @@ class tnlExpBumpFunction< 2, Vertex, Device > : public tnlExpBumpFunctionBase< t tnlExpBumpFunction(); #ifdef HAVE_NOT_CXX11 template< int XDiffOrder, int YDiffOrder, int ZDiffOrder > RealType getF( const VertexType& v ) const; #else template< int XDiffOrder = 0, int YDiffOrder = 0, int ZDiffOrder = 0 > RealType getF( const VertexType& v ) const; #endif }; template< typename Vertex, typename Device > Loading @@ -94,10 +108,17 @@ class tnlExpBumpFunction< 3, Vertex, Device > : public tnlExpBumpFunctionBase< t tnlExpBumpFunction(); #ifdef HAVE_NOT_CXX11 template< int XDiffOrder, int YDiffOrder, int ZDiffOrder > RealType getF( const VertexType& v ) const; #else template< int XDiffOrder = 0, int YDiffOrder = 0, int ZDiffOrder = 0 > RealType getF( const VertexType& v ) const; #endif }; #include <implementation/generators/functions/tnlExpBumpFunction_impl.h> Loading
src/generators/functions/tnlFunctionDiscretizer.h +10 −0 Original line number Diff line number Diff line Loading @@ -23,12 +23,22 @@ class tnlFunctionDiscretizer { public: #ifdef HAVE_NOT_CXX11 template< int XDiffOrder, int YDiffOrder, int ZDiffOrder > static void discretize( const Mesh& mesh, const Function& function, DiscreteFunction& discreteFunction ); #else template< int XDiffOrder = 0, int YDiffOrder = 0, int ZDiffOrder = 0 > static void discretize( const Mesh& mesh, const Function& function, DiscreteFunction& discreteFunction ); #endif }; #include <implementation/generators/functions/tnlFunctionDiscretizer_impl.h> Loading