1 / 8

Zhiduo Liu Aaron Severance Satnam Singh Guy Lemieux

Accelerator Compiler for the VENICE Vector Processor. Zhiduo Liu Aaron Severance Satnam Singh Guy Lemieux. This is the VENICE Vector Processor :. Complicated. OR like this :. You can program it like this :. #include "vector.h “ int main() { int A[] = { 1,2,3,4,5,6,7,8 };

audra-lyons
Télécharger la présentation

Zhiduo Liu Aaron Severance Satnam Singh Guy Lemieux

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Accelerator Compiler for the VENICE Vector Processor Zhiduo Liu Aaron Severance Satnam Singh Guy Lemieux

  2. This is the VENICE Vector Processor : Complicated

  3. OR like this : You can program it like this : #include "vector.h“ int main() { int A[] = {1,2,3,4,5,6,7,8}; const int data_len = sizeof ( A ); int *va = ( int *) vector_malloc ( data_len ); vector_dma_to_vector ( va, A, data_len ); vector_wait_for_dma (); vector_set_vl ( data_len / sizeof (int) ); vector ( SVW, VADD, va, 42, va ); vector_instr_sync(); // wait for operation to complete vector_dma_to_host ( A, va, data_len ); vector_wait_for_dma (); vector_free (); // deallocate scratchpad malloc } #include "Accelerator.h" #include "VectorTarget.h" using namespace ParallelArrays; using namespace MicrosoftTargets; int main() { Target *tgtVector = CreateVectorTarget(); int A[] = {1,2,3,4,5,6,7,8}; IPA b = IPA( A, sizeof (A)/sizeof (int)); IPA c = b + 42; tgtVector->ToArray( c, A, sizeof (A)/sizeof (int)); tgtVector->Delete(); } Target *tgtVector = CreateMulticoreTarget(); Target *tgtVector = CreateDX9Target();

  4. Assembly Programming : Accelerator Programming : Write in Accelerator Write Assembly Compile with Microsoft Visual Studio Doesn’t compile? Or result incorrect? Compile with Gcc Compile with Gcc Doesn’t compile? Download to board Download to board Get Result Get Result Result Incorrect?

  5. Assembly Programming : • Hard to program • Long debug cycle • Not portable • Manual – Not always optimal or correct (wysiwyg) • Accelerator Programming : • Easy to program • Easy to debug • Can also target other devices • Automated compiler optimizations

  6. Compiler Flow LIR IR Calculate Buffer Size Add Intermediates Assign Buffers to Inputs Combine Operations Allocate & Initialize Memory Evaluation Ordering & Reference Counting Transfer Data To Scratchpad Set VL Buffer Counting Write Vector Instructions Convert To LIR Transfer Result To Host LIR Need Double buffering?

  7. 369x

  8. Thank you !

More Related