Changes between Version 7 and Version 8 of user_applications


Ignore:
Timestamp:
Oct 13, 2015, 8:07:58 PM (9 years ago)
Author:
alain
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • user_applications

    v7 v8  
    88== __shell__ ==
    99
    10 This single thread application allows there to launch.
     10This single thread interactive application can be used to access the FAT32 file system, or to dynamically activate or de-activate
     11others applications. When is mapped on the target architecture, it is automatically launched at the end of the boot phase.
     12The list of available commands can be obtained with the ''help'' command.
    1113
    1214It requires one private TTY terminal.
     15
     16The source code can be found [source:soft/giet_vm/applications/shell/shell.c here], and the mapping directives are defined  [source:soft/giet_vm/applications/shell/shell.py here].
     17
    1318== __ Display__ ==
    1419
     
    3540
    3641This multi-threaded application is typical of parallelism that can be exploited in low-level image processing.
     42
     43It ask the user to enter the name of a file containing an image stored on the FAT32 disk, check that the selected image fit the frame buffer size, transpose the image (X <-> Y), display the result on the graphical display, and save the transposed image to the FAT32 disk.
     44
    3745It can run on a multi-processors, multi-clusters architecture, with one thread per processor core.
    38 The total number of threads depends on the hardware architecture, and is computed as ( x_size * y_size * nprocs ) . The main() function is executed by the thread running on P[0,0,0]. All others threads are executing the execute() function. Each execute() function is handling (image_size / nthreads) lines.
     46The total number of threads depends on the hardware architecture, and is computed as ( x_size * y_size * nprocs ) . The main() function is executed by the thread running on P[0,0,0]. It makes several initializations, launches all other threads (using the pthread_create() function), and calls the execute() function. When the main() function returns from the execute(), it uses the
     47pthread_join() function to detect application completion. All others threads are executing the execute() function. Each execute() function is handling exactly (image_size / nthreads) lines.
    3948
    40 This application ask the user to enter the name of a file containing an image stored on the FAT32 disk, check that the selected image fit the frame buffer size, transpose the image (X <-> Y), display the result on the graphical display, and save the transposed image to the FAT32 disk.
    41 
    42 The main() function is executed by the thread running on P[0,0,0], all others threads are executing the execute() function. Each execute() function is handling (image_size / nthreads) lines.  The input and output buffers containing the source and transposed images are allocated from the user heap distributed in all clusters. Therefore, the data read are mostly local, but the data write are mostly remote.
     49The input and output buffers containing the source and transposed images are allocated from the user heap distributed in all clusters. There is (image size / clusters) lines per cluster. Therefore, the data read are mostly local, but the data write are mostly remote.
    4350
    4451The number of clusters  must be a power of 2 no larger than 256.
     
    5158== __Convol__ ==
    5259
    53 This multi-threaded application is a typical medical image processing application.
    54 It implements a 2D convolution product, that can run on a multi-processors, multi-clusters architecture, with one thread
    55 per processor. The image  size is 1024 * 1024 pixels, 2 bytes per pixel. It has been provided by Philips, and is stored
    56 on the FAT32 disk in ''/misc/philips_image_1024.raw''.
     60This multi-threaded application is a medical image processing application.
     61
     62It implements a 2D convolution product, used to remove some noise artifacts. The image  size is 1024 * 1024 pixels, with 2 bytes per pixel provided by the Philips company. It is stored on the FAT32 disk in ''/misc/philips_image_1024.raw''.
    5763The convolution kernel is [201]*[35] pixels, but it can be factored in two independant line and column convolution products,
    58 requiring an intermediate image transposition.
    59 The five buffers containing the image are distributed in all clusters.
     64requiring two intermediate image transpositions.
     65The five buffers containing the intermediate images are distributed in all clusters.
    6066
    61 The main() function can be executed on any processor P[x,y,p].
    62 It makes the initialisations, launch (N-1) threads to run the execute() function on the (N-1) other processors than P[x,y,p], call himself the execute() function, and finally call the instrument() function to display instrumentation results
    63 when the parallel execution is completed.
     67It that can run on a multi-processors, multi-clusters architecture, with one thread per processor.
     68The main() function can be executed on any processor P[x,y,p]. It makes the initialisations, launch the (N-1) other threads to run the execute() function on the (N-1) other processors, call himself the execute() function, and finally call the instrument() function to display instrumentation results when the parallel execution is completed.
    6469
    6570The number of clusters containing processors must be power of 2 no larger than 256.
     
    106111== __Raycast__ ==
    107112
     113This 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.
     114
     115It that can run on a multi-processors, multi-clusters architecture, with one thread per processor, and can use any (width * height)
     116for the frame buffer associated to the graphical display, as it does not use any pre-existing images.
     117
     118After each gamer move, a new image is displayed. For a given image, the columns of pixels can be build in parallel by several threads running the same render() function for a given column. The number of threads is independent from the number of columns (image width), because the load is dynamically balanced between threads by a job allocator, until all columns
     119for a given image have been handled.
     120
     121It requires one TTY terminal, shared by all threads.
     122
     123The source code can be found [source:soft/giet_vm/applications/raycast/raycast.c here], and the mapping is defined [source:soft/giet_vm/applications/raycast/raycast.py here].
     124
    108125== __ Router__ ==
     126
     127The 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].