In plain words: Built a Fortran library for assembling neural networks of any shape, using the language's built-in collective routines to split training data across many cores or machines. It matched a widely used machine learning library in both speed and ease of use.
Abstract
This paper describes neural-fortran, a parallel Fortran framework for neural networks and deep learning. It features a simple interface to construct feed-forward neural networks of arbitrary structure and size, several activation functions, and stochastic gradient descent as the default optimization algorithm. Neural-fortran also leverages the Fortran 2018 standard collective subroutines to achieve data-based parallelism on shared- or distributed-memory machines. First, I describe the implementation of neural networks with Fortran derived types, whole-array arithmetic, and collective sum and broadcast operations to achieve parallelism. Second, I demonstrate the use of neural-fortran in an example of recognizing hand-written digits from images. Finally, I evaluate the computational performance in both serial and parallel modes. Ease of use and computational performance are similar to an existing popular machine learning framework, making neural-fortran a viable candidate for further development and use in production.
Milan Curcic
arXiv:1902.06714 · cs.LG, stat.ML · submitted Feb 18, 2019 · updated Mar 25, 2019
abstract · pdf · html · Submitted to ACM SIGPLAN Fortran Forum. Reviewed by Arjen Markus and Izaak Beekman