Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Venado optimizations #755

Merged
merged 23 commits into from
Feb 5, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
e827603
Add build script for venado hackathon
mewall Jul 2, 2024
096d3fe
Add preliminary method to set matrix size
mewall Jul 18, 2024
eac6576
Add build scripts for hackathon
mewall Jul 18, 2024
e7a8fc0
Add bml_transpose_inplace Fortran subroutine
mewall Jul 19, 2024
b1dcbb1
Modify Fortran bml_transpose API to match the C interface
mewall Jul 22, 2024
7ded60f
Modify tests to use new transpose API
mewall Jul 24, 2024
87d02dd
Venado build modifications
mewall Aug 6, 2024
d766123
Move build scripts to scripts/ dir
mewall Aug 13, 2024
84be6e9
Expose dense matrix pointer using bml_get_ptr_dense
mewall Aug 13, 2024
559bc8e
New introspection methods
mewall Aug 23, 2024
fc03d39
Remove LANL-specific build scripts
mewall Jan 27, 2025
0fc96d2
Remove an additional LANL specific build script
mewall Jan 27, 2025
4918b48
Add N_allocated and check in bml_set_N_dense
mewall Feb 3, 2025
d6cd30f
Reallocate if bml_set_N_dense fails test
mewall Feb 3, 2025
1b345ae
Remove LANL-specific build script
mewall Feb 3, 2025
2521f0b
Fix linter issues
mewall Feb 4, 2025
c53c933
Fix syntax error in workflow (#758)
nicolasbock Jan 14, 2025
cec122b
Update GitHub checkout action (#757)
nicolasbock Feb 4, 2025
2d51b8e
Add yaml extension to dev container (#756)
nicolasbock Feb 4, 2025
57ab2a0
Add another VSCode extension to container (#759)
nicolasbock Feb 4, 2025
30ab5ff
Update version of artifact action (#761)
nicolasbock Feb 4, 2025
890b83e
Update compiler for OS X runner (#762)
nicolasbock Feb 4, 2025
402029c
Linter fix
mewall Feb 4, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,9 @@
"fortran-lang.linter-gfortran",
"GitHub.vscode-pull-request-github",
"ms-vscode.cmake-tools",
"ms-vscode.cpptools-extension-pack",
"ms-vscode.cpptools",
"redhat.vscode-yaml",
"twxs.cmake"
]
}
Expand Down
44 changes: 22 additions & 22 deletions .github/workflows/CI.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
name: CI
on:
release:
type:
types:
- created
push:
branches:
Expand All @@ -26,13 +26,13 @@ jobs:
runs-on: ubuntu-20.04
steps:
- name: Check out sources
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Prepare container
run: ./scripts/prepare-container-focal.sh
- run: bundle install
- run: bundle exec danger || true
- run: BML_OPENMP=no EMACS=emacs27 ./build.sh --debug check_indent
- uses: actions/upload-artifact@v3
- uses: actions/upload-artifact@v4
if: failure()
with:
name: lint-artifacts
Expand All @@ -45,7 +45,7 @@ jobs:
runs-on: ubuntu-20.04
steps:
- name: Check out sources
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Prepare container
run: ./scripts/prepare-container-focal.sh
- name: Build docs
Expand All @@ -58,25 +58,25 @@ jobs:
fail-fast: false
matrix:
include:
- JOBNAME: gcc-11 C single real
TEST_SCRIPT: ./scripts/ci-gcc-11-C-single-real.sh
- JOBNAME: gcc-11 C double real
TEST_SCRIPT: ./scripts/ci-gcc-11-C-double-real.sh
- JOBNAME: gcc-11 C single complex
TEST_SCRIPT: ./scripts/ci-gcc-11-C-single-complex.sh
- JOBNAME: gcc-11 C double complex
TEST_SCRIPT: ./scripts/ci-gcc-11-C-double-complex.sh
- JOBNAME: gcc-11 Fortran single real
TEST_SCRIPT: ./scripts/ci-gcc-11-Fortran-single-real.sh
- JOBNAME: gcc-11 Fortran double real
TEST_SCRIPT: ./scripts/ci-gcc-11-Fortran-double-real.sh
- JOBNAME: gcc-11 Fortran single complex
TEST_SCRIPT: ./scripts/ci-gcc-11-Fortran-single-complex.sh
- JOBNAME: gcc-11 Fortran double complex
TEST_SCRIPT: ./scripts/ci-gcc-11-Fortran-double-complex.sh
- JOBNAME: gcc-14 C single real
TEST_SCRIPT: ./scripts/ci-gcc-14-C-single-real.sh
- JOBNAME: gcc-14 C double real
TEST_SCRIPT: ./scripts/ci-gcc-14-C-double-real.sh
- JOBNAME: gcc-14 C single complex
TEST_SCRIPT: ./scripts/ci-gcc-14-C-single-complex.sh
- JOBNAME: gcc-14 C double complex
TEST_SCRIPT: ./scripts/ci-gcc-14-C-double-complex.sh
- JOBNAME: gcc-14 Fortran single real
TEST_SCRIPT: ./scripts/ci-gcc-14-Fortran-single-real.sh
- JOBNAME: gcc-14 Fortran double real
TEST_SCRIPT: ./scripts/ci-gcc-14-Fortran-double-real.sh
- JOBNAME: gcc-14 Fortran single complex
TEST_SCRIPT: ./scripts/ci-gcc-14-Fortran-single-complex.sh
- JOBNAME: gcc-14 Fortran double complex
TEST_SCRIPT: ./scripts/ci-gcc-14-Fortran-double-complex.sh
steps:
- name: Check out sources
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Prepare container
Expand Down Expand Up @@ -141,7 +141,7 @@ jobs:
TEST_SCRIPT: ./scripts/ci-clang-16-gfortran-10-C-double-complex.sh
steps:
- name: Check out sources
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Prepare container
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/container.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ jobs:
if: ${{ github.repository == 'lanl/bml' }}
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Login to DockerHub
uses: docker/login-action@v2
with:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@ done

basedir=$(${READLINK} --canonicalize $(dirname $0)/..)

export CC=${CC:-gcc-11}
export CXX=${CXX:-g++-11}
export FC=${FC:-gfortran-11}
export CC=${CC:-gcc-14}
export CXX=${CXX:-g++-14}
export FC=${FC:-gfortran-14}
export BUILD_SHARED_LIBS=${BUILD_SHARED_LIBS:-no}
export BML_OPENMP=${BML_OPENMP:-no}
export BML_INTERNAL_BLAS=${BML_INTERNAL_BLAS:-no}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@ done

basedir=$(${READLINK} --canonicalize $(dirname $0)/..)

export CC=${CC:-gcc-11}
export CXX=${CXX:-g++-11}
export FC=${FC:-gfortran-11}
export CC=${CC:-gcc-14}
export CXX=${CXX:-g++-14}
export FC=${FC:-gfortran-14}
export BUILD_SHARED_LIBS=${BUILD_SHARED_LIBS:-no}
export BML_OPENMP=${BML_OPENMP:-no}
export BML_INTERNAL_BLAS=${BML_INTERNAL_BLAS:-no}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@ done

basedir=$(${READLINK} --canonicalize $(dirname $0)/..)

export CC=${CC:-gcc-11}
export CXX=${CXX:-g++-11}
export FC=${FC:-gfortran-11}
export CC=${CC:-gcc-14}
export CXX=${CXX:-g++-14}
export FC=${FC:-gfortran-14}
export BUILD_SHARED_LIBS=${BUILD_SHARED_LIBS:-no}
export BML_OPENMP=${BML_OPENMP:-no}
export BML_INTERNAL_BLAS=${BML_INTERNAL_BLAS:-no}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@ done

basedir=$(${READLINK} --canonicalize $(dirname $0)/..)

export CC=${CC:-gcc-11}
export CXX=${CXX:-g++-11}
export FC=${FC:-gfortran-11}
export CC=${CC:-gcc-14}
export CXX=${CXX:-g++-14}
export FC=${FC:-gfortran-14}
export BUILD_SHARED_LIBS=${BUILD_SHARED_LIBS:-no}
export BML_OPENMP=${BML_OPENMP:-no}
export BML_INTERNAL_BLAS=${BML_INTERNAL_BLAS:-no}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@ done

basedir=$(${READLINK} --canonicalize $(dirname $0)/..)

export CC=${CC:-gcc-11}
export CXX=${CXX:-g++-11}
export FC=${FC:-gfortran-11}
export CC=${CC:-gcc-14}
export CXX=${CXX:-g++-14}
export FC=${FC:-gfortran-14}
export BUILD_SHARED_LIBS=${BUILD_SHARED_LIBS:-no}
export BML_OPENMP=${BML_OPENMP:-yes}
export BML_INTERNAL_BLAS=${BML_INTERNAL_BLAS:-no}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@ done

basedir=$(${READLINK} --canonicalize $(dirname $0)/..)

export CC=${CC:-gcc-11}
export CXX=${CXX:-g++-11}
export FC=${FC:-gfortran-11}
export CC=${CC:-gcc-14}
export CXX=${CXX:-g++-14}
export FC=${FC:-gfortran-14}
export BUILD_SHARED_LIBS=${BUILD_SHARED_LIBS:-no}
export BML_OPENMP=${BML_OPENMP:-yes}
export BML_INTERNAL_BLAS=${BML_INTERNAL_BLAS:-no}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@ done

basedir=$(${READLINK} --canonicalize $(dirname $0)/..)

export CC=${CC:-gcc-11}
export CXX=${CXX:-g++-11}
export FC=${FC:-gfortran-11}
export CC=${CC:-gcc-14}
export CXX=${CXX:-g++-14}
export FC=${FC:-gfortran-14}
export BUILD_SHARED_LIBS=${BUILD_SHARED_LIBS:-no}
export BML_OPENMP=${BML_OPENMP:-yes}
export BML_INTERNAL_BLAS=${BML_INTERNAL_BLAS:-no}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@ done

basedir=$(${READLINK} --canonicalize $(dirname $0)/..)

export CC=${CC:-gcc-11}
export CXX=${CXX:-g++-11}
export FC=${FC:-gfortran-11}
export CC=${CC:-gcc-14}
export CXX=${CXX:-g++-14}
export FC=${FC:-gfortran-14}
export BUILD_SHARED_LIBS=${BUILD_SHARED_LIBS:-no}
export BML_OPENMP=${BML_OPENMP:-yes}
export BML_INTERNAL_BLAS=${BML_INTERNAL_BLAS:-no}
Expand Down
2 changes: 2 additions & 0 deletions src/C-interface/dense/bml_allocate_dense_typed.c
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,7 @@ bml_matrix_dense_t *TYPED_FUNC(
A->matrix_type = dense;
A->matrix_precision = MATRIX_PRECISION;
A->N = matrix_dimension.N_rows;
A->N_allocated = A->N;
A->distribution_mode = distrib_mode;
#ifdef BML_USE_MAGMA
A->ld = magma_roundup(matrix_dimension.N_rows, 32);
Expand Down Expand Up @@ -154,6 +155,7 @@ bml_matrix_dense_t *TYPED_FUNC(
A->matrix_type = dense;
A->matrix_precision = MATRIX_PRECISION;
A->N = matrix_dimension.N_rows;
A->N_allocated = A->N;
A->distribution_mode = distrib_mode;
#ifdef BML_USE_MAGMA
A->ld = magma_roundup(matrix_dimension.N_rows, 32);
Expand Down
19 changes: 19 additions & 0 deletions src/C-interface/dense/bml_introspection_dense.c
Original file line number Diff line number Diff line change
Expand Up @@ -200,3 +200,22 @@ bml_get_data_ptr_dense(
{
return A->matrix;
}

/** Return the dense matrix ld parameter.
*
* \param A The dense matrix.
* \return The matrix ld parameter.
*/
int
bml_get_ld_dense(
bml_matrix_dense_t * A)
{
if (A != NULL)
{
return A->ld;
}
else
{
return -1;
}
}
31 changes: 31 additions & 0 deletions src/C-interface/dense/bml_setters_dense.c
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,37 @@
#include "../bml_logger.h"
#include "bml_setters_dense.h"
#include "bml_types_dense.h"
#include "bml_allocate_dense.h"

#ifdef BML_USE_MAGMA
#include "magma_v2.h"
#endif

void
bml_set_N_dense(
bml_matrix_dense_t * A,
int N)
{
if (A->N <= A->N_allocated)
{
A->N = N;
#ifdef BML_USE_MAGMA
A->ld = magma_roundup(A->N, 32);
#else
A->ld = A->N;
#endif
}
else
{
bml_matrix_dense_t *B;
bml_matrix_dimension_t matrix_dimension = { A->N, A->N, A->N };

B = bml_noinit_matrix_dense(A->matrix_precision, matrix_dimension,
A->distribution_mode);
bml_deallocate_dense(A);
A = B;
}
}

void
bml_set_element_dense(
Expand Down
4 changes: 4 additions & 0 deletions src/C-interface/dense/bml_setters_dense.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,10 @@

#include <complex.h>

void bml_set_N_dense(
bml_matrix_dense_t * A,
int N);

void bml_set_element_dense(
bml_matrix_dense_t * A,
int i,
Expand Down
2 changes: 2 additions & 0 deletions src/C-interface/dense/bml_types_dense.h
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@ struct bml_matrix_dense_t
bml_distribution_mode_t distribution_mode;
/** The number of rows/columns. */
int N;
/** The number of rows/columns originally allocated. */
int N_allocated;
/** The dense matrix. */
void *matrix;
/** The leading dimension of the array matrix. */
Expand Down
23 changes: 23 additions & 0 deletions src/Fortran-interface/bml_c_interface_m.F90
Original file line number Diff line number Diff line change
Expand Up @@ -371,6 +371,18 @@ function bml_get_bandwidth_C(a) bind(C, name="bml_get_bandwidth")
integer(C_INT) :: bml_get_bandwidth_C
end function bml_get_bandwidth_C

function bml_get_data_ptr_dense_C(a) bind(C, name="bml_get_data_ptr_dense")
import :: C_PTR
type(C_PTR), value, intent(in) :: a
type(C_PTR) :: bml_get_data_ptr_dense_C
end function bml_get_data_ptr_dense_C

function bml_get_ld_dense_C(a) bind(C, name="bml_get_ld_dense")
import :: C_PTR, C_INT
type(C_PTR), value, intent(in) :: a
integer(C_INT) :: bml_get_ld_dense_C
end function bml_get_ld_dense_C

function bml_get_sparsity_C(a, threshold) bind(C, name="bml_get_sparsity")
import :: C_PTR, C_DOUBLE, C_INT
type(C_PTR), value, intent(in) :: a
Expand Down Expand Up @@ -448,6 +460,12 @@ subroutine bml_scale_inplace_C(alpha, a) bind(C, name="bml_scale_inplace")
type(C_PTR), value :: a
end subroutine bml_scale_inplace_C

subroutine bml_set_N_dense_C(a,n) bind(C, name="bml_set_N_dense")
import :: C_PTR, C_INT
type(C_PTR), value, intent(in) :: a
integer(C_INT), value, intent(in) :: n
end subroutine bml_set_N_dense_C

subroutine bml_set_row_C(a, i, row, threshold) bind(C, name="bml_set_row")
import :: C_PTR, C_INT, C_DOUBLE
type(C_PTR), value, intent(in) :: a
Expand Down Expand Up @@ -616,6 +634,11 @@ function bml_transpose_new_C(a) bind(C, name="bml_transpose_new")
type(C_PTR) :: bml_transpose_new_C
end function bml_transpose_new_C

subroutine bml_transpose_C(a) bind(C, name="bml_transpose")
import :: C_PTR
type(C_PTR), value, intent(in) :: a
end subroutine bml_transpose_C

subroutine bml_write_bml_matrix_C(a, filename) &
& bind(C, name="bml_write_bml_matrix")
import :: C_PTR, C_CHAR
Expand Down
23 changes: 23 additions & 0 deletions src/Fortran-interface/bml_introspection_m.F90
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ module bml_introspection_m
public :: bml_get_bandwidth
public :: bml_get_distribution_mode
public :: bml_get_sparsity
public :: bml_get_data_ptr_dense
public :: bml_get_ld_dense

contains

Expand Down Expand Up @@ -247,4 +249,25 @@ function bml_get_sparsity(a, threshold) result(sparsity)

end function bml_get_sparsity

function bml_get_data_ptr_dense(a)
type(bml_matrix_t), intent(inout) :: a
type(C_PTR) :: bml_get_data_ptr_dense

bml_get_data_ptr_dense = bml_get_data_ptr_dense_C(a%ptr)

end function bml_get_data_ptr_dense

!> Return the dense matrix ld parameter.
!!
!!\param a The matrix.
!!\return The matrix ld parameter.
function bml_get_ld_dense(a)

type(bml_matrix_t), intent(in) :: a
integer :: bml_get_ld_dense

bml_get_ld_dense = bml_get_ld_dense_C(a%ptr)

end function bml_get_ld_dense

end module bml_introspection_m
Loading