def inspect_asm(self, signature=None): ''' Return this kernel's PTX assembly code for for the device in the current context. :param signature: A tuple of argument types. :return: The PTX code for the given signature, or a dict of PTX codes for all previously-encountered signatures. ''' cc = get_current_device().compute_capability device = self.targetoptions.get('device') if signature is not None: if device: return self.overloads[signature].library.get_asm_str(cc) else: return self.overloads[signature].inspect_asm(cc) else: if device: return { sig: overload.library.get_asm_str(cc) for sig, overload in self.overloads.items() } else: return { sig: overload.inspect_asm(cc) for sig, overload in self.overloads.items() }
def compile_ptx_for_current_device(pyfunc, args, debug=False, lineinfo=False, device=False, fastmath=False, opt=True): """Compile a Python function to PTX for a given set of argument types for the current device's compute capabilility. This calls :func:`compile_ptx` with an appropriate ``cc`` value for the current device.""" cc = get_current_device().compute_capability return compile_ptx(pyfunc, args, debug=debug, lineinfo=lineinfo, device=device, fastmath=fastmath, cc=cc, opt=True)
def specialize(self, *args): ''' Create a new instance of this dispatcher specialized for the given *args*. ''' cc = get_current_device().compute_capability argtypes = tuple( [self.typingctx.resolve_argument_type(a) for a in args]) if self.specialized: raise RuntimeError('Dispatcher already specialized') specialization = self.specializations.get((cc, argtypes)) if specialization: return specialization targetoptions = self.targetoptions targetoptions['link'] = self.link specialization = Dispatcher(self.py_func, [types.void(*argtypes)], targetoptions) self.specializations[cc, argtypes] = specialization return specialization
def device(self): """ Get current active context """ return get_current_device()