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
Automated Attendance Project Using Face Recognition

dependencies for project: cmake 3.22.1 dlib 19.22.1 face-recognition 1.3.0 openc

Rohail Taha 1 Jan 09, 2022
pixelNeRF: Neural Radiance Fields from One or Few Images

pixelNeRF: Neural Radiance Fields from One or Few Images Alex Yu, Vickie Ye, Matthew Tancik, Angjoo Kanazawa UC Berkeley arXiv: http://arxiv.org/abs/2

Alex Yu 1k Jan 04, 2023
Warning: This project does not have any current developer. See bellow.

Pylearn2: A machine learning research library Warning : This project does not have any current developer. We will continue to review pull requests and

Laboratoire d’Informatique des Systèmes Adaptatifs 2.7k Dec 26, 2022
OpenLT: An open-source project for long-tail classification

OpenLT: An open-source project for long-tail classification Supported Methods for Long-tailed Recognition: Cross-Entropy Loss Focal Loss (ICCV'17) Cla

Ming Li 37 Sep 15, 2022
Here is the implementation of our paper S2VC: A Framework for Any-to-Any Voice Conversion with Self-Supervised Pretrained Representations.

S2VC Here is the implementation of our paper S2VC: A Framework for Any-to-Any Voice Conversion with Self-Supervised Pretrained Representations. In thi

81 Dec 15, 2022
Dilated Convolution for Semantic Image Segmentation

Multi-Scale Context Aggregation by Dilated Convolutions Introduction Properties of dilated convolution are discussed in our ICLR 2016 conference paper

Fisher Yu 764 Dec 26, 2022
Background Matting: The World is Your Green Screen

Background Matting: The World is Your Green Screen By Soumyadip Sengupta, Vivek Jayaram, Brian Curless, Steve Seitz, and Ira Kemelmacher-Shlizerman Th

Soumyadip Sengupta 4.6k Jan 04, 2023
House-GAN++: Generative Adversarial Layout Refinement Network towards Intelligent Computational Agent for Professional Architects

House-GAN++ Code and instructions for our paper: House-GAN++: Generative Adversarial Layout Refinement Network towards Intelligent Computational Agent

122 Dec 28, 2022
SimBERT升级版(SimBERTv2)!

RoFormer-Sim RoFormer-Sim,又称SimBERTv2,是我们之前发布的SimBERT模型的升级版。 介绍 https://kexue.fm/archives/8454 训练 tensorflow 1.14 + keras 2.3.1 + bert4keras 0.10.6 下载

318 Dec 31, 2022
We simulate traveling back in time with a modern camera to rephotograph famous historical subjects.

[SIGGRAPH Asia 2021] Time-Travel Rephotography [Project Website] Many historical people were only ever captured by old, faded, black and white photos,

298 Jan 02, 2023
Defense-GAN: Protecting Classifiers Against Adversarial Attacks Using Generative Models (published in ICLR2018)

Defense-GAN: Protecting Classifiers Against Adversarial Attacks Using Generative Models Pouya Samangouei*, Maya Kabkab*, Rama Chellappa [*: authors co

Maya Kabkab 212 Dec 07, 2022
Implementation of "Learning Multi-Granular Hypergraphs for Video-Based Person Re-Identification"

hypergraph_reid Implementation of "Learning Multi-Granular Hypergraphs for Video-Based Person Re-Identification" If you find this help your research,

62 Dec 21, 2022
CUAD

Contract Understanding Atticus Dataset This repository contains code for the Contract Understanding Atticus Dataset (CUAD), a dataset for legal contra

The Atticus Project 273 Dec 17, 2022
Visualizing lattice vibration information from phonon dispersion to atoms (For GPUMD)

Phonon-Vibration-Viewer (For GPUMD) Visualizing lattice vibration information from phonon dispersion for primitive atoms. In this tutorial, we will in

Liangting 6 Dec 10, 2022
I created My own Virtual Artificial Intelligence named genesis, He can assist with my Tasks and also perform some analysis,,

Virtual-Artificial-Intelligence-genesis- I created My own Virtual Artificial Intelligence named genesis, He can assist with my Tasks and also perform

AKASH M 1 Nov 05, 2021
Prototype python implementation of the ome-ngff table spec

Prototype python implementation of the ome-ngff table spec

Kevin Yamauchi 8 Nov 20, 2022
Semantic Segmentation for Real Point Cloud Scenes via Bilateral Augmentation and Adaptive Fusion (CVPR 2021)

Semantic Segmentation for Real Point Cloud Scenes via Bilateral Augmentation and Adaptive Fusion (CVPR 2021) This repository is for BAAF-Net introduce

90 Dec 29, 2022
Constraint-based geometry sketcher for blender

Constraint-based sketcher addon for Blender that allows to create precise 2d shapes by defining a set of geometric constraints like tangent, distance,

1.7k Dec 31, 2022
Docker containers of baseline agents for the Crafter environment

Crafter Baselines This repository contains Docker containers for running various baselines on the Crafter environment. Reward Agents DreamerV2 based o

Danijar Hafner 17 Sep 25, 2022
PyTorch Implementation of Sparse DETR

Sparse DETR By Byungseok Roh*, Jaewoong Shin*, Wuhyun Shin*, and Saehoon Kim at Kakao Brain. (*: Equal contribution) This repository is an official im

Kakao Brain 113 Dec 28, 2022