This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
start [2022/01/13 17:29] jbispo |
start [2022/01/13 17:41] jbispo [LARA/Clava] |
||
---|---|---|---|
Line 6: | Line 6: | ||
- | ====== Tribble Future Work & Loose Ideas ====== | ||
- | - 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/ | ||
- | * 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 é 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." | ||
- | * " | ||
- | * | ||
- | - 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:// | ||
- | - 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:// | ||
- | * 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, | ||
- | * 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. | ||