This is the latest version of the PULP SDK

Related tags

Deep Learningpulp-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
Supervised Sliding Window Smoothing Loss Function Based on MS-TCN for Video Segmentation

SSWS-loss_function_based_on_MS-TCN Supervised Sliding Window Smoothing Loss Function Based on MS-TCN for Video Segmentation Supervised Sliding Window

3 Aug 03, 2022
This respository includes implementations on Manifoldron: Direct Space Partition via Manifold Discovery

Manifoldron: Direct Space Partition via Manifold Discovery This respository includes implementations on Manifoldron: Direct Space Partition via Manifo

dayang_wang 4 Apr 28, 2022
Generic Event Boundary Detection: A Benchmark for Event Segmentation

Generic Event Boundary Detection: A Benchmark for Event Segmentation We release our data annotation & baseline codes for detecting generic event bound

47 Nov 22, 2022
Neural Dynamic Policies for End-to-End Sensorimotor Learning

This is a PyTorch based implementation for our NeurIPS 2020 paper on Neural Dynamic Policies for end-to-end sensorimotor learning.

Shikhar Bahl 47 Dec 11, 2022
BasicRL: easy and fundamental codes for deep reinforcement learning。It is an improvement on rainbow-is-all-you-need and OpenAI Spinning Up.

BasicRL: easy and fundamental codes for deep reinforcement learning BasicRL is an improvement on rainbow-is-all-you-need and OpenAI Spinning Up. It is

RayYoh 12 Apr 28, 2022
PyTorch implementation of "Efficient Neural Architecture Search via Parameters Sharing"

Efficient Neural Architecture Search (ENAS) in PyTorch PyTorch implementation of Efficient Neural Architecture Search via Parameters Sharing. ENAS red

Taehoon Kim 2.6k Dec 31, 2022
Official pytorch implementation of "Feature Stylization and Domain-aware Contrastive Loss for Domain Generalization" ACMMM 2021 (Oral)

Feature Stylization and Domain-aware Contrastive Loss for Domain Generalization This is an official implementation of "Feature Stylization and Domain-

22 Sep 22, 2022
OpenMMLab Model Deployment Toolset

Introduction English | 简体中文 MMDeploy is an open-source deep learning model deployment toolset. It is a part of the OpenMMLab project. Major features F

OpenMMLab 1.5k Dec 30, 2022
A forwarding MPI implementation that can use any other MPI implementation via an MPI ABI

MPItrampoline MPI wrapper library: MPI trampoline library: MPI integration tests: MPI is the de-facto standard for inter-node communication on HPC sys

Erik Schnetter 31 Dec 22, 2022
An open source object detection toolbox based on PyTorch

MMDetection is an open source object detection toolbox based on PyTorch. It is a part of the OpenMMLab project.

Bo Chen 24 Dec 28, 2022
VIMPAC: Video Pre-Training via Masked Token Prediction and Contrastive Learning

This is a release of our VIMPAC paper to illustrate the implementations. The pretrained checkpoints and scripts will be soon open-sourced in HuggingFace transformers.

Hao Tan 74 Dec 03, 2022
nnFormer: Interleaved Transformer for Volumetric Segmentation

nnFormer: Interleaved Transformer for Volumetric Segmentation Code for paper "nnFormer: Interleaved Transformer for Volumetric Segmentation ". Please

jsguo 610 Dec 28, 2022
PhysCap: Physically Plausible Monocular 3D Motion Capture in Real Time

PhysCap: Physically Plausible Monocular 3D Motion Capture in Real Time The implementation is based on SIGGRAPH Aisa'20. Dependencies Python 3.7 Ubuntu

soratobtai 124 Dec 08, 2022
"Moshpit SGD: Communication-Efficient Decentralized Training on Heterogeneous Unreliable Devices", official implementation

Moshpit SGD: Communication-Efficient Decentralized Training on Heterogeneous Unreliable Devices This repository contains the official PyTorch implemen

Yandex Research 21 Oct 18, 2022
Implicit MLE: Backpropagating Through Discrete Exponential Family Distributions

torch-imle Concise and self-contained PyTorch library implementing the I-MLE gradient estimator proposed in our NeurIPS 2021 paper Implicit MLE: Backp

UCL Natural Language Processing 249 Jan 03, 2023
LabelImg is a graphical image annotation tool.

LabelImgPlus LabelImg is a graphical image annotation tool. This project is not updated with new functions now. More functions are supported with Labe

lzx1413 200 Dec 20, 2022
使用OpenCV部署全景驾驶感知网络YOLOP,可同时处理交通目标检测、可驾驶区域分割、车道线检测,三项视觉感知任务,包含C++和Python两种版本的程序实现。本套程序只依赖opencv库就可以运行, 从而彻底摆脱对任何深度学习框架的依赖。

YOLOP-opencv-dnn 使用OpenCV部署全景驾驶感知网络YOLOP,可同时处理交通目标检测、可驾驶区域分割、车道线检测,三项视觉感知任务,依然是包含C++和Python两种版本的程序实现 onnx文件从百度云盘下载,链接:https://pan.baidu.com/s/1A_9cldU

178 Jan 07, 2023
Learning High-Speed Flight in the Wild

Learning High-Speed Flight in the Wild This repo contains the code associated to the paper Learning Agile Flight in the Wild. For more information, pl

Robotics and Perception Group 391 Dec 29, 2022
ICON: Implicit Clothed humans Obtained from Normals (CVPR 2022)

ICON: Implicit Clothed humans Obtained from Normals Yuliang Xiu · Jinlong Yang · Dimitrios Tzionas · Michael J. Black CVPR 2022 News 🚩 [2022/04/26] H

Yuliang Xiu 1.1k Jan 04, 2023
A multi-functional library for full-stack Deep Learning. Simplifies Model Building, API development, and Model Deployment.

chitra What is chitra? chitra (चित्र) is a multi-functional library for full-stack Deep Learning. It simplifies Model Building, API development, and M

Aniket Maurya 210 Dec 21, 2022