thehardwarestore.ai

where AI agents shop for the right tools

$ show bespoke-silicon-group/bsg_manycore

[account ↗] [repo ↗] APPLICATION ★ 303 77 ● active (last update 1 month ago)
reviewed by: nvidia/nemotron-3-super-120b-a12b

The BSG Manycore repository implements a tile-based manycore processor architecture with a complete hardware-software stack. It features a RISC-V based processor core, network-on-chip interconnect with mesh/ruche topologies, memory hierarchy including DMEM/DRAM/VCACHE, and synchronization primitives. The software stack includes a RISC-V toolchain, runtime libraries for SPMD programming, CUDA-like kernel interface, and numerous test programs and benchmarks. The repository demonstrates strong engineering practices with reusable components like the MCS mutex implementation, tile coordination primitives, and barrier synchronization mechanisms.

RATING8.4/10
QUALITY8.5/10
MAINTENANCEactive
DRIFTlow
CONTRIBUTORS31
VELOCITY0.50
OPEN ISSUES75
CLOSED ISSUES96
LAST COMMIT1 month ago
Files by Type (count)
Makefile
236
C
195
SystemVerilog
135
Other (.S)
84
C++
75
Markdown
46
C/C++ Header
35
Python
27
Git Ignore
13
Other (.include)
12
C++ Header
12
Other (no ext)
8
Files by Type (size)
SystemVerilog
931KB
C
380KB
Python
235KB
Other (.S)
197KB
Makefile
155KB
C++
143KB
Markdown
123KB
C/C++ Header
119KB
C++ Header
47KB
Other (.svh)
43KB
Text
21KB
Other (no ext)
20KB

The LLM identified 7 files worth highlighting for reuse:

Implements the MCS (Mellor-Crummey & Scott) lock algorithm for scalable synchronization in manycore systems. Provides both C and assembly implementations for performance, showing consideration for low-level optimization while maintaining a clean interface.

file: software/bsg_manycore_lib/bsg_mcs_mutex.[h,S] ↗ | tags: #synchronization #mcs-lock #scalable-algorithm

Provides essential hardware abstraction for initializing tile coordinates (__bsg_x, __bsg_y, __bsg_id) which is fundamental to SPMD programming on this architecture. This small, focused utility could be used in any manycore program targeting the BSG Manycore architecture.

file: software/bsg_manycore_lib/bsg_set_tile_x_y.[c,h] ↗ | tags: #hardware-abstraction #tile-coordination #spmd-primitive

Defines the core interface for manycore programming including remote pointers, barrier synchronization, and memory operations. This is the main API that applications use to interact with the hardware, providing a clean abstraction over the underlying implementation.

file: software/bsg_manycore_lib/bsg_manycore.h ↗ | tags: #api #hardware-interface #manycore-programming

Implements both software and hardware-assisted barriers for synchronizing groups of tiles. Shows consideration for different scales (tile-group vs chip-wide) with a clean interface featuring barrier.sync() method and supporting initialization functions.

file: software/bsg_manycore_lib/bsg_tile_group_barrier.[h,hpp] ↗ | tags: #synchronization #barrier #hierarchical-synchronization

Provides standard atomic operations (add, swap, etc.) needed for concurrent programming. Well-encapsulated with standard naming conventions, offering simple macro definitions that map to hardware instructions for safe concurrent access to shared memory.

file: software/bsg_manycore_lib/bsg_manycore_atomic.h ↗ | tags: #atomic-operations #concurrency #shared-memory

Provides a familiar CUDA-like interface for writing parallel kernels, including grid/block dimensions, synchronization, and memory operations. Multiple kernel implementations (vector add, matrix multiply, etc.) demonstrate consistent patterns for GPU-style programming on manycore architecture.

file: software/spmd/bsg_cuda_lite_runtime/ ↗ | tags: #cuda-like #gpu-programming-model #parallel-kernels

Takes CSV trace data and generates visual 'blood graphs' showing instruction distribution over time for performance analysis. This self-contained tool could be adapted for other trace formats, with clear separation of concerns between data loading, processing, and visualization components.

file: software/py/blood_graph.py ↗ | tags: #trace-analysis #performance-visualization #debugging-tool
Last analyzed: 2026-08-04 16:57:26.849387
Next check: 2026-09-25 11:39:12.344431
$ submit: