4 ScalarMultiply<T>::ScalarMultiply( typename T::value_type scalar_value ) {
6 static_assert( is_stdlib_container< T >::value, "ScalarMultiply can only accept pointers or container-like objects." );
7 static_assert( std::is_arithmetic< typename T::value_type >::value, "ScalarMultiply must be made with arithmetic type" );
9 // std::string source_directory = SOURCE_DIR;
10 // std::string kernel_name = "/scalarmultiply.cl";
12 // kernel_path = source_directory + kernel_name;
14 // LoadCLKernel<typename T::value_type>( "ScalarMultiply" );
15 std::string kernel_str = R"END(
16 __kernel void ScalarMultiply( __global TYPE* input, TYPE scalar )
19 int i = get_global_id(0);
27 std::string kernel_name = "ScalarMultiply";
29 LoadCLKernel<typename T::value_type>( kernel_str, kernel_name );
32 err = kernel.setArg(1, scalar_value);
37 ScalarMultiply<T>::~ScalarMultiply() {}
40 void ScalarMultiply<T>::Trigger() {
43 err = command_queue.enqueueNDRangeKernel( kernel,cl::NullRange, cl::NDRange( signal_size ) );
48 void ScalarMultiply<T>::SetSignal( cl::Buffer& signal_buff, uint sig_size ){
50 signal_size = sig_size;
51 err = kernel.setArg(0, signal_buff);
57 cl::Buffer& ScalarMultiply<T>::ProcessedSignal() {
62 size_t ScalarMultiply<T>::ProcessedSignalBytes() {
63 return signal_size*sizeof( typename T::value_type );
67 size_t ScalarMultiply<T>::ProcessedSignalSize(){
72 bool ScalarMultiply<T>::NeedsToReknew() {