3 ScalarAdd<T>::ScalarAdd( typename T::value_type scalar_value ) {
5 static_assert( is_stdlib_container< T >::value, "ScalarAdd can only accept pointers or container-like objects." );
6 static_assert( std::is_arithmetic< typename T::value_type >::value, "ScalarAdd must be made with arithmetic type" );
8 // std::string source_directory = SOURCE_DIR;
9 // std::string kernel_name = "/scalaradd.cl";
11 // kernel_path = source_directory + kernel_name;
13 // LoadCLKernel<typename T::value_type>( "ScalarAdd" );
14 std::string kernel_str = R"END(
15 __kernel void ScalarAdd( __global TYPE* input, const TYPE scalar )
18 int i = get_global_id(0);
24 std::string kernel_name = "ScalarAdd";
26 LoadCLKernel<typename T::value_type>( kernel_str, kernel_name );
29 err = kernel.setArg( 1, scalar_value );
34 ScalarAdd<T>::~ScalarAdd() {}
37 void ScalarAdd<T>::Trigger() {
40 err = command_queue.enqueueNDRangeKernel( kernel,cl::NullRange, cl::NDRange( signal_size ) );
45 void ScalarAdd<T>::SetSignal( cl::Buffer& signal_buff, uint sig_size ){
47 signal_size = sig_size;
48 err = kernel.setArg( 0, signal_buff );
54 cl::Buffer& ScalarAdd<T>::ProcessedSignal() {
59 size_t ScalarAdd<T>::ProcessedSignalBytes() {
60 return signal_size*sizeof( typename T::value_type );
64 size_t ScalarAdd<T>::ProcessedSignalSize(){
69 bool ScalarAdd<T>::NeedsToReknew() {