os-fpga / 1st-claas Goto Github PK
View Code? Open in Web Editor NEWFramework for developing and deploying FPGA logic in the cloud as a microservice for web and cloud applications
License: BSD 3-Clause "New" or "Revised" License
Framework for developing and deploying FPGA logic in the cloud as a microservice for web and cloud applications
License: BSD 3-Clause "New" or "Revised" License
Hi @stevehoover ,
What are the major changes I should make, to get run on on-premise Alveo cards.
See if this framework is a reasonable starting point: https://github.com/mballance/fpgamgr, and look for others. This would allow the server to connect to a self-hosted (or someone-else-hosted) FPGA over the internet.
Hi,
Issue Description
creating a new app with multiple systemverilog files instantiated in a top module
I see that you have to name your top module APPNAME_kernel and you assume that in the Makefile, to illustrate the problem assume this file structure
fpga/src/
---- a.v
---- b.v
---- NAME_kernel.v
in the make file you list all the sv files in the src directory
SV_SRC=$(shell ls ../fpga/src/*.sv ../fpga/src/*.v 2> /dev/null)
so this will return the files sorted alphabetically, { a.v b.v NAME_kernel.v }
when this argument is passed to verilator it will be passed with this order, and verilator assume a.v is the top module -not sure- but what happens is that in the out/ directory all the produced verilator results will be named a.*
and the rest of the make script will return error.
Solution
so as you assume that the top module is named APPNAME_kernel, pass the --top-module parameter to verilator with the top module name so it would be:
$(VERILATOR) --cc --sv --trace --top-module $(KERNEL_NAME)_kernel -DFPGA_WEBSERVER_KERNEL $(SV_SRC)
this solved the problem in my fork.
It seems the websocket can timeout. It maybe necessary to add a keepalive heartbeat in the client library.
The mandelbrot-react demo app requires a significant npm install. It should be moved out.
For users who do not or cannot work on their local machine, provide some help for provisioning a compatible cloud machine as the "local" machine.
Provide a Docker packaging of the environment.
Remove host from prebuilts (to support usage model where C++ is edited, but kernel is prebuilt).
After finding out that the link to the docs page for yosys is faulty in the FOEDAG repo (FOEDAG issue 318), I did some research and found that Clifford Wolf has changed both name and homepage.
The reason I'm writing about this is that the Personal History of this Project mentions Clifford Wolf and links to their old website (clifford.at), which is now owned by someone else and promotes gambling sites. I know that the file is old and not modified, but in the interest of keeping it relevant and safe I'd at least like to inform about my findings.
As an alternative to the current link, it could be changed to their github profile https://github.com/clairexen
In case anyone's wondering how the new page(s) were found:
These links are in their github profile.
It looks like it would have been far less painful to have built this infrastructure on the AWS FPGA HDK, rather than the SDK. It looks like this might provide a solution for incremental compilation of Custom Logic with pre-built Shell logic, but I haven't found clear answers yet.
Cron configuration is used to initialize the remote machines on reboot. It would be better to use cloud-init or the like.
Everything about the Tornado webserver (and host C++ for that matter, but that should be filed separately) is serial. I had to upgrade to Python 3 before utilizing async functions. I did the upgrade, but not the use of async.
See:
https://docs.python.org/3/library/asyncio-task.html
https://www.tornadoweb.org/en/stable/faq.html
-C while Terraform is running while creating an instance seems to cause the remote tfstate to not be written, but resources allocated, so these resources cannot be destroyed via make commands.
Fix make push and make pull. (Huh, make pull is missing.) Support a model where the repo is not used on the F1 instance, just push/pull contents. Or get rid of push/pull, and rely on prebuilt and git push/pull?
make development_instance LINUX_PASSWORD=xxx INSTANCE_NAME=xxx
fails to set the password. This is needed for RDP login.
Subsequently, make INSTANCE_NAME=xxx ssh
works, and sudo passwd centos
can be used to set the password.
As of SDK 2018.3, OpenCL reports the following warnings:
source ../out/hw_emu/xilinx_aws-vu9p-f1_4ddr-xpr-2pr_4.0/rtl_kernel_wiz.tcl -notrace
../../../framework/host/kernel.c: In member function ‘void Kernel::initialize_platform()’:
../../../framework/host/kernel.c:143:14: warning: ‘_cl_command_queue* clCreateCommandQueue(cl_context, cl_device_id, cl_command_queue_properties, cl_int*)’ is deprecated (declared at /usr/include/CL/cl.h:1443) [-Wdeprecated-declarations]
commands = clCreateCommandQueue(context, device_id, 0, &err);
^
../../../framework/host/kernel.c:143:62: warning: ‘_cl_command_queue* clCreateCommandQueue(cl_context, cl_device_id, cl_command_queue_properties, cl_int*)’ is deprecated (declared at /usr/include/CL/cl.h:1443) [-Wdeprecated-declarations]
commands = clCreateCommandQueue(context, device_id, 0, &err);
^
../../../framework/host/kernel.c: In member function ‘void Kernel::start_kernel()’:
../../../framework/host/kernel.c:259:9: warning: ‘cl_int clEnqueueTask(cl_command_queue, cl_kernel, cl_uint, _cl_event* const*, _cl_event**)’ is deprecated (declared at /usr/include/CL/cl.h:1457) [-Wdeprecated-declarations]
err = clEnqueueTask(commands, kernel, 0, NULL, NULL);
^
../../../framework/host/kernel.c:259:54: warning: ‘cl_int clEnqueueTask(cl_command_queue, cl_kernel, cl_uint, _cl_event* const*, _cl_event**)’ is deprecated (declared at /usr/include/CL/cl.h:1457) [-Wdeprecated-declarations]
err = clEnqueueTask(commands, kernel, 0, NULL, NULL);
I had trouble cleanly exiting web server. You'll see messages about pending tasks on Ctrl-C.
Some relevant links:
https://gist.github.com/mywaiting/4643396
https://www.tornadoweb.org/en/stable/ioloop.html
https://docs.python.org/3/library/asyncio-eventloop.html#running-and-stopping-the-loop
Hello,
Hardware Emulation of Mandelbrot Application does not work because there is no socket between the web server and the host application. As indicated in the framework/build/launch file this is still to be done. Has the problem been solved? It is possible to connect to the web server but nothing more.
MandelbrotLog.txt
Attached file, the generated log from make TARGET=hw_emu launch on amazon development instance
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.