SLATE: design of a modern distributed and accelerated linear algebra library