This is the latest version of the PULP SDK

Overview

PULP-SDK

This is the latest version of the PULP SDK, which is under active development. The previous (now legacy) version, which is no longer supported, is on the v1 branch.

Citing

If you intend to use or reference GVSoC for an academic publication, please consider citing it:

@INPROCEEDINGS{9643828,
	author={Bruschi, Nazareno and Haugou, Germain and Tagliavini, Giuseppe and Conti, Francesco and Benini, Luca and Rossi, Davide},
	booktitle={2021 IEEE 39th International Conference on Computer Design (ICCD)},
	title={GVSoC: A Highly Configurable, Fast and Accurate Full-Platform Simulator for RISC-V based IoT Processors},
	year={2021},
	volume={},
	number={},
	pages={409-416},
	doi={10.1109/ICCD53106.2021.00071}}

PULP-SDK completely supports Dory as QNNs deployment tool. You can find an example of deployment [here]. If you intend to use or reference Dory for an academic publication, please consider citing it:

@ARTICLE{9381618,
	author={Burrello, Alessio and Garofalo, Angelo and Bruschi, Nazareno and Tagliavini, Giuseppe and Rossi, Davide and Conti, Francesco},
	journal={IEEE Transactions on Computers},
	title={DORY: Automatic End-to-End Deployment of Real-World DNNs on Low-Cost IoT MCUs},
	year={2021},
	volume={70},
	number={8},
	pages={1253-1268},
	doi={10.1109/TC.2021.3066883}}

Getting started

These instructions were developed using a fresh Ubuntu 18.04 Bionic Beaver 64-Bit.

The following packages needed to be installed:

sudo apt-get install -y build-essential git libftdi-dev libftdi1 doxygen python3-pip libsdl2-dev curl cmake libusb-1.0-0-dev scons gtkwave libsndfile1-dev rsync autoconf automake texinfo libtool pkg-config libsdl2-ttf-dev

The SDK also requires the argcomplete and pyelftools Python package. You can install them for the local user with:

pip install --user argcomplete pyelftools

Omit --user to install at system level instead, which will probably require admin rights.

This version requires PULP toolchain to compile the application exploiting pulp features. PULP toolchain is available at: https://github.com/pulp-platform/pulp-riscv-gnu-toolchain

You can choose also its precompiled version, exploring: https://github.com/pulp-platform/pulp-riscv-gnu-toolchain/releases/tag/v1.0.16

Please, refer to the corresponding README for the installation.

Once PULP toolchain is correctly installed, define the path in which there is toolchain bin folder:

export PULP_RISCV_GCC_TOOLCHAIN=<INSTALL_DIR>

Source the file corresponding to the desired configuration:

cd pulp-sdk
source configs/pulp-open.sh

At least gcc 4.9.1 is needed. If the default one is not correct, CC and CXX can be set to point to a correct one. To check if gcc has the right version:

gcc --version

Please, refer to official guide to update gcc if is needed.

GVSoC

GVSoC is the PULP chips simulator that is natively included in the SDK and is described and evaluated fully in Bruschi et al. [arXiv:2201.08166v1].

Compile GVSoC with this command:

make build

Test execution

Some examples are availaible at https://github.com/GreenWaves-Technologies/pmsis_tests

Then, go to a test, for example pmsis_tests/quick/cluster/fork/, and execute:

make clean all run

This will by default execute it on GVSoC (platform=gvsoc), and you can configure the RTL platform with this command:

make clean all run platform=rtl

Notice that the environment variable VSIM_PATH should be set to the directory where the RTL platform has been built. This is typically done by sourcing the setup/vsim.sh file from the main folder of the RTL platform.

## Application: CNNs at the Edge

To run pre-generated real-world networks, such as MobileNetV1:

cd applications/MobileNetV1
make clean all run platform=<PLATFORM> CORE=<NUM_CORES>

Nemo + Dory + Pulp-NN

Our vertical flow allows to deploy optimized QNNs on low-power and low-resources MCUs, starting from a Pytorch model.

Nemo

[Nemo] is a framework for Deep Neural Networks layer-wise quantization. He starts from a common Pytorch project and produces an equivalent quantized model, which well suits the usually integer MCUs. Its output are a .onnx as quantized model and several .txt as set of input and weigths of the network, also including the golden activations to checks the output of every network's layer. Please refer to its README for more details and [here] you can find a Colab project and a very detailed tutorial on how to get started with Nemo.

Dory

[Dory] is an automatic tool to generate and directly deploy MLP/CNNs on PULP family boards, exploiting [Pulp-NN] as optimized back-end.

Dory has a complete and autonomous testsuite, named [Dory-Example], which is periodically updated, and please refer to its README for more details. To generate the code and run one of these examples:

cd dory/dory_examples/
python3 network_generate --network_dir <e.g., ./examples/MobileNetV1/>
cd application
make clean all run platform=<PLATFORM> CORE=<NUM_CORES>

where you should choose CORE=8 if you want to test the network on pulp cluster with all of the eight cores active (by default only 1 is set).

To set up and execute a custom application, firstly, copy your file network.onnx and files out_layer{i}.txt in a single folder (e.g., pulp-sdk/application/MyCustomNetwork/) and then:

cd dory/dory_examples/
python3 network_generate --network_dir <pulp-sdk/application/MyCustomNetwork/>
cd application
make clean all run platform=<PLATFORM> CORE=<NUM_CORES>

You can use L1 and L2 memory constraints to specify the amount of memory used inside the application. Please refer to Dory and Dory-example READMEs for more details.

Comments
  • Wolf JTAG programming vectors

    Wolf JTAG programming vectors

    Hello, I'm building an application for PULP JTAG programming from MCUs. For that, I need the stimuli vectors (i.e. sequence of 32-bit L2 mem address - 64 bit L2 mem data) to send to Mr.Wolf on the JTAG. When I compile a PULP application on my SDK (release 2018.07.03), I can't see any file containing them, both compiling for platform board and platform rtl. For now, Davide provided me with a workaround (and it works fine) but it would be nice to have a build option which would either generate a txt file with the stimuli vector or, even better, a header file with a uint32 array for the addresses, and a uint64 array for the data. Thanks!

    opened by mguermandi 14
  • SDK build error with pulp-rt-exemple

    SDK build error with pulp-rt-exemple

    Hi, Pulp team : I have build the SDK and I want to test it with the hello test. I think i have all the correct path and source : image but I have the following error : image

    Any idea/suggestion?

    Regards, Léo

    opened by lfernand4 14
  • pulp-run: Error while building component [/sys/board/chip/soc/cluster/l1_ico/interleaver]

    pulp-run: Error while building component [/sys/board/chip/soc/cluster/l1_ico/interleaver]

    Hi,

    I've successfully built pulp-sdk using the patch 79daee01e5fc21b6d833c68e866a148e98f11f90 (Fixed regressions).

    Steps followed to build pulp-sdk:

    1. export PULP_RISCV_GCC_TOOLCHAIN=
    2. source configs/pulp.sh

    Now, I'm trying to launch the virtual platform, as below (by providing the correct paths where the files reside) pulp-run --platform=vp --dir=work_dir --config-file=config.json

    But the virtual platform build fails as below,

    0: 0: [/sys/board/chip/soc/cluster/l1_ico/pe6_ico/py_comp] Building component 0: 0: [/sys/board/chip/soc/cluster/l1_ico/pe6_ico/py_comp] Building implementation 0: 0: [/sys/board/chip/soc/cluster/l1_ico/py_comp ] New component (name: pe7_ico, class: interco/router) 0: 0: [/sys/board/chip/soc/cluster/l1_ico/pe7_ico/py_comp] Building component 0: 0: [/sys/board/chip/soc/cluster/l1_ico/pe7_ico/py_comp] Building implementation 0: 0: [/sys/board/chip/soc/cluster/l1_ico/py_comp ] New component (name: interleaver, class: pulp/cluster/l1_interleaver) 0: 0: [/sys/board/chip/soc/cluster/l1_ico/interleaver/py_comp] Building component 0: 0: [/sys/board/chip/soc/cluster/l1_ico/interleaver/py_comp] Building implementation 0: 0: [/sys/board/chip/soc/cluster/l1_ico/interleaver] Caught error while building component (path: /sys/board/chip/soc/cluster/l1_ico/interleaver)

    I did a strace to get more info, stat("PULP-2.0/pulp-sdk/pkg/sdk/dev/install/ws/python/debug/pulp/cluster/l1_interleaver_impl.so", {st_mode=S_IFREG|0755, st_size=388072, ...}) = 0 openat(AT_FDCWD, "PULP-2.0/pulp-sdk/pkg/sdk/dev/install/ws/python/debug/pulp/cluster/l1_interleaver_impl.so", O_RDONLY|O_CLOEXEC) = 3 fstat(3, {st_mode=S_IFREG|0755, st_size=388072, ...}) = 0 ioctl(3, TCGETS, 0x7ffccb19b900) = -1 ENOTTY (Inappropriate ioctl for device) lseek(3, 0, SEEK_CUR) = 0 openat(AT_FDCWD, "PULP-2.0/pulp-sdk/pkg/sdk/dev/install/ws/python/debug/pulp/cluster/l1_interleaver_impl.so", O_RDONLY|O_CLOEXEC) = 4 read(4, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0 "\0\0\0\0\0\0"..., 832) = 832 fstat(4, {st_mode=S_IFREG|0755, st_size=388072, ...}) = 0 mmap(NULL, 2117888, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 4, 0) = 0x7f63e9c69000 mprotect(0x7f63e9c6d000, 2097152, PROT_NONE) = 0 mmap(0x7f63e9e6d000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 4, 0x4000) = 0x7f63e9e6d000 close(4) = 0 mprotect(0x7f63e9e6d000, 4096, PROT_READ) = 0 close(3) = 0 write(1, "0: 0: [\33[94m/sys/board/chip/soc/"..., 910: 0: [/sys/board/chip/soc/cluster/l1_ico/interleaver/py_comp] Building component ) = 91 write(1, "0: 0: [\33[94m/sys/board/chip/soc/"..., 960: 0: [/sys/board/chip/soc/cluster/l1_ico/interleaver/py_comp] Building implementation ) = 96 write(1, "0: 0: [\33[91m/sys/board/chip/soc/"..., 650: 0: [/sys/board/chip/soc/cluster/l1_ico/interleaver] ) = 65 write(1, "Caught error while building comp"..., 93Caught error while building component (path: /sys/board/chip/soc/cluster/l1_ico/interleaver) ) = 93 rt_sigaction(SIGINT, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7f63f067d890}, {sa_handler=0x7f63ec007c60, sa_mask=[INT], sa_flags=SA_RESTORER|SA_RESTART, sa_restorer=0x7f63ef6c4f20}, 8) = 0

    Could you please let me know why is the error? Please let me know if there are any steps I've missed out.

    Also, its mentioned here https://github.com/pulp-platform/pulp-sdk#dependencies-setup, "RTL platforms should also be built separately", as part of dependency. Should I build the pulp-platform/pulp (8 core cluster) & setup 'VSIM_PATH' before building the virtual platform using pulp-run?

    Thanks so much!

    opened by bkr10 8
  • Build looks in the wrong directory for the compiler

    Build looks in the wrong directory for the compiler

    After sourcing configs and running make all, in the end I get a message

    sdk:pulp-rt:build (user_config_file=/home/lstrz/Desktop/pulp-sdk/configs/json/pulpissimo-zeroriscy.json): make build install make[1]: Entering directory '/home/lstrz/Desktop/pulp-sdk/runtime/pulp-rt' /home/lstrz/Desktop/pulp-sdk/pkg/pulp_riscv_gcc/1.0.4/bin/riscv32-unknown-elf-gcc -march=rv32imcxpulpslim -DRV_ISA_RV32=1 -D__riscv__ -Os -g -fno-jump-tables -fno-tree-loop-distribute-patterns -Werror -Wextra -Wall -Wno-unused-parameter -Wno-unused-variable -Wno-unused-function -Wundef -fdata-sections -ffunction-sections -I/home/lstrz/Desktop/pulp-sdk/pkg/sdk/dev/install/include/io -I/home/lstrz/Desktop/pulp-sdk/pkg/sdk/dev/install/include -include /home/lstrz/Desktop/pulp-sdk/runtime/pulp-rt/build/user_config_file..home.lstrz.Desktop.pulp-sdk.configs.json.pulpissimo-zeroriscy.json/fc_config.h -MMD -MP -c kernel/init.c -o /home/lstrz/Desktop/pulp-sdk/runtime/pulp-rt/build/user_config_file..home.lstrz.Desktop.pulp-sdk.configs.json.pulpissimo-zeroriscy.json/rt/fc/kernel/init.o make[1]: /home/lstrz/Desktop/pulp-sdk/pkg/pulp_riscv_gcc/1.0.4/bin/riscv32-unknown-elf-gcc: Command not found /home/lstrz/Desktop/pulp-sdk/runtime/pulp-rt/build/user_config_file..home.lstrz.Desktop.pulp-sdk.configs.json.pulpissimo-zeroriscy.json/__rules.mk:55: recipe for target '/home/lstrz/Desktop/pulp-sdk/runtime/pulp-rt/build/user_config_file..home.lstrz.Desktop.pulp-sdk.configs.json.pulpissimo-zeroriscy.json/rt/fc/kernel/init.o' failed make[1]: *** [/home/lstrz/Desktop/pulp-sdk/runtime/pulp-rt/build/user_config_file..home.lstrz.Desktop.pulp-sdk.configs.json.pulpissimo-zeroriscy.json/rt/fc/kernel/init.o] Error 127 make[1]: Leaving directory '/home/lstrz/Desktop/pulp-sdk/runtime/pulp-rt' Reached EOF with exit status 2 Makefile:4: recipe for target 'all' failed make: *** [all] Error 255

    As instructed in the readme, I've set the correct environment variable to the toolchain, which is very different from the location /home/lstrz/Desktop/pulp-sdk/pkg/pulp_riscv_gcc/1.0.4/bin/ that the build script is looking at. I could not find an environment variable or a line in the scripts which is responsible for this location.

    What should I do different? My .../pulp-sdk/pkg directory does not contain a pulp_riscv_gcc dir.

    The simplest solution seems to be to link all the tools in the "not found" location, but that seems incredibly hacky.

    opened by lstrz 7
  • SDK build error with pulpissimo-riscy/rtl configs

    SDK build error with pulpissimo-riscy/rtl configs

    Hi, Pulp SDK team :

    Here is error message from my sdk building, any idea/clue?

    sdk:pulp-rt:build (user_config_file=/net/cola/data/sawu/proj/pulp-sdk_git/configs/json/pulpissimo-riscy.json): make build install make[1]: Entering directory `/net/cola/data/sawu/proj/pulp-sdk_git/runtime/pulp-rt' /net/cola/data/sawu/proj/ri5cy_xcom/pulp_bare/bin/riscv32-unknown-elf-gcc -march=rv32imcxpulpv2 -D__riscv__ -Os -g -fno-jump-tables -fno-tree-loop-distribute-patterns -Werror -Wextra -Wall -Wno-unused-parameter -Wno-unused-variable -Wno-unused-function -Wundef -fdata-sections -ffunction-sections -I/net/cola/data/sawu/proj/pulp-sdk_git/pkg/sdk/dev/install/include/io -I/net/cola/data/sawu/proj/pulp-sdk_git/pkg/sdk/dev/install/include -include /net/cola/data/sawu/proj/pulp-sdk_git/runtime/pulp-rt/build/user_config_file..net.cola.data.sawu.proj.pulp-sdk_git.configs.json.pulpissimo-riscy.json/fc_config.h -MMD -MP -c kernel/init.c -o /net/cola/data/sawu/proj/pulp-sdk_git/runtime/pulp-rt/build/user_config_file..net.cola.data.sawu.proj.pulp-sdk_git.configs.json.pulpissimo-riscy.json/rt/fc/kernel/init.o cc1: error: -march=rv32imcxpulpv2: unsupported ISA substring 'xpulpv2' make[1]: *** [/net/cola/data/sawu/proj/pulp-sdk_git/runtime/pulp-rt/build/user_config_file..net.cola.data.sawu.proj.pulp-sdk_git.configs.json.pulpissimo-riscy.json/rt/fc/kernel/init.o] Error 1

    I did trial to go back rebuilding cross toolchain with : ./configure --prefix=/xxx/ --with-arch=rv32imcxpulpv2 --with-cmodel=medlow --enable-multilib

    However, there is error msg cp doc/gcc.1 doc/g++.1 /net/cola/data/sawu/proj/pulp-riscv-gnu-toolchain/build-gcc-newlib-stage1/./gcc/xgcc -B/net/cola/data/sawu/proj/pulp-riscv-gnu-toolchain/build-gcc-newlib-stage1/./gcc/ -nostdinc -x c /dev/null -S -o /dev/null -fself-test=../.././riscv-gcc/gcc/testsuite/selftests cc1: error: -march=rv32imcxpulpv2: unsupported ISA substring 'xpulpv2' cc1: internal compiler error: Segmentation fault 0xaf3b2f crash_signal ../.././riscv-gcc/gcc/toplev.c:337 0xdb465f tree_class_check(tree_node*, tree_code_class, char const*, int, char const*) ../.././riscv-gcc/gcc/tree.h:3199 0xdb465f build_int_cst(tree_node*, long) ../.././riscv-gcc/gcc/tree.c:1297 0x83f8c5 test_tree_marking ../.././riscv-gcc/gcc/ggc-tests.c:458 0x83f8c5 selftest::ggc_tests_c_tests() ../.././riscv-gcc/gcc/ggc-tests.c:485 0x1050543 selftest::run_tests() ../.././riscv-gcc/gcc/selftest-run-tests.c:65 0xaf5152 toplev::run_self_tests() ../.././riscv-gcc/gcc/toplev.c:2067 Please submit a full bug report,

    Any idea/suggestion?

    Regards, Samuel

    opened by holysml 7
  • Checkout failed

    Checkout failed

    Hi, i've got the following error. I have installed it a few times before and i never ran into this problem. Since two days ago im not able to complete the creation of the pkg/sdk/dev folder. Thank you in advance.

    image

    opened by GAnto85 6
  • UPDATE SDK pulp error example

    UPDATE SDK pulp error example

    Hi, I have build the most recent patch from the SDK. I execute "make all" without error. If I execute a program with pulpissimo I have no error. And if i execute a code with pulp I have the following error : image Thank you!

    opened by lfernand4 3
  • pulp-sdk build error

    pulp-sdk build error

    Hi, I am going to build pulp SDK and choose pulp.sh but met this error: source configs/pulp.sh source configs/platform-rtl.sh make all

    ..... pulp/pulp-sdk/pulp-riscv-gnu-toolchain/riscv/bin/riscv32-unknown-elf-gcc -march=rv32imcxpulpv2 -D__riscv__ -D__RT_USE_IO=1 -Os -g -fno-jump-tables -Werror -fno-tree-loop-distribute-patterns -Wextra -Wall -Wno-unused-parameter -Wno-unused-variable -Wno-unused-function -Wundef -fdata-sections -ffunction-sections -I/home/speedzheng/pulp/pulp-sdk/pkg/sdk/dev/install/include/io -I/home/speedzheng/pulp/pulp-sdk/pkg/sdk/dev/install/include -include /home/speedzheng/pulp/pulp-sdk/build/sdk/pulp-rt/pulp/cl_config.h -MMD -MP -c kernel/sync_mc.c -o /home/speedzheng/pulp/pulp-sdk/build/sdk/pulp-rt/pulp/rt/cl/kernel/sync_mc.o In file included from /home/speedzheng/pulp/pulp-sdk/pkg/sdk/dev/install/include/rt/rt_api.h:57:0, from kernel/sync_mc.c:21: /home/speedzheng/pulp/pulp-sdk/pkg/sdk/dev/install/include/rt/rt_perf.h: In function 'rt_perf_cl_reset': /home/speedzheng/pulp/pulp-sdk/pkg/sdk/dev/install/include/rt/rt_perf.h:217:19: error: implicit declaration of function 'hal_timer_cl_addr'; did you mean 'hal_timer_fc_addr'? [-Werror=implicit-function-declaration] hal_timer_reset(hal_timer_cl_addr(0, 0)); ^~~~~~~~~~~~~~~~~ hal_timer_fc_addr cc1: all warnings being treated as errors

    Thanks!

    bug 
    opened by speedzheng 3
  • Driver SPIM receive - problem with CS

    Driver SPIM receive - problem with CS

    I may have found an important bug in spim_receive. With the following code: image I would expect that the CS stays low after the first function call, as described in : image Indeed, the signal generated is the following (yellow: CLK, blue: CS): image

    opened by tommasopolonelli 2
  • Problem with ./update-sw-new in Mr.Wolf RTL platform

    Problem with ./update-sw-new in Mr.Wolf RTL platform

    Mr. Wolf RTL platform works only with the old "pulp_pipeline". When trying to get the new sdk using ./updated-sw-new i get the following:

    Cloning into 'pulp-sdk'... X11 forwarding request failed on channel 0 remote: Counting objects: 2023, done. remote: Compressing objects: 100% (36/36), done. remote: Total 2023 (delta 33), reused 35 (delta 16), pack-reused 1971 Receiving objects: 100% (2023/2023), 372.22 KiB | 1.17 MiB/s, done. Resolving deltas: 100% (1289/1289), done. Branch 'integration' set up to track remote branch 'integration' from 'origin'. Switched to a new branch 'integration' Configuring Pulp project at /usr/scratch/larain5/drossi/wolf/pulp-sdk git submodule update --init Submodule 'json-tools' (https://github.com/pulp-platform/json-tools.git) registered for path 'json-tools' Submodule 'pulp-configs' (https://github.com/pulp-platform/pulp-configs.git) registered for path 'pulp-configs' Submodule 'pulp-tools' (https://github.com/pulp-platform/pulp-tools.git) registered for path 'pulp-tools' Cloning into '/usr/scratch/larain5/drossi/wolf/pulp-sdk/json-tools'... Cloning into '/usr/scratch/larain5/drossi/wolf/pulp-sdk/pulp-configs'... Cloning into '/usr/scratch/larain5/drossi/wolf/pulp-sdk/pulp-tools'... Submodule path 'json-tools': checked out 'd07a88d2fed9eb454feb0c799b303b3cfb237008' Submodule path 'pulp-configs': checked out '779b25b024acf6f18f9bb6302c2f00432c89947c' Submodule path 'pulp-tools': checked out '69e2f2c3f7d11b0485ed5781dcd49557f7156328' FATAL ERROR: name 'wolfe_name' is not defined

    opened by daviderossi1982 2
  • calling rt_spim_open multiple times returns error

    calling rt_spim_open multiple times returns error

    Tested on the GAP board, when using SPI1 to connect to two separate devices (hence using CS0 and CS1). When calling rt_spim_t *second_handler= rt_spim_open(NULL, &second_spim_conf, NULL) once the first one was already opened, the program returns error.

    Workaround:

    void rt_spim_close(rt_spim_t *handle, rt_event_t *event)
    {
      int channel = (handle->channel) >> 1 ;
      rt_spim_t *spim = &__rt_spim[__rt_spim_id(channel)];
      spim->open_count-- ;
    }
    
    bug 
    opened by mrusci 2
  • Error while running MobileNetV1

    Error while running MobileNetV1

    Hi!

    I was trying to execute the MobileNetV1 application on GVSoC but it failed giving the following error. Any idea how to fix it?

    Launching GVSOC with command: gvsoc_launcher --config=gvsoc_config.json Error FS mounting ! make: *** [/local/scratch/a/Tools/pulp-sdk/rtos/pulpos/common/rules/pulpos/default_rules.mk:327: run] Error 254 Also, perf and hello tests works perfectly but flash and fs tests fail. So, any idea where things went wrong?

    Thanks in advance for your reply!

    opened by surya00060 3
  • Cluster task example

    Cluster task example

    opened by SaraNassef 4
  • Fix dma when using `copy.merge`

    Fix dma when using `copy.merge`

    Due to the type cast here: https://github.com/pulp-platform/pulp-sdk/blob/aee8a8acb4216da2c5e59cfe7e9f11ce3c04184b/rtos/pulpos/common/include/pos/implem/dma.h#L152 transfers are not properly handled when using the merge feature in the copy struct. This can cause stalls as the DMA is not properly executing transfers. This PR fixes part of the issue of the type cast, ensuring the ID field is the same in the cmd and copy struct. Other issues may come up when using the next field of the cmd struct.

    opened by micprog 0
  • question on how to configure customized memory map

    question on how to configure customized memory map

    Hi,

    I have tried the basic instructions to run examples on gvsoc virtual platform and they all look good.

    Now, I want to try customized memory map using Pulpissimo platform.

    For example, currently ROM is at 0x1A00_0000 and L2 is at 0x1C00_0000. If I want to change the base addresses to ROM @ 0x1B00_0000 / L2 @ 0x1C10_0000, how I can do so? (Numbers are just random numbers within the gaps I found in Pulpissimo memory map)

    Is there a instruction on

    • How I can change the memory map on gvsoc?
    • How I can execute software (examples at least) on the modified memory map?

    Thanks!

    opened by soskhong 0
  • Running applications on fpga

    Running applications on fpga

    The application runs well with platform=gvsoc, but not when I put it on fpga. I checkout the branch to sup_fpga. The application was successfully built by $make clean all platform=fpga. FPGA board zcu102 is connected using JTAG, and the bitstream of pulpemu is flashed into the board. It's the log after I run the command $make run platform=fpga.

    gapy --target=pulp --platform=fpga --work-dir=/home/jzh/pulp-sdk/applications/MobileNetV1/BUILD/PULP/GCC_RISCV/ --config-opt=cluster/nb_pe=8  --config-opt=flash/content/partitions/readfs/files=DORY_network/ConvBNRelu0_weights.hex  --config-opt=flash/content/partitions/readfs/files=DORY_network/ConvDWBNRelu1_weights.hex  --config-opt=flash/content/partitions/readfs/files=DORY_network/ConvBNRelu2_weights.hex  --config-opt=flash/content/partitions/readfs/files=DORY_network/ConvDWBNRelu3_weights.hex  --config-opt=flash/content/partitions/readfs/files=DORY_network/ConvBNRelu4_weights.hex  --config-opt=flash/content/partitions/readfs/files=DORY_network/ConvDWBNRelu5_weights.hex  --config-opt=flash/content/partitions/readfs/files=DORY_network/ConvBNRelu6_weights.hex  --config-opt=flash/content/partitions/readfs/files=DORY_network/ConvDWBNRelu7_weights.hex  --config-opt=flash/content/partitions/readfs/files=DORY_network/ConvBNRelu8_weights.hex  --config-opt=flash/content/partitions/readfs/files=DORY_network/ConvDWBNRelu9_weights.hex  --config-opt=flash/content/partitions/readfs/files=DORY_network/ConvBNRelu10_weights.hex  --config-opt=flash/content/partitions/readfs/files=DORY_network/ConvDWBNRelu11_weights.hex  --config-opt=flash/content/partitions/readfs/files=DORY_network/ConvBNRelu12_weights.hex  --config-opt=flash/content/partitions/readfs/files=DORY_network/ConvDWBNRelu13_weights.hex  --config-opt=flash/content/partitions/readfs/files=DORY_network/ConvBNRelu14_weights.hex  --config-opt=flash/content/partitions/readfs/files=DORY_network/ConvDWBNRelu15_weights.hex  --config-opt=flash/content/partitions/readfs/files=DORY_network/ConvBNRelu16_weights.hex  --config-opt=flash/content/partitions/readfs/files=DORY_network/ConvDWBNRelu17_weights.hex  --config-opt=flash/content/partitions/readfs/files=DORY_network/ConvBNRelu18_weights.hex  --config-opt=flash/content/partitions/readfs/files=DORY_network/ConvDWBNRelu19_weights.hex  --config-opt=flash/content/partitions/readfs/files=DORY_network/ConvBNRelu20_weights.hex  --config-opt=flash/content/partitions/readfs/files=DORY_network/ConvDWBNRelu21_weights.hex  --config-opt=flash/content/partitions/readfs/files=DORY_network/ConvBNRelu22_weights.hex  --config-opt=flash/content/partitions/readfs/files=DORY_network/ConvDWBNRelu23_weights.hex  --config-opt=flash/content/partitions/readfs/files=DORY_network/ConvBNRelu24_weights.hex  --config-opt=flash/content/partitions/readfs/files=DORY_network/ConvDWBNRelu25_weights.hex  --config-opt=flash/content/partitions/readfs/files=DORY_network/ConvBNRelu26_weights.hex  --config-opt=flash/content/partitions/readfs/files=DORY_network/Gemm28_weights.hex  --config-opt=flash/content/partitions/readfs/files=DORY_network/inputs.hex   run --exec-prepare --exec --binary=/home/jzh/pulp-sdk/applications/MobileNetV1/BUILD/PULP/GCC_RISCV//main/main 
    Launching execution with command:
    openocd -c 'gdb_port disabled; telnet_port disabled; tcl_port disabled' -f None -f None -f tcl/jtag_boot_entry.tcl -c 'gap8_jtag_load_binary_and_start "/home/jzh/pulp-sdk/applications/MobileNetV1/BUILD/PULP/GCC_RISCV//main/main" elf 0x1c008080'
    Open On-Chip Debugger 0.11.0+dev-02060-g857b5ce (2021-10-19-21:04)
    Licensed under GNU GPL v2
    For bug reports, read
        http://openocd.org/doc/doxygen/bugs.html
    embedded:startup.tcl:26: Error: Can't find None
    in procedure 'script' 
    at file "embedded:startup.tcl", line 26
    Traceback (most recent call last):
      File "/home/jzh/pulp-sdk/tools/gapy/gapy", line 162, in <module>
        main()
      File "/home/jzh/pulp-sdk/tools/gapy/gapy", line 152, in main
        operationFunc(args, config)
      File "/home/jzh/pulp-sdk/tools/gapy/run.py", line 146, in operationFunc
        raise RuntimeError('Runner has failed with value: %d' % status)
    RuntimeError: Runner has failed with value: -1
    /home/jzh/pulp-sdk/rtos/pulpos/common/rules/pulpos/default_rules.mk:312: recipe for target 'run' failed
    make: *** [run] Error 1
    

    The openocd command is located in pulp-sdk/tools/gapy/runner/board/board_runner.py.

    I'm pretty new to FPGA, and it's hard for me to figure out the problem.

    Many thanks!

    opened by simple86 11
Owner
null
Automatic voice-synthetised summaries of latest research papers on arXiv

PaperWhisperer PaperWhisperer is a Python application that keeps you up-to-date with research papers. How? It retrieves the latest articles from arXiv

Valerio Velardo 124 Dec 20, 2022
AWS provides a Python SDK, "Boto3" ,which can be used to access the AWS-account from the local.

Boto3 - The AWS SDK for Python Boto3 is the Amazon Web Services (AWS) Software Development Kit (SDK) for Python, which allows Python developers to wri

Shreyas Srivastava 1 Oct 25, 2021
PoseCamera is python based SDK for human pose estimation through RGB webcam.

PoseCamera PoseCamera is python based SDK for human pose estimation through RGB webcam. Install install posecamera package through pip pip install pos

WonderTree 7 Jul 20, 2021
Python SDK for building, training, and deploying ML models

Overview of Kubeflow Fairing Kubeflow Fairing is a Python package that streamlines the process of building, training, and deploying machine learning (

Kubeflow 325 Dec 13, 2022
PyTorch version of Stable Baselines, reliable implementations of reinforcement learning algorithms.

PyTorch version of Stable Baselines, reliable implementations of reinforcement learning algorithms.

DLR-RM 4.7k Jan 1, 2023
Boundary IoU API (Beta version)

Boundary IoU API (Beta version) Bowen Cheng, Ross Girshick, Piotr Dollár, Alexander C. Berg, Alexander Kirillov [arXiv] [Project] [BibTeX] This API is

Bowen Cheng 177 Dec 29, 2022
[Open Source]. The improved version of AnimeGAN. Landscape photos/videos to anime

[Open Source]. The improved version of AnimeGAN. Landscape photos/videos to anime

CC 4.4k Dec 27, 2022
YOLTv4 builds upon YOLT and SIMRDWN, and updates these frameworks to use the most performant version of YOLO, YOLOv4

YOLTv4 builds upon YOLT and SIMRDWN, and updates these frameworks to use the most performant version of YOLO, YOLOv4. YOLTv4 is designed to detect objects in aerial or satellite imagery in arbitrarily large images that far exceed the ~600×600 pixel size typically ingested by deep learning object detection frameworks.

Adam Van Etten 161 Jan 6, 2023
A PaddlePaddle version image model zoo.

Paddle-Image-Models English | 简体中文 A PaddlePaddle version image model zoo. Install Package Install by pip: $ pip install ppim Install by wheel package

AgentMaker 131 Dec 7, 2022
Notspot robot simulation - Python version

Notspot robot simulation - Python version This repository contains all the files and code needed to simulate the notspot quadrupedal robot using Gazeb

null 50 Sep 26, 2022
mmdetection version of TinyBenchmark.

introduction This project is an mmdetection version of TinyBenchmark. TODO list: add TinyPerson dataset and evaluation add crop and merge for image du

null 34 Aug 27, 2022
Official implementation of FCL-taco2: Fast, Controllable and Lightweight version of Tacotron2 @ ICASSP 2021

FCL-Taco2: Towards Fast, Controllable and Lightweight Text-to-Speech synthesis (ICASSP 2021) Paper | Demo Block diagram of FCL-taco2, where the decode

Disong Wang 39 Sep 28, 2022
Pytorch version of VidLanKD: Improving Language Understanding viaVideo-Distilled Knowledge Transfer

VidLanKD Implementation of VidLanKD: Improving Language Understanding via Video-Distilled Knowledge Transfer by Zineng Tang, Jaemin Cho, Hao Tan, Mohi

Zineng Tang 54 Dec 20, 2022
The PyTorch improved version of TPAMI 2017 paper: Face Alignment in Full Pose Range: A 3D Total Solution.

Face Alignment in Full Pose Range: A 3D Total Solution By Jianzhu Guo. [Updates] 2020.8.30: The pre-trained model and code of ECCV-20 are made public

Jianzhu Guo 3.4k Jan 2, 2023
A modified version of DeepMind's Alphafold2 to divide CPU part (MSA and template searching) and GPU part (prediction model)

ParallelFold Author: Bozitao Zhong This is a modified version of DeepMind's Alphafold2 to divide CPU part (MSA and template searching) and GPU part (p

Bozitao Zhong 77 Dec 22, 2022
GPT-Code-Clippy (GPT-CC) is an open source version of GitHub Copilot

GPT-Code-Clippy (GPT-CC) is an open source version of GitHub Copilot, a language model -- based on GPT-3, called GPT-Codex -- that is fine-tuned on publicly available code from GitHub.

null 2.3k Jan 9, 2023
Pytorch version of SfmLearner from Tinghui Zhou et al.

SfMLearner Pytorch version This codebase implements the system described in the paper: Unsupervised Learning of Depth and Ego-Motion from Video Tinghu

Clément Pinard 909 Dec 22, 2022
PyTorch version of the paper 'Enhanced Deep Residual Networks for Single Image Super-Resolution' (CVPRW 2017)

About PyTorch 1.2.0 Now the master branch supports PyTorch 1.2.0 by default. Due to the serious version problem (especially torch.utils.data.dataloade

Sanghyun Son 2.1k Jan 1, 2023
Unofficial Alias-Free GAN implementation. Based on rosinality's version with expanded training and inference options.

Alias-Free GAN An unofficial version of Alias-Free Generative Adversarial Networks (https://arxiv.org/abs/2106.12423). This repository was heavily bas

dusk (they/them) 75 Dec 12, 2022