I am looking for help getting started. I would appreciate pointers, advice, … I know little or nothing about the python interpreter.
I am tasked with modifying languages to support a research project involving a hardware implementation of content addressable memory.
This is a demonstration project at this time.
I was the 2nd author of a paper covering our hardware implementation at Memsys 2023 We are now working towards an early end to end example implementation of our approach. We have an implementation of content addressable memory simulated in an FPGA, and will likely move towards an actual working test in Silicon DDR within the next year. But we are looking as part of the next stage in development to demonstrate an end to end solution – as there are significant benefits to what we are doing for AI (though that is NOT the only application) and AI is where alot of the action is we are looking to use a relatively simple AI application as a test bed/proof of our concept.
In doing so we discovered that alot of AI work is done in python – including the app we are using as a test bed. We had started work developing a preprocessor for C and have a preliminary implementation there. I had also barely started looking to modify GCC to support Content addressable memory when I learned that the AI App we are targeting is in Python.
So I am looking for direction regarding modifying extending python to support Content addressible memory and specifically to support our hardware implementation of content addressable memory.
I am a software developer with many decades of experience in many areas with many languages. I am not a compiler or interpreter expert, though I have worked on many projects that involved some form of interpreter. I have developed in many languages – but not alot of python. More than 50% of my work has been in C. But the rest has been in dozens of languages including a bit of python.
(To save others a search, here’s a similar post by David on the GCC list, which has a link to the paper: Request for Direction.)
I’m no expert in content-addressible memory, but do you currently have a way to access it from C? If so, it should be possible to write a Python extension module. From the point of view of Python code, you simply import a module like any other, and call its functions. From the C point of view, it’s a set of functions that broker data between CAM and Python.
Building an extension module isn’t too hard, but it can be fairly complicated, so I would recommend looking into Cython (not to be confused with CPython) to see if you can create the module there.