The primary goal this week is to get the Arxiv draft done and ready to be read. What does “done” look like? I think it means technical sections and “eval” section (aka “Case Studies”) done. Intro won’t be done, as I want input on it, and related work could be done but it’s not priority.

Wish I could get myself more excited about having to do a bunch of writing. I suspect I’ll feel better once I get started.

A bit later, I do, though I still want to break and write some code.

In Defense of the Single Pomodoro

Don’t get daunted by the prescribed pomodoro schedule: 25 minutes of working, 5 minutes of break, times four, then a long break, etc. I say forget it, and start with the single pomodoro. For things I really don’t want to do, but that are still a long ways off (making slides for a talk I’m giving in May, for example) twenty-five minutes a day every single day goes a long way. Set your timer (I use mynoise.net with the pomodoro timer—hit “O”!) and work til it’s done, and mark it down on a piece of paper. If you do that, and nothing else, all day, you’ll still feel like you’ve achieved something.

I grabbed a Pynq board from the office, and I’m going to start playing with it. These setup instructions surprisingly worked out-of-the-box.

Currently fighting with TVM’s BYOC. I’ve mostly been able to get things working, but when I go to run the compiled code, something strange is happening. No segfaulting, as far as I can tell; Python (or something) is exiting with code 127. When I set breakpoints on the function I’m generating a call to, I hit the @plt call for the function, which, as far as I understand, is essentially the placeholder for a dynamically-linked function. So once we hit the @plt call, we should eventually call through to the function itself. But that seems to fail, and I’m not sure why.

I have LD_LIBRARY_PATH set to point to the location containing the library that implements the function being called. If I don’t have it set, it fails, saying it can’t open because it can’t find the library. So I know somewhere, the library is getting loaded correctly.

Checking whether the contents of the rtml_systolic_array_weight_stationary_fc function affect things. They don’t seem to; we also fail with an empty function.

I got it! The problem was that I was compiling the dynamic library as C code, but when declaring the library’s functions in the C++ code generated by TVM, I forgot to declare C linkage: extern "C". Declaring the external function with extern "C" fixed things. Still odd that there’s no clear error message for this case.

Goal Recap

Arxiv: drafted! Happy with it!

BYOC: Further than I expected, but still, I’m distracted by other things.