Submind YouTube summaries
Thumbnail for Computer Professor Reports Progress, Shows Demos, Is Still Nuts - T2sday Update 3172

Computer Professor Reports Progress, Shows Demos, Is Still Nuts - T2sday Update 3172

Watch on YouTube

Video summary

Dave Ackley, a self-described "slightly nutty computer professor," provides an update on his ambitious project to create a regional hub system within a cellular automata simulation using Tensix black hole chips. The primary goal for this episode was to achieve Event Window Transitions (EWTs), which involve sending data packets between local processors and central hubs, then pulling that data back for display. While the initial objective of establishing communication between separate hubs failed this month, significant progress was made in getting a single hub to successfully round-trip empty packets with its associated Event Window Processors (EWPs). This breakthrough proved that the fundamental packet exchange mechanism was functional, paving the way for future complexity once the basic infrastructure could reliably handle data flow. The development process was fraught with challenging debugging issues, particularly on the specialized hardware where traditional debuggers are difficult to use. Dave encountered several "Heisenbugs"—errors that seemingly vanished when he added print statements to investigate them—caused by a tricky cache behavior that he initially misunderstood. He also dealt with memory corruption issues and other logical errors that took days to isolate. To combat these frustrations, Dave spent considerable time improving his own debugging tools, specifically creating an enhanced log file viewer called the MFM X Log Jumper. This tool allows him to navigate complex log files efficiently by jumping directly between different processor cores and heart units within the codebase, significantly aiding in locating bugs even if it doesn't always fix them immediately. In the live demonstration, Dave showcased the first successful visual representation of events occurring inside the T6 tiles being integrated into a video stream. The simulation displayed distinct regions where "fork bomb" entities grew rapidly, consuming local resources, while other physics types like "drag and res" persisted in unaffected areas. Although the current performance is slow and inter-hub communication remains unimplemented, this marks the first time the system has worked cohesively to display live cellular automata sites rather than just pixels. Dave plans to refine the host display strategy to utilize a push-based model from the tiles and intends to develop tests for connecting regional hubs in June, coinciding with a visit from his oldest friend, before concluding that while the project is still "nuts," there is genuine fun and progress to be found in the process.
Read the full video transcript
Hey everybody, it's T Tuesday. Uh What the hell is this? We'll take a look at this uh again a little bit later in this episode. Uh it's just a little taste of what's coming up. So, for now, uh what we can say is okay, we have some visible progress. So, if you're just joining us for the first time, you know, I'm Dave Ackley, I'm the slightly nutty computer professor perhaps. Uh but we've been working on trying to get this regional hub idea going in this crazy cellular automata thing for months and we've got some progress to show. So, the goals for this time were EWTs, event window transitions. That's little teeny bits of this goes to this, this goes to this all over a spatially distributed thing done in a particular way and then the data pulled back so that we could see it on the screen and and basically Yes. Yes. >> [laughter] >> for a lot of uh basically EWTs and regional hubs. There's more to do. There's absolutely more to do, but yes, we will see it in a demo live in a few minutes. Centralized data for display. That's what we were just seeing there, a tiny little bit of it. Inter-hub communication plan. So, that's really I gave myself a plus minus. Really it's a failure except I kind of do have a plan. So, we'll see. Have big fun enjoy the axe. I worked a lot in the last month cuz I was so angry about not having gotten EWTs last month. But still there was big fun in there, too. Okay. So, today, sharpening the axe part two. And I had some big bugs. I had some bugs that took days to find and I hate that. >> [laughter] >> Uh Uh, uh, but it did remind me of my little uh when you can't find your bug, improve your debugging tools instead. If you can't work on your bug, work on your debugging tools instead until they can help you find your bug and so on. Then I'm going to want to do two uh quick little demos. We'll see. Uh, uh, MFM X log jumper, that's a debugging tool that I made. I made better. I improved my debugging tools cuz I was stuck on these horrible bugs. And then we'll take a look at event window transitions, the earliest earliest little bits, and then try to wrap up. Okay, so I'm good I've got a lot of stuff here, but I'm going to skip through it, so don't freak out. Uh, uh, so again, the software's timeline starts at T minus 28. That was the last T Tuesday in April. And one of the things that I've learned about doing uh software development at the age that I am and with the amount of distractions and everything the way it is. You know, when I wasn't like 35 years old and doing nothing. Uh, um, I have to review where I am all the time. And uh if I don't, I end up wasting a lot of time not being exactly sure what to work on. So I went right into review. And then the next couple of days I was just uh constantly stepping on my own rake, stuff that I had messed up and that now come back to bite me. Uh, um, so the goal, EWP, that's the event window processor. That's a little minion that we're going to send it an event and say, "Figure out what the update is and then send it back." And the hub is the sort of Amazon warehouse in the central area that all the events come and go from. Uh, uh, so that's what the goal was. Get that working. That's been the goal for months. Uh, uh, and let's review the code. Da da. Uh, uh, okay, found a little bug. Da da da. All right, finally, EWP and hub are round tripping EWP. So that means that the EWP, the processor, was sending an empty packet to the hub. The hub was receiving it. That's not a given. I was filling it up with nothing in this particular case, sending it back to the EWP, and they were going back and forth. And that was a big challenge. To get it to work was, in a sense, more important than actually being able to send events back and forth. Once I could get the packets going back and forth, I can put anything I want inside of them, more or less. I had a bunch of bugs, so then I went on to inter hub. So, EWP to hub, that is intra hub in a one little region. But inter hub is the next level. So, if we have a hub that's controlling this patch of stuff, and another hub that's controlling this patch of stuff, we want to be able to send messages back and forth between the hubs so they can interact and have the stuff spread from one to the other. This is what I failed at this month. But I'm okay with that. Uh uh all right, inter inter hub config find the neighboring hubs. So, and I had stupid bugs, sometimes not so stupid, but a lot of stupid bugs. Uh Wednesday, T minus 20. So, I sort of got it So, I made a special little Zot image that was just trying to send packets back and forth to itself as the minimum case. You know, people talk about communications that they make a loop back. A communications device that goes nowhere, it just sends it right back to itself cuz that's easier to debug than having a sender and a receiver that are separated. So, that's what Zot was. Uh now, I got the bugs, and eventually I created a whole new host block a certain set of stuff to help me out that we'll see some of the results of in a minute in the demo. Clean up, bur bur bur cleaned a bit. Okay, we got you know, and again, and more bugs. >> [snorts] >> And more clean up, you know, I had I had I thought I only needed to store the other end, the destination, but really as I built up the code, I needed to store the source and the destination cuz they were both important and I was using the destination for the source sometimes because I didn't really realize that. So, I made an endpoint address and I made a pair of them, one called source, one called dest, then things were better. And then I got to the first horrible bug. Creamed memory. Mm. So, you know, you you get something where it all looks like it's working and then it comes back later and something has changed when you didn't change it as far as you know. Someone creamed the memory behind your back. And that took a couple of days. I finally got it. I wrote a little poem. Pop pop pop are you accident? Brush away the hair. Finally finally finally fun is in the air. You may have heard the tune. Then I got the second horrible bug. >> [laughter] >> And this is what software software engineering folks call a Heisenbug because what it means is, you know, you see a bug and you say, you know, one of the first instincts you have when you're debugging stuff is to put in some more print statements so that you can find out more details about what's happening around the bug. And usually that works great, but in a Heisenbug you put in print statements and the bug goes away. So, how the hell are you supposed to debug it? Especially on the black hole hardware where the Tensix tiles are buried off inside these Tensix black hole chips, these Tenstorrent chips that you cannot, well, not with any easiness, break and get a debugger in there and so on and so forth. So, this was terrible. I put in print statements, it the bug went away. I put in some more print statements, it came back in a different way. Oh my god. Friday, day three. Now I'm beginning to wonder if this is another misunderstanding between me and the compiler. We had one of those a couple of months ago about mem set, you may remember for your super nerds. Uh um Saturday, I finally got it and it was because there is a cache. There's a tiny little cache and my understanding was by default the cache was turned off. So, I was saying, I don't have to worry about that. Uh and no, actually it turns out the cache is turned on and it's a little bit of a tricky cache to use and that's what caused all my problems. Uh so, finally got some more ra ra ra ra ra so, here we go. Uh um and now I thought, oh my god, I've got to be in good shape. I was 1 week away from right now. Uh and and the packets were getting corrupted again. Uh and I thought, oh no, this is going to be another thing about the network on chip not working right or the data caching or something. But no, it was just my own stupid bug and eventually I ran that down and then, you know, okay. Now, just under a week, single region physics host display. Okay. So, how can we get if we have the Amazon warehouse, the hub and its little workers around it the way I've got this set up right now, it's a 2 by 2 cell that has 1 2 3 EWP event window processors in it and one hub. The picture I showed a while ago was a 3 by 3 cell with a whole ring of eight EWPs and one hub in the center. At the moment, I'm doing three EWPs to one hub, but the code can kind of allow it to be changed fairly easily. All right. Uh um pop pop pop host access. How are we going to get it? How are we going to get So, now the problem is, right? When we had this running before, all the events were being sent back to the host. The host was the one There was just one hub and it was the host sending stuff out to hundreds of little 10 6 tiles and gathering them all back up which was not scalable at all but it did mean that once the events came back we were ready to display them. We could send it off to the FFmpeg encoder and have them turn up on the video server. But now the uh the events are distributed into these regional hubs all over the place and we have to somehow pull them back in in order to take a look at them. All right and so this Saturday three days ago uh uh made you know did some more stuff uh pop pop the stacks and at long last finally it was starting to look plausible and so finally finally after everything yesterday you know >> [laughter] >> uh uh I got uh a visible representation on the video stream of events that were happening inside the T6 T6 tiles in the event window processors then getting sent to their local regional hub which was integrating them all together and then in this case the host was reaching in to that hub every so often and copying out that little patch of grid to display on the video server. This was gratification long delayed. So big fun big fun yeah big fun. All right and then yes our poem. So there we are. So what I want to do for a couple of minutes I I guess we're okay enough if I can remember how I'm going to do this uh Okay yeah. I just want to show a little bit about what my life is like uh debugging. So what we're looking at here in an Emacs buffer is the log file. I used to have a whole bunch of separate log files that were all pulled apart in various purposes and but I broke that when I reinvented the whole network traffic thing and I haven't reestablished it. So right now, pretty much everything hits this one log file, which which does slow stuff down and so forth. But again, that's down the road. So this is a big mess. Um and you know, we can Oops, let's get it actually up on the screen if we can hopefully that did not glitch the stream too badly. Okay, so here we are. You know, message after message after message. And all of this stuff with file names at beginning of stuff, that's all happening while the host is initializing everything. And that goes on for a long time. Like that. But then eventually that gets done. And we get to where is it? Can I search ahead? Okay, there it is. Yeah. So these little curly bracket things here, these are the new HB file marks that I developed over the last I improved it in this past month although I developed it a month and a half ago. So 47 43 7 means line 7 of file 43 of the entire code base. And zero means it's on black hole card zero or black hole chip zero. One two is the 10 6 tile within it. H2 means it's the H2 heart. There's five hearts in each 10 6 tile. It's so many levels. And this particular T6 tile is running the EWP image and here are the messages that they're getting and so forth. And what's new is if I put up split the window here and all I have to do now is hit down arrow and in the other window it finds the reference. Go to another one. Okay, so here it is. this host block mark thing. And I've got a whole bunch of varieties of them. And you know, it looks like it's all on the same line, but it's different of the little heart processors. Each 10 6 tile, five processors. So, each two reach this mark, each zero reach this mark, and so on. They're all running the same code image. It's very confusing. Uh um and so on. And then we get on to other stuff. And so, the ability to do this, the ability to jump through the file and have it take me to the next thing so I could look at the actual code. I mean, I wish I could print out other information. Like here, this thing automatically printed out the seed, which is, you know, hopefully useful information. But then I'd say, "Oh, I wish I I could print out a common arg zero." Can't do it. This is just a static log file. All this is in the past. Can't interrupt and and interact with the thing directly. So, this is the MFMx. MFMx is the whole code base I'm developing for the black hole right here. Uh uh just to keep it separate cuz it is a lot different. The MFMx log jumper uh I have to say uh I don't have to say, but I choose to, that, you know, AI helped me out with vibe coding the improvement. So, this is all written directly in Emac. Well, most of it is written directly in Emac. There's some pearl in there, too. But you get the idea. So, this has been great and this has been key to uh at least locating bugs if not necessarily fixing them. So, that is uh nice. And that is the uh the log jumper. And now, let's take a look at event window transitions on regional hubs. Uh that is what we were looking at in the uh Let's get me on here. Okay. Now, what the hell is this? Uh, um if you look closely, you should be able to see that these little patches are changing every so often. They're not changing a lot, uh, but they are changing. And now can if I can manage to find the correct window that I need, and again, I might be glitching the video. I hope I'm not. Well, uh, okay. So, suppose I uh I'm going to type some commands over here. Uh, um I'm going to type a lowercase S and an uppercase S. Actually, I'm going to type a couple more lowercase and a couple more uppercase. Uh, uh into the controller window for the simulation that's running right now. And this will be a >> [laughter] >> a bit underwhelming. Oh, it looks like right there. There it is. That's That's a new fork bomb that's been seeded. Here's another new fork bomb that was seeded. How do I know it's fork bomb? Because it's growing incredibly fast. Uh, um like that. And so, this This here was this here before? I don't know if it was there before or not. Uh, um so, each of these little squares is a region. There's one regional hub responsible for each of these. So, all of the dots that are implied by the colors here, all of the dots that are implied by these little teeny clouds of dots here, uh are the atoms, the cellular automata sites that get used for one particular region. At the moment, in this particular layout. If I went with the 3 by 3 cell with the eight processors in the hub in the middle, that would mean each hub would have to take on more atoms in order to still produce HD style simulations. That's the goal. We want to do HD 1920 like 1080 cellular automata sites, not just pixels, but live sites. As fast as we can get it to go. Whether we'll succeed in that, right now it's exceedingly slow. But this is the first time it ever worked at all. Oh, and look at me. I might not be able to see this. So up here, so these ones that don't look like the purple stuff, those are actually drag and res, which is it doesn't matter exactly what they are. They're a different kind of physics that are working and and they don't they don't get eaten up by the fork bombs cuz the fork bomb can't leave its region. We don't have the inter-hub connections yet. That's what's coming next. So here it ended up just injecting a fork bomb seed into that region and that guy that is it that sees that's region is going to become full of fork bomb wiping out all the drag and res there pretty quickly, but again, we're not going to be able to sit and watch it. So this is where we are. This is live. It's been running for 4 hours or something. That that's not just because I left it running cuz that was the first time it was working this well. Okay. So Finally. Finally. All right, regional events. And so that's going to be about it. In June, I have my oldest best friend is coming to visit for a week. So that's going to be a whole special different thing. So I'm not going to put a whole lot of extra stuff on the development task this time, especially cuz this month was pretty thick. So rethink the host display. This was just something to get anything going. I want to have some strategies that will involve more push from the tiles when they're ready rather than pull and make up some kind of little test for how that get the regional hubs talking to each other cuz we want to weld this whole thing together into one simulation. And have lots of big fun and even enjoy the yak shaving which I did sometimes particularly when I could pop the yak. That's it folks. Thanks so much for stopping in either live now or whenever you came to see it cuz you actually watched it all the way to the very end. Good for you. Good for us. You know people ask how they could support the project and it's like you know I don't need your money. But if something makes sense tell somebody else. If something doesn't make sense tell me. Thanks everybody.