2021 Week 13 Research Journal
Goals
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.