Skip to content

Commit 7467b9c

Browse files
committed
Continue the JOSS paper
1 parent 77beffc commit 7467b9c

3 files changed

Lines changed: 107 additions & 14 deletions

File tree

.github/workflows/draft-pdf.yml

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,18 +13,28 @@ jobs:
1313
steps:
1414
- name: Checkout
1515
uses: actions/checkout@v4
16+
with:
17+
repository: ${{ github.event.pull_request.head.repo.full_name }}
18+
ref: ${{ github.event.pull_request.head.ref }}
19+
1620
- name: Build draft PDF
1721
uses: openjournals/openjournals-draft-action@master
1822
with:
1923
journal: joss
2024
# This should be the path to the paper within your repo.
21-
paper-path: paper/paper.md
22-
- name: Upload
25+
paper-path: joss/paper.md
26+
27+
- name: Upload PDF
2328
uses: actions/upload-artifact@v4
2429
with:
2530
name: paper
2631
# This is the output path where Pandoc will write the compiled
2732
# PDF. Note, this should be the same directory as the input
2833
# paper.md
29-
path: paper/paper.pdf
34+
path: joss/paper.pdf
3035

36+
- name: Commit PDF to repository
37+
uses: EndBug/add-and-commit@v9
38+
with:
39+
message: '(auto) paper draft'
40+
add: 'joss/paper.pdf'

paper/paper.bib

Lines changed: 51 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,59 @@
11
@article{tapenade,
2-
title = {The Tapenade automatic differentiation tool: principles, model, and specification},
3-
author = {Hascoet, Laurent and Pascual, Val{\'e}rie},
2+
title = {{The Tapenade automatic differentiation tool: principles, model, and specification}},
3+
author = {Hasco{\"e}t, Laurent and Pascual, Val{\'e}rie},
44
journal = {ACM Transactions on Mathematical Software (TOMS)},
55
volume = {39},
66
number = {3},
77
pages = {1--43},
88
year = {2013},
9+
doi = {10.1145/2450153.2450158},
910
publisher = {ACM New York, NY, USA}
1011
}
12+
13+
@book{griewank2008,
14+
title = {Evaluating derivatives: principles and techniques of algorithmic differentiation},
15+
author = {Griewank, Andreas and Walther, Andrea},
16+
year = {2008},
17+
doi = {10.1137/1.9780898717761},
18+
publisher = {SIAM}
19+
}
20+
21+
@article{HFBTHO,
22+
title = {{HFBTHO-AD: Differentiation of a nuclear energy density functional code}},
23+
author = {Laurent Hasco{\"e}t and Matt Menickelly and Sri Hari Krishna Narayanan and Jared O’Neal and Nicolas Schunck and Stefan M. Wild},
24+
journal = {Computer Physics Communications},
25+
volume = {320},
26+
pages = {109955},
27+
year = {2026},
28+
doi = {10.1016/j.cpc.2025.109955},
29+
}
30+
31+
@article{ADOLC,
32+
title = {{Algorithm 755: ADOL-C: a package for the automatic differentiation of algorithms written in C/C++}},
33+
author = {Griewank, Andreas and Juedes, David and Utke, Jean},
34+
journal = {ACM Transactions on Mathematical Software (TOMS)},
35+
volume = {22},
36+
number = {2},
37+
pages = {131--167},
38+
year = {1996},
39+
doi = {10.1145/229473.229474},
40+
publisher = {Association for Computing Machinery},
41+
}
42+
43+
@article{jonasson2020,
44+
title = {{Algorithm 1005: Fortran subroutines for reverse mode algorithmic differentiation of blas matrix operations}},
45+
author = {Jonasson, Kristjan and Sigurdsson, Sven and Yngvason, Hordur Freyr and Ragnarsson, Petur Orri and Melsted, Pall},
46+
journal = {ACM Transactions on Mathematical Software (TOMS)},
47+
volume = {46},
48+
number = {1},
49+
pages = {1--20},
50+
year = {2020},
51+
publisher = {ACM New York, NY, USA}
52+
}
53+
54+
@article{giles2008,
55+
title = {An extended collection of matrix derivative results for forward and reverse mode automatic differentiation},
56+
author = {Giles, Mike},
57+
year = {2008},
58+
publisher = {Unspecified}
59+
}

paper/paper.md

Lines changed: 43 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,71 @@
11
---
22
title: 'diffblas: algorithmically differentiated BLAS routines'
33
tags:
4+
- BLAS
45
- automatic differentiation
5-
- linear algebra
6+
- numerical linear algebra
7+
- scientific computing
68
authors:
7-
- name: Alexis Montoison^[corresponding author]
8-
orcid: 0000-0002-3403-5450
9-
affiliation: 1
10-
- name: Sri Hari Krishna Narayanan
9+
- name: Sri Hari Krishna Narayanan^[corresponding author]
1110
orcid: 0000-0003-0388-5943
1211
affiliation: 1
12+
- name: Alexis Montoison
13+
orcid: 0000-0002-3403-5450
14+
affiliation: 1
1315
- name: Jean-Luc Bouchot
1416
orcid: 0000-0003-4523-3986
1517
affiliation: 2
1618
affiliations:
17-
- name: Argonne National Laboratory, Lemont, IL, USA.
19+
- name: Mathematics and Computer Science Division, Argonne National Laboratory, USA
1820
index: 1
19-
- name: Inria de Saclay, Palaiseau, France.
21+
- name: Inria de Saclay, Palaiseau, France
2022
index: 2
21-
date: 6 February 2026
23+
date: 22 February 2026
2224
bibliography: paper.bib
2325

2426
---
2527

2628
# Summary
2729

28-
`diffblas`is a library that provides (algorithmically) differentiated BLAS routines from their reference implementation in LAPACK using the automatic differentiation tool Tapenade [@tapenade] in four modes: forward (`_d`), vector forward (`_dv`), reverse (`_b`), and vector reverse (`_bv`).
30+
`diffblas` is a library that provides algorithmically differentiated [@griewank2008] BLAS routines from their reference implementations in [LAPACK](https://github.com/Reference-LAPACK/lapack) on GitHub using the automatic differentiation tool Tapenade [@tapenade].
31+
It supports four modes: forward (`_d`), vector forward (`_dv`), reverse (`_b`), and vector reverse (`_bv`).
32+
33+
In addition to differentiating the standard Fortran-style `BLAS` interface, `diffblas` also provides differentiated `CBLAS` routines, facilitating interoperability with C and other languages.
34+
Its API mirrors BLAS/CBLAS, with additional arguments specifying differentiation variables, making it straightforward to integrate into existing workflows.
35+
36+
`diffblas` calls the underlying standard `BLAS `implementation, and is agnostic to the backend (OpenBLAS, BLIS, MKL, Apple Accelerate), ensuring both performance and portability.
37+
38+
By providing accurate and efficient derivatives of linear algebra operations, `diffblas` facilitates gradient-based optimization, sensitivity analysis, and a wide range of scientific computing applications
2939

3040
# Statement of need
3141

42+
Linear algebra routines such as those in LAPACK are fundamental to scientific computing, optimization, and machine learning.
43+
However, they do not provide derivatives, which are often required for gradient-based algorithms.
44+
Current approaches either rely on hand-coded derivatives or generic automatic differentiation applied to high-level code, which can be inefficient or error-prone.
45+
`diffblas` addresses this gap by providing algorithmically differentiated BLAS routines directly from reference LAPACK implementations and following relevant differntiation rules [@giles2008].
46+
This enables accurate and efficient computation of derivatives while preserving compatibility with existing BLAS-based codes.
47+
48+
# State of the field
49+
50+
Automatic differentiation (AD) tools such as Tapenade [@tapenade], ADOL-C [@ADOLC], or Taf provide general mechanisms to compute derivatives of code.
51+
However, applying AD naively to low-level BLAS or LAPACK routines can be inefficient due to loops, memory layout, and caching issues [@jonasson2020].
52+
Specialized libraries like diffblas that generate differentiated routines directly from reference implementations combine the reliability of LAPACK with the efficiency of AD, bridging a gap in current scientific computing workflows.
53+
54+
# Research impact statement
55+
56+
This work was inspired in part by a need to differentiate a Fortran code [@HFBTHO] that uses BLAS and LAPACK routines, and to use the differentiated application for gradient-based optimization.
57+
58+
Providing both the standard and CBLAS interfaces ensures that diffblas can be adopted across different programming environments, facilitating derivative computations in diverse scientific computing projects.
59+
Precompiled artifacts on GitHub further simplify integration, enabling rapid deployment in multiple languages and scientific computing projects.
60+
3261
# Acknowledgements
3362

3463
This work was supported in part by the Applied Mathematics activity within the U.S. Department of Energy, Office of Science, Office
3564
of Advanced Scientific Computing Research Applied Mathematics, and Office of Nuclear Physics SciDAC program under Contract No. DE-AC02-06CH11357. This work was supported in part by NSF CSSI grant 2104068.
3665

66+
# AI usage disclosure
67+
68+
Generative AI was used to ...
69+
ChatGPT was used to check spelling, grammar, and clarity of the English text in this paper.
70+
3771
# References

0 commit comments

Comments
 (0)