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
Point-NeRF: Point-based Neural Radiance Fields

Point-NeRF: Point-based Neural Radiance Fields Project Sites | Paper | Primary c

Qiangeng Xu 662 Jan 01, 2023
Implementation of ViViT: A Video Vision Transformer

ViViT: A Video Vision Transformer Unofficial implementation of ViViT: A Video Vision Transformer. Notes: This is in WIP. Model 2 is implemented, Model

Rishikesh (ऋषिकेश) 297 Jan 06, 2023
Code for the Paper: Alexandra Lindt and Emiel Hoogeboom.

Discrete Denoising Flows This repository contains the code for the experiments presented in the paper Discrete Denoising Flows [1]. To give a short ov

Alexandra Lindt 3 Oct 09, 2022
PyTorch code for EMNLP 2021 paper: Don't be Contradicted with Anything! CI-ToD: Towards Benchmarking Consistency for Task-oriented Dialogue System

Don’t be Contradicted with Anything!CI-ToD: Towards Benchmarking Consistency for Task-oriented Dialogue System This repository contains the PyTorch im

Libo Qin 25 Sep 06, 2022
Model of an AI powered sign language interpreter.

TEXT AND SPEECH TO SIGN LANGUAGE. A web application which takes in text or live audio speech recording as input, converts and displays the relevant Si

Mark Gatere 4 Mar 30, 2022
Extreme Rotation Estimation using Dense Correlation Volumes

Extreme Rotation Estimation using Dense Correlation Volumes This repository contains a PyTorch implementation of the paper: Extreme Rotation Estimatio

Ruojin Cai 29 Nov 18, 2022
Wenet STT Python

Wenet STT Python Beta Software Simple Python library, distributed via binary wheels with few direct dependencies, for easily using WeNet models for sp

David Zurow 33 Feb 21, 2022
Patch SVDD for Image anomaly detection

Patch SVDD Patch SVDD for Image anomaly detection. Paper: https://arxiv.org/abs/2006.16067 (published in ACCV 2020). Original Code : https://github.co

Hong-Jeongmin 0 Dec 03, 2021
[NeurIPS 2021] Introspective Distillation for Robust Question Answering

Introspective Distillation (IntroD) This repository is the Pytorch implementation of our paper "Introspective Distillation for Robust Question Answeri

Yulei Niu 13 Jul 26, 2022
Learning Open-World Object Proposals without Learning to Classify

Learning Open-World Object Proposals without Learning to Classify Pytorch implementation for "Learning Open-World Object Proposals without Learning to

Dahun Kim 149 Dec 22, 2022
Research Artifact of USENIX Security 2022 Paper: Automated Side Channel Analysis of Media Software with Manifold Learning

Automated Side Channel Analysis of Media Software with Manifold Learning Official implementation of USENIX Security 2022 paper: Automated Side Channel

Yuanyuan Yuan 175 Jan 07, 2023
A Transformer-Based Siamese Network for Change Detection

ChangeFormer: A Transformer-Based Siamese Network for Change Detection (Under review at IGARSS-2022) Wele Gedara Chaminda Bandara, Vishal M. Patel Her

Wele Gedara Chaminda Bandara 214 Dec 29, 2022
Software & Hardware to do multi color printing with Sharpies

3D Print Colorizer is a combination of 3D printed parts and a Cura plugin which allows anyone with an Ender 3 like 3D printer to produce multi colored

343 Jan 06, 2023
[ICCV'21] UNISURF: Unifying Neural Implicit Surfaces and Radiance Fields for Multi-View Reconstruction

UNISURF: Unifying Neural Implicit Surfaces and Radiance Fields for Multi-View Reconstruction Project Page | Paper | Supplementary | Video This reposit

331 Dec 28, 2022
Official PyTorch implementation of MX-Font (Multiple Heads are Better than One: Few-shot Font Generation with Multiple Localized Experts)

Introduction Pytorch implementation of Multiple Heads are Better than One: Few-shot Font Generation with Multiple Localized Expert. | paper Song Park1

Clova AI Research 97 Dec 23, 2022
an implementation of Revisiting Adaptive Convolutions for Video Frame Interpolation using PyTorch

revisiting-sepconv This is a reference implementation of Revisiting Adaptive Convolutions for Video Frame Interpolation [1] using PyTorch. Given two f

Simon Niklaus 59 Dec 22, 2022
An Inverse Kinematics library aiming performance and modularity

IKPy Demo Live demos of what IKPy can do (click on the image below to see the video): Also, a presentation of IKPy: Presentation. Features With IKPy,

Pierre Manceron 481 Jan 02, 2023
(JMLR'19) A Python Toolbox for Scalable Outlier Detection (Anomaly Detection)

Python Outlier Detection (PyOD) Deployment & Documentation & Stats Build Status & Coverage & Maintainability & License PyOD is a comprehensive and sca

Yue Zhao 6.6k Jan 03, 2023
DeepConsensus uses gap-aware sequence transformers to correct errors in Pacific Biosciences (PacBio) Circular Consensus Sequencing (CCS) data.

DeepConsensus DeepConsensus uses gap-aware sequence transformers to correct errors in Pacific Biosciences (PacBio) Circular Consensus Sequencing (CCS)

Google 149 Dec 19, 2022
PyTorch implementation of DCT fast weight RNNs

DCT based fast weights This repository contains the official code for the paper: Training and Generating Neural Networks in Compressed Weight Space. T

Kazuki Irie 4 Dec 24, 2022