1. An impeller, comprising
a body element comprising a first material and having a blade disposed thereon, the first material comprising a woven component with a first fiber and a second fiber forming a first fiber layer and a second fiber layer and a third fiber coupling the first fiber layer and the second fiber layer; and
a sleeve element disposed in the body element, the sleeve element comprising a second material that is different from the first material.
2. The impeller of claim 1, wherein the first fiber, the second fiber, and the third fiber are disposed in, respectively, a first direction, a second direction, and a third direction in the woven component, and wherein the first direction is different from the second direction and the third direction.
3. The impeller of claim 2, wherein the first direction, the second direction, and the third direction are mutually orthogonal to one another.
4. The impeller of claim 1, wherein the first fiber, the second fiber, and the third fiber comprise carbon fibers.
5. The impeller of claim 1, wherein the first fiber, the second fiber, and the third fiber are disposed in a resin.
6. The impeller of claim 1, wherein the first material is homogenous throughout the body element.
7. The impeller of claim 1, wherein the second material comprises a metal.
8. The impeller of claim 1, further comprising a first material layer disposed on a surface of the body element and a surface of the sleeve element.
9. The impeller of claim 1, further comprising a second material layer disposed on a surface of the body element.
10. The impeller of claim 9, wherein the second material layer comprises chrome nickel metal.
11. An impeller, comprising:
a body element having a rotary axis and a plurality of blades disposed circumferentially about the rotary axis, the body element comprising a composite having a resin and a plurality of fibers disposed in the resin, the plurality of fibers comprising a first set of fibers in a first direction, a second set of fibers in a second direction, and a third set of fibers in a third direction, and wherein the first direction, the second direction, and the third direction are mutually orthogonal to one another.
12. The impeller of claim 11, wherein fibers in the first set of fibers and fibers in the second set of fibers interweave with one another to form a first fiber layer and a second fiber layer.
13. The impeller of claim 12, wherein fibers in the third set of fibers interweave with the fibers in the first layer and the second layer.
14. The impeller of claim 11, wherein the plurality of blades are formed integrally with the body element.
15. The impeller of claim 14, wherein the composite is homogenous throughout the body element and the plurality of blades.
16. The impeller of claim 11, further comprising a coating disposed on one or more of the body element and the plurality of blades, wherein the coating is different from the composite.
17. A compressor device, comprising:
a rotary element having a body element and a sleeve element disposed in the body element, the body element comprising a first material and the sleeve element comprising a second material that is different from the first material, wherein the first material comprises a carbon fiber composite with a first set of fibers and a second set of fibers disposed orthogonally to the first set of fibers to form a first fiber layer and a second fiber layer adjacent the first fiber layer and a third set of fibers disposed orthogonally to the first set of fibers and the second set of fibers.
18. The compressor device of claim 17, wherein the third set of fibers couple the first fiber layer and the second fiber layer
19. The compressor device of claim 17, further comprising a drive unit with a drive shaft, wherein the sleeve element comprises a bore with a section that has a locking profile that matches a profile on the drive shaft
20. The compressor device of claim 17, wherein the carbon fiber composite is homogenous throughout the body element.
The claims below are in addition to those above.
All refrences to claim(s) which appear below refer to the numbering after this setence.
1. A method for producing and executing a kernel, comprising:
in a composition mechanism, generating function data associated with the kernel, the function data parametrically specifying at least one function;
transferring the function data to an execution mechanism; and
at the execution mechanism:
receiving and storing the function data;
receiving and storing input data;
dynamically invoking at least one compiled code module to process the input data, based on the function data, to provide output data; and
providing the output data,
the composition mechanism being different from the execution mechanism, and
the composition mechanism and the execution mechanism being implemented by computing functionality.
2. The method of claim 1, wherein the composition mechanism corresponds to computing functionality that operates using a central processing unit (CPU) module.
3. The method of claim 1, wherein the execution mechanism corresponds to at least one graphical processing unit (GPU) module.
4. The method of claim 1, wherein the execution mechanism includes a plurality of evaluation modules that operate in parallel, each evaluation module executing an instance of the kernel with respect to an input data item selected from an iteration space associated with the input data.
5. The method of claim 1, wherein the function data parametrically specifies two or more functions in such a manner that a caller-callee relationship is established between at least one pair of the functions.
6. The method of claim 1, wherein the execution mechanism does not provide native support for function calls, either direct or indirect, and
wherein said dynamically invoking involves executing a tail invocation of a child code module using a dispatcher module, within an existing dispatch loop provided by the dispatcher module.
7. The method of claim 1, wherein the execution mechanism does not provide native support for function calls, either direct or indirect, and
wherein said dynamically invoking involves executing a non-tail invocation of a child function by creating a continuation function, the continuation function being configured to receive a result of the child code module and invoke a subsequent operation of the kernel.
8. The method of claim 1, wherein the execution mechanism provides native support for direct calls, but not indirect calls, and
wherein said dynamically invoking involves executing a tail invocation of a child code module using a dispatcher module, within an existing dispatch loop provided by the dispatcher module.
9. The method of claim 1, wherein the execution mechanism provides native support for direct calls, but not indirect calls, and
wherein said dynamically invoking involves executing a non-tail invocation of a child code module by directly calling a dispatcher module, to create a new dispatcher loop in which the child code module is executed.
10. The method of claim 1, wherein the execution mechanism provides native support for direct and indirect calls, and
wherein said dynamically invoking involves, for a tail invocation of a child code module that is invoked in an enclosing tail context, using an existing dispatcher loop, providing by a dispatcher module, to execute the child code module.
11. The method of claim 1, wherein the execution mechanism provides native support for direct and indirect calls, and
wherein said dynamically invoking involves, for a non-tail invocation of a child code module that is invoked in an enclosing tail context, using an indirect call to invoke the child code module.
12. The method of claim 1, wherein the execution mechanism provides native support for direct and indirect calls, and
wherein said dynamically invoking involves, for a tail invocation of a child function that is invoked in an enclosing non-tail context, calling a dispatcher module to create a new dispatcher loop in which the child code module is executed.
13. The method of claim 1, wherein the execution mechanism provides native support for direct and indirect calls, and
wherein said dynamically invoking involves, for a non-tail invocation of a child code module that is invoked in an enclosing non-tail context, using an indirect call to execute the child code module.
14. A virtual machine, implemented by computing functionality, for operation in an execution mechanism that is separate from a composition mechanism, comprising:
a plurality of pre-compiled code modules;
a function data store for storing function data that parametrically specifies a kernel, the function data being provided by the composition mechanism; and
at least one evaluation module that is configured to:
receive and store input data;
dynamically invoke at least one compiled code module to process the input data, based on the function data, to provide output data; and
provide the output data.
15. The virtual machine of claim 14, wherein the execution mechanism corresponds to at least one graphical processing unit (GPU) module.
16. The virtual machine of claim 14,
wherein the function data specifies a top-level kernel function,
and wherein the top-level kernel function links to environment data,
and wherein the environment data provides parameter values associated with the top-level kernel function and any child functions transitively invoked by the top-level kernel function.
17. The virtual machine of claim 14, wherein said at least one evaluation module comprises:
a function value store for storing a function value;
a dispatcher module configured to dynamically invoke one of the code modules, based on a corresponding function value that is stored in the function value store; and
an inputoutput value store for storing a value for input to, or for output by, a code module that is being executed.
18. The virtual machine of claim 17, wherein the execution mechanism does not provide native support for function calls, either direct or indirect, and wherein said at least one evaluation module further comprises:
a continuation value store for storing a continuation value, the continuation value identifying a code module to be executed following execution of a code module associated with the function value; and
an explicit stack for storing values produced and consumed by the code modules.
19. A computer readable storage medium for storing computer readable instructions, the computer readable instructions providing a composition mechanism when executed by one or more processing devices, the computer readable instructions comprising:
a kernel-creation module configured to execute at least one constructor module to construct a kernel, the kernel being parametrically expressed by function data,
each constructor module being configured to construct a function when invoked, each function comprising:
a tag that identifies an associated compiled code module; and
an index pointing to a location in an environment data structure at which at least one construction-time parameter, associated with the function, is stored; and
a transfer module configured to forward the function data to an execution mechanism for parallel execution of the kernel using a plurality of evaluation modules, where the execution mechanism is separate from the composition mechanism.
20. The computer readable storage medium of claim 19, wherein at least one constructor module accepts, as at least one argument, an identification of a child function.