import ThrustRTC as trtc is_odd = trtc.Functor({}, ['x'], ''' return x % 2; ''') darr = trtc.device_vector_from_list([-5, 0, 2, -3, 2, 4, 0, -1, 2, 8], 'int32_t') trtc.Transform(darr, darr, trtc.Negate()) print(darr.to_host()) darr_in1 = trtc.device_vector_from_list([-5, 0, 2, 3, 2, 4], 'int32_t') darr_in2 = trtc.device_vector_from_list([3, 6, -2, 1, 2, 3], 'int32_t') darr_out = trtc.device_vector('int32_t', 6) trtc.Transform_Binary(darr_in1, darr_in2, darr_out, trtc.Plus()) print(darr_out.to_host()) darr = trtc.device_vector_from_list([-5, 0, 2, -3, 2, 4, 0, -1, 2, 8], 'int32_t') trtc.Transform_If(darr, darr, trtc.Negate(), is_odd) print(darr.to_host()) darr_data = trtc.device_vector_from_list([-5, 0, 2, -3, 2, 4, 0, -1, 2, 8], 'int32_t') darr_stencil = trtc.device_vector_from_list([1, 0, 1, 0, 1, 0, 1, 0, 1, 0], 'int32_t') trtc.Transform_If_Stencil(darr_data, darr_stencil, darr_data, trtc.Negate(), trtc.Identity()) print(darr_data.to_host()) darr_in1 = trtc.device_vector_from_list([-5, 0, 2, 3, 2, 4], 'int32_t')
def sum(data_out, data_in): trtc.Transform_Binary(data_in, data_out, data_out, trtc.Plus())
import ThrustRTC as trtc darr1 = trtc.device_vector_from_list([1.0, 2.0, 5.0], 'float') darr2 = trtc.device_vector_from_list([4.0, 1.0, 5.0], 'float') print(trtc.Inner_Product(darr1, darr2, trtc.DVFloat(0.0))) print( trtc.Inner_Product(darr1, darr2, trtc.DVFloat(0.0), trtc.Plus(), trtc.Multiplies()))
def add(output, addend): trtc.Transform_Binary(addend, output, output, trtc.Plus())
import ThrustRTC as trtc darr1_in = trtc.device_vector_from_list([1, 2, 1, 2, 1, 2, 1, 2], 'int32_t') darr1_out = trtc.device_vector('int32_t', 8) trtc.Adjacent_Difference(darr1_in, darr1_out) print(darr1_out.to_host()) darr2_in = trtc.device_vector_from_list([1, 2, 1, 2, 1, 2, 1, 2], 'int32_t') darr2_out = trtc.device_vector('int32_t', 8) trtc.Adjacent_Difference(darr2_in, darr2_out, trtc.Plus()) print(darr2_out.to_host())
import ThrustRTC as trtc darr = trtc.device_vector_from_list([1, 0, 2, 2, 1, 3], 'int32_t') trtc.Transform_Inclusive_Scan(darr, darr, trtc.Negate(), trtc.Plus()) print(darr.to_host()) darr = trtc.device_vector_from_list([1, 0, 2, 2, 1, 3], 'int32_t') trtc.Transform_Exclusive_Scan(darr, darr, trtc.Negate(), trtc.DVInt32(4), trtc.Plus()) print(darr.to_host())
import ThrustRTC as trtc darr = trtc.device_vector_from_list([1, 0, 2, 2, 1, 3], 'int32_t') print(trtc.Reduce(darr)) print(trtc.Reduce(darr, trtc.DVInt32(1))) print(trtc.Reduce(darr, trtc.DVInt32(-1), trtc.Maximum())) d_keys_in = trtc.device_vector_from_list([1, 3, 3, 3, 2, 2, 1], 'int32_t') d_value_in = trtc.device_vector_from_list([9, 8, 7, 6, 5, 4, 3], 'int32_t') d_keys_out = trtc.device_vector('int32_t', 7) d_values_out = trtc.device_vector('int32_t', 7) count = trtc.Reduce_By_Key(d_keys_in, d_value_in, d_keys_out, d_values_out) print (d_keys_out.to_host(0, count)) print (d_values_out.to_host(0, count)) count = trtc.Reduce_By_Key(d_keys_in, d_value_in, d_keys_out, d_values_out, trtc.EqualTo()) print (d_keys_out.to_host(0, count)) print (d_values_out.to_host(0, count)) count = trtc.Reduce_By_Key(d_keys_in, d_value_in, d_keys_out, d_values_out, trtc.EqualTo(), trtc.Plus()) print (d_keys_out.to_host(0, count)) print (d_values_out.to_host(0, count))
import ThrustRTC as trtc darr = trtc.device_vector_from_list([3, 7, 2, 5 ], 'int32_t') trtc.Transform_Binary(darr, trtc.DVConstant(trtc.DVInt32(10)), darr, trtc.Plus()) print (darr.to_host())
def add(output, addend): trtc.Transform_Binary(thrust(addend), thrust(output), thrust(output), trtc.Plus())