def setUp(self):
     # Get a kernel from dynd
     self.ckb = _lowlevel.CKernelBuilder()
     _lowlevel.make_assignment_ckernel(
                     ndt.float32, None,
                     ndt.int64, None,
                     'single',
                     self.ckb)
     self.ck = self.ckb.ckernel(UnarySingleOperation)
예제 #2
0
 def test_assignment_ckernel_strided(self):
     with _lowlevel.ckernel.CKernelBuilder() as ckb:
         _lowlevel.make_assignment_ckernel(
                     ckb, 0,
                     ndt.float32, None, ndt.type('string[15,"A"]'), None,
                     'unary', 'strided')
         ck = ckb.ckernel(_lowlevel.UnaryStridedOperation)
         # Do an assignment using a numpy array
         src = np.array(['3.25', '-1000', '1e5'], dtype='S15')
         dst = np.arange(3, dtype=np.float32)
         ck(dst.ctypes.data, 4, src.ctypes.data, 15, 3)
         self.assertEqual(dst.tolist(), [3.25, -1000, 1e5])
예제 #3
0
 def test_assignment_ckernel_single(self):
     with _lowlevel.ckernel.CKernelBuilder() as ckb:
         _lowlevel.make_assignment_ckernel(
                     ckb, 0,
                     ndt.float32, None, ndt.int64, None,
                     "unary", "single")
         ck = ckb.ckernel(_lowlevel.UnarySingleOperation)
         # Do an assignment using ctypes
         i64 = ctypes.c_int64(1234)
         f32 = ctypes.c_float(1)
         ck(ctypes.addressof(f32), ctypes.addressof(i64))
         self.assertEqual(f32.value, 1234.0)
예제 #4
0
 def test_assignment_ckernel_strided(self):
     with _lowlevel.ckernel.CKernelBuilder() as ckb:
         _lowlevel.make_assignment_ckernel(
                     ckb, 0,
                     ndt.float32, None, ndt.type('string[15,"A"]'), None,
                     'strided')
         ck = ckb.ckernel(_lowlevel.ExprStridedOperation)
         # Do an assignment using a numpy array
         src = np.array(['3.25', '-1000', '1e5'], dtype='S15')
         src_ptr = ctypes.c_void_p(src.ctypes.data)
         src_stride = c_ssize_t(15)
         dst = np.arange(3, dtype=np.float32)
         ck(dst.ctypes.data, 4,
            ctypes.pointer(src_ptr), ctypes.pointer(src_stride), 3)
         self.assertEqual(dst.tolist(), [3.25, -1000, 1e5])
예제 #5
0
 def instantiate_assignment(out_ckb, ckb_offset, types, meta,
                            kerntype, ectx):
     out_ckb = _lowlevel.CKernelBuilderStruct.from_address(out_ckb)
     return _lowlevel.make_assignment_ckernel(out_ckb, ckb_offset,
                     types[0], meta[0],
                     types[1], meta[1],
                     'expr', kerntype, ectx)
예제 #6
0
 def instantiate_assignment(out_ckb, ckb_offset, dst_tp, dst_arrmeta,
                            src_tp, src_arrmeta, kernreq, ectx):
     out_ckb = _lowlevel.CKernelBuilderStruct.from_address(out_ckb)
     return _lowlevel.make_assignment_ckernel(out_ckb, ckb_offset,
                     dst_tp, dst_arrmeta,
                     src_tp[0], src_arrmeta[0],
                     kernreq, ectx)