![]() ![]() So users are not required to do any explicit DSE controls, like startup DSE dse_start(). The compiler will generate environment setup like dse_lib_init, dse_alloc(0), DSE startup and wait call dse_start(), dse_wait(), and termination library call dse_lib_terminate(). For OpenMP compiler, the code generation is guided by the parameters defined in parallel USING_DSE construct. The four parameters declared here are: number of DSEs, number of Registers, starting DPDM number, and data register array, such as (8, 6, 0, dse_mem). ![]() When the OpenMP compiler encounters this parallel region, it will switch to the corresponding DSE portion. The main parallel region is defined as #pragma omp parallel USING_DSE(parameters). When all tasks finish, the DSE terminate library call dse _lib_terminate() is invoked. The PE then waits for the DSEs to finish and automatically releases all DSEs, by dse_wait(dse_id). After all initializations are done, the PE starts all DSEs and tells DSEs to execute from the 0th instruction, via the function call dse_start(dse_id, 0). Afterwards, the PE loads the DPDM's onto the allocated DSEs, DSE_loadregisters(dse_id). This is done by allocating within one Quad first, dse_id= dse_alloc(0), if failed, it will load from other Quads. In the next for-loop, the PE allocates a number of DSEs and loads the DSE code into the DSE instruction memory by dse_instruction_load(). ![]() does Quad I/O check and data allocation such as assigning initial value for the matrix. ![]()
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |