Do you have some questions about Hastlayer? You're not alone, so we've compiled the most frequent questions with answers here. Hope this clears some things up.
What is this?
Hastlayer is a tool that can automatically turn your .NET software into a hardware implementation, so basically a computer chip. This way your algorithm can potentially run much faster but still consume less power, especially if it's massively parallelizable. How much, you ask? Check out the benchmarks.
All this happens with a kind of device called FPGAs: These are computer chips that can be dynamically "re-wired" to behave like any other chip (within their limits). You can also think of FPGAs as a kind of special computing device with unique advantages (like being massively parallel and power efficient), a bit similar to GPUs. With Hastlayer you can write your programs as usual but utilize FPGAs as a kind of application-specific coprocessor/accelerator card.
It's more involved than this, but you can watch the Hastlayer session of .NET Conf to get the full picture. If you want to see Hastlayer in action here's a much shorter demo video too. If you want to see the code, examples, and documentation then head over to GitHub.
Who is behind Hastlayer?
Some ambitious people at Lombiq, a software services company from Hungary, EU, work on Hastlayer. Lombiq otherwise does custom .NET web development for clients like the Smithsonian Institution, .NET Foundation and Microsoft itself.
How can I start using Hastlayer?
You can start playing with Hastlayer for free, see the "Getting started" documentation page.
What can I use Hastlayer for?
Generally Hastlayer can make .NET programs (or parts of them) faster and use less power if the algorithm is massively parallelizable and compute bound (CPU bound). We're actively working on field-testing Hastlayer with some real-world applications but there are also some examples in the SDK.
We think that Hastlayer can be used to accelerate the following types of applications, but we haven't tested all of them yet (FPGAs are already employed for such use-cases):
- Machine learning and artificial intelligence
- Image processing, video processing and computer vision
- Algorithmic trading on the stock market, financial computations
- Data compression and analysis
- Cryptocurrency mining
- Embedded sytems (robots and drones, IoT, satellites)
What kind of FPGAs can I use?
Be aware that you can't just use any FPGA board with Hastlayer: Due to the constraints of FPGA development we have to support selected FPGAs specifically. Check out the "Getting started" documentation page on which ones are supported.
Will Hastlayer remain free forever?
Although we don't charge for anything related to Hastlayer yet, eventually we'll need to produce income to cover the costs of development. We're working on our business model but most possibly we'll keep options to use Hastlayer for free. Rest assured that if you have a cool use-case for Hastlayer then this will always be an issue we'll be able to work around!
My code is sent to your servers. I don't like this!
When you use Hastlayer then not exactly your code, but the the compiled assemblies (DLL files) of your app that you selected are sent to Hastlayer Remote Services to create the hardware implementation. We understand that at first you're hesitant about this, but rest assured that your app is safe: It's transferred to our servers (which are in Microsoft Azure datacenters) via a secure connection and there we only keep it for the duration of the transformation (which is mostly a few seconds). The Hastlayer Licensing Agreement that you accept when starting with Hastlayer elaborates how we protect your IP.
Also, since only the compiled assemblies are sent to Hastlayer you can employ any kind of obfuscation on them.
If this is still not enough for your use-case then get in touch with us and we can arrange how you can run Hastlayer Remote Services on your own servers.
Can I mine Bitcoin with this?
You can, but you shouldn't :). FPGA mining is not competitive any more for Bitcoin, hard-wired hardware boards (Application-Specific Integrated Circuits, ASICs) are more efficient and the scale of Bitcoin mining made creating them feasible.
We haven't tested Hastlayer for cryptocurrency mining yet, but with Hastlayer you have the advantage of being able to change implementations as fast as developing software. So you can relatively quickly create mining hardware for new coins.
What are the limitations on the code I can write?
FPGAs aren't limitless, so too complex algorithms just won't fit. How much you can fit on an FPGA greatly depends on the FPGA's resources and your algorithm, but you can check out to the samples to get an idea of what fits on the FPGAs tested by us. We're also working on supporting bigger, faster FPGAs.
The code Hastlayer is able to process can only use a limited subset of .NET. On what you can and can't use see the "Working with Hastlayer" documentation page.
Do you have floating point support?
We do! Floating point is not very efficient on FPGAs, so if you don't want to use fixed point (which we also provide a 64b number type for) you can use our experimental posit implementation. Posit is a floating point number type with better accuracy and other advantages over standard floats. For details see the Next Generation Arithmetic page.
Can I use a Hastlayer FPGA implementation without a host PC, in an embedded system?
You can, but this is not something we officially support yet: The current model is that with Hastlayer the host PC gets an application-specific coprocessor that works under the CPU. However the hardware component Hastlayer generates has a very simple interface, and thus in theory can be plugged into other hardware designs relatively easily. This means that the hardware logic generated by Hastlayer can possibly also be used in embedded systems and other FPGA-based hardware designs.
Can I create a hard-wired chip too?
While in theory you could also create an actual custom-manufactured chip (Application-Specific Integrated Circuits, ASIC) from a modified version of Hastlayer's generated hardware component this would be very difficult and expensive to do. The advantage of FPGAs is that you can create a hardware implementation with a relatively low cost (and with Hastlayer, within minutes). With ASICs you need months of rigorous development and a couple million dollars to begin with.
I'd like to keep updated, what should I do?
I'm still confused, who can I write to?
Don't worry, we can help you! Check out the contact options.