Exemplo para explorar instrução customizada: código C de convolução para CNNs
Estes códigos implementam apenas um nível de convolução, e a diferença entre eles é como os casos de borda são tratados. O pad-logic usa if/then/else pra acertar os valores de borda, enquanto no pad-memory os valores de borda estão presentes nos arrays em si (ou seja, o padding existe nos arrays). O código do kernel em si está no arquivo conv.cpp. Para compilar, só rodar make. Pra rodar: ./conv
Implementação baseada em: https://arxiv.org/pdf/1902.01492.pdf
Sobre convolução em si: https://arxiv.org/pdf/1311.2901v3.pdf
Clique no link Arquivos.zip para baixar o arquivo.