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. |
| 46 | 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]. 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 |
| 47 | pthread_join() function to detect application completion. All others threads are executing the execute() function. Each execute() function is handling exactly (image_size / nthreads) lines. |
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. |
| 49 | The 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. |
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''. |
| 60 | This multi-threaded application is a medical image processing application. |
| 61 | |
| 62 | It 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''. |
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. |
| 67 | It that can run on a multi-processors, multi-clusters architecture, with one thread per processor. |
| 68 | The 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. |
| 113 | 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. |
| 114 | |
| 115 | It that can run on a multi-processors, multi-clusters architecture, with one thread per processor, and can use any (width * height) |
| 116 | for the frame buffer associated to the graphical display, as it does not use any pre-existing images. |
| 117 | |
| 118 | After 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 |
| 119 | for a given image have been handled. |
| 120 | |
| 121 | It requires one TTY terminal, shared by all threads. |
| 122 | |
| 123 | The 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 | |