Skip to content

Add a Specific Implementation for RISC-V ISA AI Extensions  #36

Description

@antoinecarme

ML2CPP can generate specific C++ code with RISC-V extensions allowing all scikit-learn, pytorch, caret ML models to be deployable natively on this platform.

RISC-V extensions have the advantage to be non-proprietary.

This is a place holder for following the recent efforts on designing RISC-V specific extensions for AI/ML.

No public hardware is available yet.

Sifive Intelligence X280 CPU is an interesting start point. https://www.sifive.com/blog/introduction-to-the-sifive-intelligence-x280

Activity

  1. antoinecarme commented on Sep 7, 2022

    @antoinecarme
    MemberAuthor

    image

  2. antoinecarme commented on Sep 7, 2022

    @antoinecarme
    MemberAuthor
  3. antoinecarme commented on Sep 7, 2022

    @antoinecarme
    MemberAuthor

    First SBCs with Sifive CPU hit the market (No AI Extensions ;)

    https://www.kickstarter.com/projects/starfive/visionfive-2

  4. antoinecarme commented on Sep 7, 2022

    @antoinecarme
    MemberAuthor

    image

  5. antoinecarme commented on Sep 7, 2022

    @antoinecarme
    MemberAuthor
  6. antoinecarme commented on Sep 7, 2022

    @antoinecarme
    MemberAuthor

    SiFive Tech Talk on Accelerating AI: Past, Present, and Future
    by Krste Asanovic

    https://www.youtube.com/watch?v=8n2HLp2gtYs

    “V” Vector Extension Proposal
    Krste Asanovic, UC Berkeley & SiFive

    https://www.youtube.com/watch?v=K2CGz1pzNXo

  7. antoinecarme commented on Sep 8, 2022

    @antoinecarme
    MemberAuthor

    RISC-V Workshop Barcelona May 7th 2018

    Vector ISA

    Presentation by Roger Espasa at Esperanto Technologies on May 7, 2018 at the RISC-V Workshop in Barcelona, hosted by Barcelona Supercomputing Center and Universitat Politecnica de Catalunya in Barcelona, Spain.

    https://www.youtube.com/watch?v=S4fxBZD79gc

  8. antoinecarme commented on Oct 1, 2022

    @antoinecarme
    MemberAuthor

    Try using c++ Standard Data-parallel vector library when available (Allow all SIMD implementations : MMX, SSE, AVX-512, ARM Neon, IBM, ...)

    https://en.cppreference.com/w/cpp/experimental/simd
    https://github.com/VcDevel/std-simd
    https://gcc.gnu.org/git/?p=gcc.git;a=blob;f=libstdc%2B%2B-v3/include/experimental/simd;hb=HEAD

  9. antoinecarme commented on Oct 1, 2022

    @antoinecarme
    MemberAuthor
    antoine@z600:~$ vdir /usr/include/c++/11/experimental/bits/
    fs_dir.h                lfts_config.h           simd_builtin.h          simd.h                  
    simd_scalar.h           fs_fwd.h                net.h                   simd_converter.h        
    simd_math.h             simd_x86_conversions.h  fs_ops.h                numeric_traits.h        
    simd_detail.h           simd_neon.h             simd_x86.h              fs_path.h               
    shared_ptr.h            simd_fixed_size.h       simd_ppc.h              string_view.tcc   
    
  10. antoinecarme commented on Nov 2, 2022

    @antoinecarme
    MemberAuthor

    SiFive P670 and P470 RISC-V processors feature RISC-V Vector Extensions

    https://www.cnx-software.com/2022/11/02/sifive-p670-and-p470-risc-v-processors-add-risc-v-vector-extensions/

  11. antoinecarme commented on Nov 26, 2022

    @antoinecarme
    MemberAuthor

    RISC-V has standardized a series of standard extensions beyond the integer base instructions which can be implemented or omitted as desired depending on the design goals (e.g. energy/area/performance/storage goals).

    https://en.wikichip.org/wiki/risc-v/standard_extensions

  12. antoinecarme commented on Nov 26, 2022

    @antoinecarme
    MemberAuthor

    image

  13. antoinecarme commented on Feb 14, 2023

    @antoinecarme
    MemberAuthor

    https://stackoverflow.com/questions/47405717/dot-product-of-vectors-with-simd

    image

    May be ml2cpp already generates code that a smart compiler can vectorize automatically with SIMD instructions. This is also true for all hardware architectures.

    ml2cpp only generated source code, is not responsible of the environment this code will be compiled/used in. PERIOD.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions