Changes between Version 10 and Version 11 of user_applications
- Timestamp:
- Oct 16, 2015, 1:47:45 PM (9 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
user_applications
v10 v11 4 4 5 5 The following applications use the GIET_VM [wiki:library_stdio system calls] and [wiki:user_libraries user libraries]. 6 The multi-threaded applications use the POSIX threads API , and have been specifically designed to analyse the TSAR manycore architecture scalability.6 The multi-threaded applications use the POSIX threads API. 7 7 8 8 == __shell__ == 9 9 10 This single thread interactive application can be used to accessthe FAT32 file system, or to dynamically activate or de-activate11 others applications. When is mapped on the target architecture, it is automatically launched at the end of the boot phase.10 This single thread interactive application can be used to handle the FAT32 file system, or to dynamically activate or de-activate 11 others applications. When this application is mapped on the target architecture, it is automatically launched at the end of the boot phase. 12 12 The list of available commands can be obtained with the ''help'' command. 13 13 … … 18 18 == __ display__ == 19 19 20 This single thread application illustrates the use of the CMA (chained Buffer DMA) peripheral to display a stream of images.20 This single thread application illustrates the use of various peripherals such as the IOC (external block device), or the CMA (chained Buffer DMA) peripheral to display a stream of images. 21 21 The application read a stream of images from the ''/misc/images_128.ram'' file, 22 stored on aFAT32 disk controller. It displays the stream of images on the FBF (graphical display) peripheral. The ''images_128.raw'' contains 20 images : 128 lines * 128 pixels / 1 byte per pixel.22 stored on the FAT32 disk controller. It displays the stream of images on the FBF (graphical display) peripheral. The ''images_128.raw'' contains 20 images : 128 lines * 128 pixels / 1 byte per pixel. 23 23 24 24 It requires one private TTY terminal. … … 28 28 == __coproc__ == 29 29 30 This single thread application illustrates the use of multi-channelshardware accelerators by an user application.30 This single thread application illustrates the use of hardware accelerators by an user application. 31 31 The hardware coprocessor must be connected to the system by a ''vci_mwmr_dma'' component. 32 32 In this application, the coprocessor makes the Greater Common Divider computation between two vectors … … 39 39 == __sort__ == 40 40 41 This multi-threaded application is a very simple parallel sort. The input is an array of randomly generated integers.41 This first multi-threaded application is a very simple parallel sort. The input is an array of randomly generated integers. 42 42 43 43 It can run on a multi-processors, multi-clusters architecture, with one thread per processor core. … … 86 86 == __gameoflife__ == 87 87 88 This multi-threaded application is an emulation of the Game of Life automaton. 89 The world size is defined by the Frame Buffer width and height. 90 91 It that can run on a multi-processors, multi-clusters architecture. 92 * If the number of processors is larger than the number of lines, the number of threads is equal to the number of lines, and each thread process one single line. 93 * if the number of processors is not larger than the number of lines, the number of threads is equal to the number of processors, and each thread process height/nthreads (or height/nthreads + 1) lines. 94 95 The thread running on processor P(0,0,0) execute the main() function, that initialises the barrier, the TTY terminal, the CMA controler, and launch the other threads, before calling the execute() function. 96 Other threads are just running the execute() function. 97 98 The total number of clusters cannot be larger than 16 *16. 99 The total number of processors per cluster cannot be larger than 4. 100 101 It uses one TTY terminal shared by all threads. 102 88 103 The source code can be found [source:soft/giet_vm/applications/gameoflife/gameoflife.c here], and the mapping is defined [source:soft/giet_vm/applications/gameoflife/gameoflife.py here]. 89 104 … … 93 108 It uses the multi-channels NIC peripheral, and the chained buffers DMA controller, to receive and send packets on the Gigabit Ethernet port. 94 109 It can run on architectures containing up to 256 clusters, and up to 8 processors per cluster: one task per processor. 95 It requires as many private TTYs as the number of processors in cluster[0,0]. 110 111 It requires one TTY terminal shared by all threads. 96 112 97 113 This application is described as a TCG (Task and Communication Graph) containing (N+2) tasks per cluster: one '''load''' task, one '''store''' task, and N '''analyse''' tasks. Each container can contain from 2 to 60 packets and has a fixed size of 4 Kbytes. These containers are distributed in clusters: … … 124 140 == __raycast__ == 125 141 126 This multi-threaded application implement a video game requiring 3D image synthesis. The gamer can dynamically explore a maze and the gamer vision (3D images) depends on the gamer moves.142 This multi-threaded application implement a video game requiring 3D image synthesis. The gamer can dynamically explore a maze and the gamer vision (3D images) depends interactively on the gamer moves. 127 143 128 144 It that can run on a multi-processors, multi-clusters architecture, with one thread per processor, and can use any values for … … 139 155 == __ router__ == 140 156 157 This multi-threaded application emulates a network processing application such as an 158 ethernet router. All communications between threads use the MWMR (Multi-Writer/Multi-Reader) channels middleware. 159 The application is described as a TCG (Task and communication Graph) : 160 * The number of thread N is (x_size*y_size*nprocs): nprocs threads per clusters. 161 * There is one producer() thread, one consumer() thread, and N-2 compute() threads. 162 * The number M of MWMR channels is (2 * x_size * y_size) : one input and one output channel per cluster. 163 164 It that can run on a multi-processors, multi-clusters architecture, with one thread per processor. 165 In this implementation, only integer token are transfered between threads, but they can be interpreted as job descriptors: 166 * The main() thread, running on P[0,0,0], makes the initializations, and laugh the N other threads, and exit. 167 * The producer() thread, running on P[0,0,0] try to write continuously tokens into the M distributed input channels using non-blocking write function. 168 * The consumer() thread, running on P[0,0,1] try to read continuously tokens from the M distributed output channels, using a non-blocking read function. 169 * The N-2 compute() threads running on all other processors are reading token from the local input channel, and writing token to the local output channel, after a random delay emulating a variable processing time. 170 171 It require one TTY terminal shared by all threads. 172 141 173 The source code can be found [source:soft/giet_vm/applications/router/router.c here], and the mapping is defined [source:soft/giet_vm/applications/router/router.py here].