Hi Jimmy (sorry, been away for 3 days), good question and we have investigated 
FPGAs, but abandoned for these reasons:
We prefer “vanilla” code in the engine (less dependencies, don’t tweak the 
Linux kernel, minimal external packages and libraries etc)
We also code-generate from a very general ER model on which is overlaid 
“metadata” to help code-generation, hence keeping our code generation to 
minimal dependencies of other tools and languages
This is a commercial system and we may often deploy new releases or upgrades 3, 
4 or more times a year via a tar image and patch releases perhaps once a month
The application comprises 500,000 lines of code (350,000 of which are code 
generated from the ER model), but I am aware of a competitor running 16 million 
lines of code for this application (useless)
We also deploy to AWS, so we prefer a single codebase for vanilla deployment to 
whatever medium a client requires
We found programming in CUDA (GPU) or HDL (FPGA) too bespoke, due to:
Having to reburn an FPGA on each upgrade/release
Limiting for AWS deployment
FPGA memory more limited than physical onboard memory (can’t scale to the 
levels required)
Overall FPGA is great where a large amount of repeated processing is needed on 
data already on the FPGA
Where we load a bunch of data to the FPGA for processing, performance is fast 
once loaded, but data in/out of the FPGA is less efficient
Having said that, I am aware 8 years ago of another company that developed a 
complete matching engine on FPGA
They claimed 1m transactions per second
But turned out they had no functionality, only price/time matching and it could 
not scale in size
We also do complete checks for permissions, sessions, order types, cash, 
holdings, short sell, price collars etc which explain our desire
They went bust before they had their first client

So yes, have investigated and it holds promise for “components” of the system 
(eg we found it very suited to reducing “network latency” by bypassing the 
TCP/IP stack with a custom message protocol with other machines (eg market 
database or web services) that cooperate) but not flexible enough for regular 
updates for an application of this size.

Hope that explains it, Regards Rob

> On 22 Nov 2019, at 3:52 am, Jimmy Gauvin <jimmy.gau...@gmail.com> wrote:
> 
> @Rob Have you considered using FPGA boards to boost your throughput ?
> 
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm

----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to