User Tools

Site Tools


start

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
start [2022/01/13 12:55]
127.0.0.1 external edit
start [2022/11/14 15:39] (current)
jbispo
Line 1: Line 1:
-====== Tribble Future Work & Loose Ideas ======+====== SPeCS Wiki ====== 
 + 
 +Wiki for gathering ideas and documentation regarding research work of the SPeCS research group. 
 + 
 +===== Guides ===== 
 + 
 +[[doc:latex|Latex]] 
 + 
 +===== Documentation ===== 
 + 
 +[[doc:lara|Lara Framework]] 
 + 
 +[[doc:clava|Clava (C/C++ Weaver)]] 
 + 
 +[[doc:kadabra|Kadabra (Java Weaver)]] 
 +===== Members-Only ===== 
 + 
 +[[ideas|Ideas Playground]] 
  
-  - Modularizar o Tribble para permitir investigação isolada nos seguintes campos: 
-    * Detecção de hotspots no código. Quer em termos de tempo, quer em termos de energia. 
-    * Análise desse mesmo código para caracterização da sua execução nos diferentes dispositivos disponíveis. 
-    * Criação/inserção de schedulers baseados nas informações recolhidas. 
-    * Extracção dos kernels do resto do código de modo a que sejam compatíveis com as ferramentas que os compilam para os diferentes dispositívos (O Vitis é particularmente picuínhas) 
-    * Inserção de todo o código de escolha (main feature do Tribble de momento) 
-  - Adicionar ao Clava a capacidade de baixar o nível de análise para LLVM-IR e depois fazer alterações ao source-code baseadas em informação recolhida nessas passagens de análise. 
-  - O mesmo para MLIR. Consegue-se aproveitar o facto de esta tecnologia estar agora a ganhar tracção e haver muita investigação na área. Uma ferramenta capaz de facilitar análise em MLIR e modificações do mesmo era algo interessante. Diria até que se poderia fazer todo um novo parser dedicado a MLIR (até porque não é só C que pode ser compilado para isto) mas aí seria necesário rever a maneira como os parsers funcionam e arranjar forma de eles trabalharem melhor em conjunto. Também já propuz uma coisa destas no quadro. Não sei se chegou a ser guardada uma fotografia. 
-  - Expandir o HLSAnalysis do Tiago Santos adicionando feedback dos relatórios do Vitis e tomando decisões informadas sabendo o tamanho da FPGA. Deveria também reportar informação sobre array partitionings pois isto é necessário para criação de código OpenCL. 
-  - Pegar na compilação para LLVM-IR e fazer as optimizações a esse nível para FPGAs.  
-    * A Xilinx colocou o frontend do seu compilador HLS (v++) open-source e abriu a plataforma a plugins através do cmake. 
-    * Com o Clava poderia-se pegar num kernel, fazer a análise ao nível da LLVM-IR, modificar essa IR e passá-la directamente para o v++ (Vitis). Ou seja, abre a porta a investigação em optimização de kernels para aceleradores. 
-  - Usar [[https://onnx.ai/|ONNX]] para optimizar execução de kernels para FPGAs e comparar o performance com geração por HLS. 
-    * ONNX é o formato standard para portabilidade de modelos de ML entre frameworks. No fundo, é um formato para descrever dataflow graphs. 
-    * "ONNX is an open format built to represent machine learning models." 
-    * "Recent Xilinx and Intel tools support the synthesis of ONNX models to heavily optimised IP blocks. Our Hoeffding Tree implementation is exportable to the SciKit Learn format. From there, the skl2onnx Python package can be used to convert it to the ONNX format. Comparisons can be made between the inference performance of our HLS-generated models to the ones from ONNX." 
-    *  
-  - Transformar um programa numa imagem e aplicar algoritmos tried-and-true ML algorithms à imagem que resulta para ver se é capaz de encontrar padrões. 
-    * Uma vez li uma notícia de um artigo qualquer que aplicava o mesmo princípio mas a outro campo de investigação. Transformar dados numa imagem e depois aplicar algoritmos maduros de ML para analisar esses dados. Já se fizeram algumas experiências curtas com o output da ferramenta de Binary Traces do lab. 
  
-====== LARA/Clava ====== 
  
-  - Language Server para se conseguir usar LARA fora do GUI do Clava 
-    * https://github.com/eclipse/lsp4j 
-  - Extensão para vscode 
-    * Lança um processo do Clava em modo de servidor e sempre que se quer executar algo usa-se esse servidor. 
-    * Integração LSP 
-    * Syntax highlight 
-    * Mouse-over sobre uma função indica o seu protótipo (agora não é possível porque os módulos do Clava estão em Java Resources e não em ficheiros analisáveis pelas ferramentas de desenvolvimento de código) 
-    * Muitas destas features tornar-se-ão obsoletas se a [[https://github.com/specs-feup/clava/projects/1|revisão ao Clava para melhor suporte de JS]] se concretizar. Mesmo assim pode oferecer benefícios no que toca a suportar features do Clava que dependem de partes escritas em Java e cujo comportamento não consegue ser visto da parte de JS. 
-      * Adicionalmente não se consegue usar Typescript para desenvolver para LARA/Clava exactamente porque o compilador para JS não consegue encontrar muitas partes de código e saber quais os seus tipos. 
-  - Expandir as capacidades de criação de extensões pela comunidade para o Clava. 
-    * O principal entrave neste momento é que não é possível adiconar configurações adicionais ao Clava. 
-    * Lembro-me de desenhar e definir no quadro um formato standard para permitir às pessoas acrescentarem campos de opções ao ficheiro ClavaOptions só para essa feature num ficheiro JSON. 
-    * Uma das coisas que pode permitir é exactamente o ponto acima na secção do Tribble sobre LLVM-IR. Passar o comando de compilação, adicionar uma dropdown box com o log-level da extensão. 
-    * Dá bastante jeito também para teses porque permite aos estudantes adicionarem features facilmente sem ter de pedir ao João que mude o source-code do Clava para todos até porque as modificações não interessariam a toda a gente. 
-  - Gestor de versões do Clava e revamp da maneira de como a ferramenta é actualizada (e revertida) para permitir melhro controlo do código que se está a correr. 
  
start.1642074921.txt.gz · Last modified: 2022/01/13 12:55 by 127.0.0.1