US 11,809,908 B2
Runtime virtualization of reconfigurable data flow resources
Ravinder Kumar, Fremont, CA (US); Conrad Alexander Turlik, Menlo Park, CA (US); Arnav Goel, San Jose, CA (US); Qi Zheng, Fremont, CA (US); Raghunath Shenbagam, San Jose, CA (US); Anand Misra, Fremont, CA (US); and Ananda Reddy Vayyala, San Jose, CA (US)
Assigned to SambaNova Systems, Inc., Palo Alto, CA (US)
Filed by SambaNova Systems, Inc., Palo Alto, CA (US)
Filed on Jul. 7, 2020, as Appl. No. 16/922,975.
Prior Publication US 2022/0012077 A1, Jan. 13, 2022
Int. Cl. G06F 9/50 (2006.01); G06F 15/78 (2006.01)
CPC G06F 9/5011 (2013.01) [G06F 9/5016 (2013.01); G06F 9/5077 (2013.01); G06F 15/7867 (2013.01); G06F 15/7871 (2013.01); G06F 2209/501 (2013.01); G06F 2209/5011 (2013.01)] 28 Claims
OG exemplary drawing
 
1. A data processing system, comprising:
a pool of reconfigurable data flow resources, the reconfigurable data flow resources in the pool of reconfigurable data flow resources including arrays of physical configurable units and memory, the arrays of physical configurable units comprising physical compute units and physical memory units of a coarse-grained reconfigurable processor; and
a runtime processor operatively coupled to the pool of reconfigurable data flow resources, the runtime processor including logic to:
receive a plurality of configuration files for user applications, the configuration files in the plurality of configuration files including configurations of virtual data flow resources mapped to individual applications of the user applications, the virtual data flow resources representing functionality of physical configurable units required to execute the user applications;
allocate the physical configurable units and the memory in the pool of reconfigurable data flow resources to the virtual data flow resources, and load the configuration files to the allocated physical configurable units; and
execute the user applications using the allocated physical configurable units and memory;
wherein the runtime processor runs in a host processor operatively coupled to the pool of reconfigurable data flow resources, wherein the runtime processor includes a runtime library that runs in a userspace of the host processor and a kernel module that runs in a kernelspace of the host processor, and wherein the kernel module includes a resource manager and a driver;
the runtime library passes a file descriptor identifying the configurations of virtual data flow resources to the kernel module using an input-output control (IOCTL) system call;
wherein the resource manager uses the file descriptor to allocate the reconfigurable data flow resources to the virtual data flow resources and returns a context structure identifying the allocated reconfigurable data flow resources to the runtime library; and
wherein the runtime library is configured with logic to execute a configuration load process that includes generating a dynamic state profile based on the configurations of virtual data flow resources and progressively traversing states of the dynamic state profile, the states including at least one of loading the configuration files, loading arguments modifying the configuration files, loading virtual memory segments supporting the configuration files, beginning execution of the configuration files, pausing execution of the configuration files, and unloading the configurations files after execution.