| … | … | @@ -46,5 +46,38 @@ never taken, for two reasons: |
| 46 | 46 | mostly completed. |
| 47 | 47 | |
| 48 | 48 | So given that the primary issues were resolved in the two bullet points |
| 49 | | above, I am now ready to try again. But, before starting, some |
| 50 | | critiques, some planning, some day-dreaming. |
| 49 | above, I am now ready to try again. And short-term plans include working |
| 50 | with both audio and visual data, this time around. Concrete plans |
| 51 | further below. But, before starting, some critiques, some planning, |
| 52 | some day-dreaming. The below will ramble a bit, because I haven't |
| 53 | figured out some parts yet. |
| 54 | |
| 55 | Critique of Flow Design |
| 56 | ----------------------- |
| 57 | The "flow" code and demos in the atomspace work "just fine", more or |
| 58 | less. However, several big issues exposed themselves during development. |
| 59 | Consider the problem of implementing the flow pipelines on GPU's. Viz. |
| 60 | I want to have the declarative description to be in Atomese, but the |
| 61 | processing to happen on the GPU. But how? Several answers, none |
| 62 | satisfactory. |
| 63 | |
| 64 | A) Hard code GPU variants of `PlusLink`, `TimesLink`, etc. Yuck. Hard |
| 65 | work, fragile, non-portable. Any such implementation would become a |
| 66 | some weird cross-over between interpreter and compiler. See below. |
| 67 | |
| 68 | B) Write a compiler. Here, The `PlusLink` etc. become "assembly code" |
| 69 | and the compiler turns it into CUDA code or OpenCL or whatever. Yuck. |
| 70 | Such a compiler is large, complex, non-portable. Its also a "been |
| 71 | there, done that" project: people have been writing compilers for |
| 72 | fifty years, and doing it yet again for a highly specialized use case |
| 73 | is boring and pointless. |
| 74 | |
| 75 | C) Define the GPU hardware in such a way that it can be "perceived" by a |
| 76 | sensori-motor agent that could "just look at it" and "use it". Yes! |
| 77 | Great! A bit too pie-in-the-sky for now; I lack the infrastructure to |
| 78 | get off the ground on this. It's an aspirational. |
| 79 | |
| 80 | Status: Punt. Item C) is the aspirational goal. The code located at the |
| 81 | https://github.com/opencog/atomese-simd directory is some pre-prototype |
| 82 | of A) and B) and I might yet tinker with it some more. I do not yet have |
| 83 | an firm road-map for getting to C). |