OverviewFilesCommitsIssuesDocsReleasesPeers

opencog-atomese-simd commits / 91ba6f2

spellcheck README
91ba6f20d357abc84496f43ce0a0c00098e6df77
by Linas Vepštas <linasvepstas@gmail.com> · 2025-09-12T18:26:50.000Z

Changed files (1) +17 -15

README.md +17 -15
……@@ -5,13 +5,13 @@ Experimental effort to enable I/O between Atomese and SIMD compute
55resources. The primary target is commodity GPUs, running either OpenCL
66or CUDA. The current prototype accesses the hardware at a low level,
77working with individual vectors. High-level API's, such as commonly
8used in deep learning, are not supported in this interface layer.
8used in deep learning, are not yet supported in this interface layer.
99
1010The Experiment
1111--------------
1212The experiment, as it is currently evolving, is to understand graph
1313rewriting between "natural" descriptions of compute systems. For
14example, the "natural" description of a deep learning transformer is
14example, the "natural" description of a deep learning transformer is as
1515a kind of wiring diagram, indicating where data flows. By contrast, the
1616"natural" description of GPU compute kernels are C/C++ function
1717prototypes. How can one perform the rewrite from the high-level
……@@ -26,18 +26,18 @@ accepts C++ code and issues machine assembly code. A Java compiler
2626accepts Java and issues Java bytecode. The goal here is to accept
2727high-level functional descriptions, such as that of a transformer, and
2828to generate low-level invocations of GPU kernels. However, the project
29here is not meant to be a "compiler" per se; if that is what one really
30wanted, one could just brute-force write one (or use PyTorch,
29here is not meant to just be a "compiler" per se; if that is what one
30really wanted, one could just brute-force write one (or use PyTorch,
3131TensorFlow, ...) Instead, this is meant to be an exploration of graph
32rewriting in general, and the GPU target just happens to be a realistic
33and suitably complicated example target.
32rewriting in general, and it uses the GPU target as a realistic and
33suitably complicated example system.
3434
3535A different way of thinking of this experiment is as an exploration of
3636the agency of sensori-motor systems. The GPU is a "thing out there" that
3737can be manipulated by an agent to "do things". How does an agent
3838perceive the "thing out there", and "understand" it's properties?
3939How can the agent control the "thing out there", and perform actions
40on it? To extert motor control on that "thing out there"? How does
40on it? To exert motor control on that "thing out there"? How does
4141the agent perceive the results of those motor actions?
4242
4343In the present experiment, the "agent" is is a collection of graphs
……@@ -45,17 +45,17 @@ In the present experiment, the "agent" is is a collection of graphs
4545[Atomese](https://wiki.opencog.org/w/Atomese),
4646and "living" in the OpenCog
4747[AtomSpace](https://github.com/opencog/atomspace).
48Thhe subjective inner form of the agent is a world-model, consisting of
48The subjective inner form of the agent is a world-model, consisting of
4949abstractions derived from sensory perceptions of the external world, and
5050the knowledge of a set of motor actions that can be performed to alter
5151the state of the external world. The agent itself is represented in
5252Atomese; the GPU is a part of the external world, to be manipulated.
5353
5454An important part of the challenge is understanding how assembly, and
55sepcifically, how self-assembly works. That is, the agent is meant to
55specifically, how self-assembly works. That is, the agent is meant to
5656be a collection of pieces-parts, a collection of transformation rules.
5757These rules are to be assembled to "get things done". The assembly is
58meant to be self-assembly, and is preseumed to live at the edge of a
58meant to be self-assembly, and is presumed to live at the edge of a
5959critical phase transition. The phrase "critical phase transition" is
6060meant to invoke the conventional idea of a critical phase transition,
6161such as that seen in Per Bak's critical sandpile. The difference here
……@@ -75,9 +75,9 @@ hypergraph database. It has a variety of different ways of talking to
7575external subsystems. These were developed to solve various practical
7676application issues that arose in the use of Atomese. These subsystem
7777interfaces are "well designed", in that they solve the particular issue
78that arose. Human progammers have used them to construct various kinds
78that arose. Human programmers have used them to construct various kinds
7979of systems. However, these interfaces lack what is needed for a
80dyanmical, sensori-motor, agential point of view.
80dynamical, sensori-motor, agential point of view.
8181
8282These external subsystem interfaces include:
8383
……@@ -103,8 +103,8 @@ These external subsystem interfaces include:
103103 These can be found in old, archived
104104 [github repos](https://github.com/opencog/), scrolling down to
105105 the oldest repos having no activity. There's also a collection
106 of youtube videos showing these in operation; seee e.g. the
107 [Virtual Dog](https://www.youtube.com/watch?v=FEmpGRLwbqE) demo,
106 of youtube videos showing these in operation; see e.g. the
107 [Virtual AI Dog](https://www.youtube.com/watch?v=FEmpGRLwbqE) demo,
108108 and, of course, the Hanson Robotics Sophia demos.
109109
110110The above "work", and provide Atomese interfaces to the described
……@@ -130,7 +130,7 @@ introspective interface definition systems. These include:
130130 to work with external devices.
131131
132132This project uses the [Sensory](https://github.com/opencog/sensory)
133system to provide the underlysing framework.
133system to provide the underlying framework.
134134
135135Status
136136------
……@@ -217,3 +217,5 @@ similar to above; it performs a simple vector multiply.
217217
218218The `run-flow-vec` executable is a rework of above, to more clearly
219219define and prototype the distinct steps needed to flow data.
220
221----