by dobkeratops » Fri Oct 06, 2017 1:18 pm
I actually think trying to dive in with a complete working general purpose neural net engine is probably too much; I would guess that trying to adapt an existing framework will just cause confusion and fill the code with red-herrings, sending you down blind alleys.
Yes it can "run C" .. but it can't re-use the overall approaches seen in existing CPU source code (push with DMA, vs pull from random sources via pointers etc).. I saw this with CELL , starting with code from other platforms was a disaster..
it's probably better to start just with convolutions, then figure out how to do those efficiently (i.e. how to tile across the cores.. has anyone done this yet?), then extend it to *multi-feature* convolutions. Just do image processing examples.
(the function I see in PAL is just 'single channel.. you might be able to adapt it with interleaving, or it might be better to code multi-channels specifically), then use that as a primitive for running 'forward inference' for convolutional nets.. just try to use a net already trained on a GPU.
(As I mentioned , it *is* then possible to express the back-propogation calculation for conv-nets using convolution operations.)
(are there implementations of edge-detector algorithms for the e-cores?)
Vision nets take a long time to train (hours, days .. weeks... ) can you imagine how much hell you're in for if you're starting out with a device performing 10x as slow (hous/days/weeks become days/weeks/months) .. far better to train the net on your PC GPU, or get one ready trained.
I suppose you could look at a scaled down example, e.g digit recognition , with the assumption that you could increase the layers to deal with more elaborate vision examples later