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
This is the code of NeurIPS'21 paper "Towards Enabling Meta-Learning from Target Models".

ST This is the code of NeurIPS 2021 paper "Towards Enabling Meta-Learning from Target Models". If you use any content of this repo for your work, plea

Su Lu 7 Dec 06, 2022
A sequence of Jupyter notebooks featuring the 12 Steps to Navier-Stokes

CFD Python Please cite as: Barba, Lorena A., and Forsyth, Gilbert F. (2018). CFD Python: the 12 steps to Navier-Stokes equations. Journal of Open Sour

Barba group 2.6k Dec 30, 2022
CTRL-C: Camera calibration TRansformer with Line-Classification

CTRL-C: Camera calibration TRansformer with Line-Classification This repository contains the official code and pretrained models for CTRL-C (Camera ca

57 Nov 14, 2022
ALL Snow Removed: Single Image Desnowing Algorithm Using Hierarchical Dual-tree Complex Wavelet Representation and Contradict Channel Loss (HDCWNet)

ALL Snow Removed: Single Image Desnowing Algorithm Using Hierarchical Dual-tree Complex Wavelet Representation and Contradict Channel Loss (HDCWNet) (

Wei-Ting Chen 49 Dec 27, 2022
Dirty Pixels: Towards End-to-End Image Processing and Perception

Dirty Pixels: Towards End-to-End Image Processing and Perception This repository contains the code for the paper Dirty Pixels: Towards End-to-End Imag

50 Nov 18, 2022
InsTrim: Lightweight Instrumentation for Coverage-guided Fuzzing

InsTrim The paper: InsTrim: Lightweight Instrumentation for Coverage-guided Fuzzing Build Prerequisite llvm-8.0-dev clang-8.0 cmake = 3.2 Make git cl

75 Dec 23, 2022
MIMIC Code Repository: Code shared by the research community for the MIMIC-III database

MIMIC Code Repository The MIMIC Code Repository is intended to be a central hub for sharing, refining, and reusing code used for analysis of the MIMIC

MIT Laboratory for Computational Physiology 1.8k Dec 26, 2022
Building blocks for uncertainty-aware cycle consistency presented at NeurIPS'21.

UncertaintyAwareCycleConsistency This repository provides the building blocks and the API for the work presented in the NeurIPS'21 paper Robustness vi

EML Tübingen 19 Dec 12, 2022
😊 Python module for face feature changing

PyWarping Python module for face feature changing Installation pip install pywarping If you get an error: No such file or directory: 'cmake': 'cmake',

Dopevog 10 Sep 10, 2021
The repository is for safe reinforcement learning baselines.

Safe-Reinforcement-Learning-Baseline The repository is for Safe Reinforcement Learning (RL) research, in which we investigate various safe RL baseline

172 Dec 19, 2022
An University Project of Quera Web Crawling.

WebCrawlerProject An University Project of Quera Web Crawling. خزشگر اینستاگرام در این پروژه شما باید با استفاده از کتابخانه های زیر یک خزشگر اینستاگر

Mahdi 3 Aug 12, 2022
TransVTSpotter: End-to-end Video Text Spotter with Transformer

TransVTSpotter: End-to-end Video Text Spotter with Transformer Introduction A Multilingual, Open World Video Text Dataset and End-to-end Video Text Sp

weijiawu 66 Dec 26, 2022
Image De-raining Using a Conditional Generative Adversarial Network

Image De-raining Using a Conditional Generative Adversarial Network [Paper Link] [Project Page] He Zhang, Vishwanath Sindagi, Vishal M. Patel In this

He Zhang 216 Dec 18, 2022
Investigating Attention Mechanism in 3D Point Cloud Object Detection (arXiv 2021)

Investigating Attention Mechanism in 3D Point Cloud Object Detection (arXiv 2021) This repository is for the following paper: "Investigating Attention

52 Nov 19, 2022
RLHive: a framework designed to facilitate research in reinforcement learning.

RLHive is a framework designed to facilitate research in reinforcement learning. It provides the components necessary to run a full RL experiment, for both single agent and multi agent environments.

88 Jan 05, 2023
Code and data for the paper "Hearing What You Cannot See"

Hearing What You Cannot See: Acoustic Vehicle Detection Around Corners Public repository of the paper "Hearing What You Cannot See: Acoustic Vehicle D

TU Delft Intelligent Vehicles 26 Jul 13, 2022
Nerf pl - NeRF (Neural Radiance Fields) and NeRF in the Wild using pytorch-lightning

nerf_pl Update: an improved NSFF implementation to handle dynamic scene is open! Update: NeRF-W (NeRF in the Wild) implementation is added to nerfw br

AI葵 1.8k Dec 30, 2022
Code corresponding to The Introspective Agent: Interdependence of Strategy, Physiology, and Sensing for Embodied Agents

The Introspective Agent: Interdependence of Strategy, Physiology, and Sensing for Embodied Agents This is the code corresponding to The Introspective

0 Jan 10, 2022
Tutorial materials for Part of NSU Intro to Deep Learning with PyTorch.

Intro to Deep Learning Materials are part of North South University (NSU) Intro to Deep Learning with PyTorch workshop series. (Slides) Related materi

Hasib Zunair 9 Jun 08, 2022
N-Omniglot is a large neuromorphic few-shot learning dataset

N-Omniglot [Paper] || [Dataset] N-Omniglot is a large neuromorphic few-shot learning dataset. It reconstructs strokes of Omniglot as videos and uses D

11 Dec 05, 2022