Skip to content

Commit 1bca217

Browse files
authored
Merge branch 'develop' into 316-invert_mask-descriptor-inverts-return-value-to-true-for-unassigned-elements
2 parents 327169c + b314d4f commit 1bca217

File tree

161 files changed

+25673
-6301
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

161 files changed

+25673
-6301
lines changed

.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,7 @@ doxygen.log
55
/lib/
66
flags.mk
77
paths.mk
8+
[Bb]uild*/
9+
[Oo]bj*/
10+
[Ii]nstall*/
11+
cmake-build-*/

.gitlab-ci.yml

Lines changed: 53 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,36 @@ variables:
2424
- "yes"
2525
- "no"
2626
description: "Enable compilation using multiple compilers"
27+
SLURM_TESTS_ENABLED:
28+
value: "no"
29+
options:
30+
- "yes"
31+
- "no"
32+
description: "Enable test on the Slurm cluster"
33+
CI_SLURM_PARTITION:
34+
value: "Zen3"
35+
description: "Partition to use (if using Slurm)"
36+
CI_SLURM_NNODES:
37+
value: "1"
38+
description: "Number of nodes to request (if using Slurm)"
39+
CI_SLURM_NTASKS:
40+
value: "1"
41+
description: "Number of tasks to request (if using Slurm)"
42+
CI_SLURM_CPUS_PER_TASK:
43+
value: "64"
44+
description: "Number of CPUs per task (if using Slurm)"
45+
CI_SLURM_MEM_PER_NODE:
46+
value: "64G"
47+
description: "Memory per node (if using Slurm)"
48+
CI_SLURM_TIMELIMIT:
49+
value: "00-10:00:00" # 10 hours
50+
description: "Time limit for the job (if using Slurm)"
51+
SLURM_JOB_START_TIMEOUT_SECONDS:
52+
value: "3600" # 1 hour timeout to switch from PENDING to RUNNING
53+
description: "Allowed time for the job to switch from PENDING to RUNNING (if using Slurm)"
54+
SLURM_DATASETS_DIR_PATH:
55+
value: "/storage/datasets/graphs-and-sparse-matrices"
56+
description: "Path to the datasets directory (if using Slurm)"
2757
COVERAGE_ENABLED:
2858
value: "no"
2959
options:
@@ -237,6 +267,28 @@ gitleaks:
237267
script: gitleaks detect -v --source .
238268

239269

270+
## Jobs running on Slurm cluster
271+
272+
# factored out command to download the datasets, cmake, and build in non-debug mode
273+
.setup_and_build_ndebug_slurm: &setup_and_build_ndebug_slurm
274+
- mkdir -p install build && cd ./build
275+
- ../bootstrap.sh --prefix=../install --with-datasets=${SLURM_DATASETS_DIR_PATH} --no-hyperdags
276+
- make -j$(nproc)
277+
278+
tests_performance_slurm:
279+
rules:
280+
- if: $SLURM_TESTS_ENABLED == "yes"
281+
tags:
282+
- slurm
283+
script:
284+
- *setup_and_build_ndebug_slurm
285+
- make -j$(nproc) performancetests |& tee performancetests.log
286+
- ../tests/summarise.sh performancetests.log tests/performance/output/benchmarks tests/performance/output/scaling
287+
artifacts:
288+
paths: [ build/*.log ]
289+
expire_in: 1 month
290+
291+
240292
## Additional tests specific to main branches only
241293

242294
tests_performance:
@@ -363,7 +415,7 @@ coverage_matrix:
363415
- echo "-- NONBLOCKING=${backends_array[3]}"
364416

365417
- rm -rf build install && mkdir -p install build && cd build
366-
- cmake -DCMAKE_INSTALL_PREFIX='../install'
418+
- cmake -DCMAKE_INSTALL_PREFIX='../install'
367419
-DCMAKE_BUILD_TYPE=Coverage
368420
-DDATASETS_DIR=${ALP_DATASETS}
369421
-DWITH_HYPERDAGS_BACKEND=${backends_array[0]}

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ include/graphblas/base/exec.hpp \
8080
include/graphblas/base/init.hpp \
8181
include/graphblas/base/collectives.hpp \
8282
include/graphblas/base/benchmark.hpp \
83-
include/graphblas/utils/alloc.hpp \
83+
include/graphblas/alloc.hpp \
8484
include/graphblas/utils/config.hpp \
8585
include/graphblas/utils/hpparser.h \
8686
include/graphblas/utils/parser.hpp \

NOTICE

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ to Huawei Technologies Co., Ltd. or one of its subsidiaries:
2121

2222
- Aristeidis Mastoras, Huawei Technologies Switzerland AG; 2020-current.
2323

24-
- Alberto Scolari, Huawei Technologies Switzerland AG; 2021-current.
24+
- Alberto Scolari, Huawei Technologies Switzerland AG; 2021-2025.
2525

2626
- Verner Vlacic, Huawei Technologies Switzerland AG; 2021-current.
2727

@@ -34,6 +34,10 @@ to Huawei Technologies Co., Ltd. or one of its subsidiaries:
3434
- Denis Jelovina, Huawei Technologies Switzerland AG; 2022-current.
3535

3636
- Benjamin Lozes, Huawei Technologies Switzerland AG; 2023.
37+
38+
- Christos Konstantinos Matzoros, Huawei Technologies Switzerland AG; 2024-current.
39+
40+
- Giovanni Gaio, Huawei Technologies Switzerland AG; 2025-current.
3741

3842
The experimental banshee backend has been developed in collaboration with
3943
Prof. Luca Benini at ETH Zuerich and his group. In particular this backend

docs/Suppressions.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,3 +82,30 @@ for( size_t k = 0; k < block_size; ++k ) {
8282
}
8383
```
8484

85+
7. `include/graphblas/reference/blas1.hpp`, masked_apply_generic
86+
```
87+
for( size_t k = 0; k < block_size; ++k ) {
88+
if( mask_b[ k ] ) {
89+
apply( z_b[ k ], x_b[ k ], y_b[ k ], op );
90+
}
91+
}
92+
for( size_t k = 0; k < block_size; ++k ) {
93+
const size_t index = i + k;
94+
assert( index < n );
95+
if( mask_b[ k ] ) {
96+
#ifdef _H_GRB_REFERENCE_OMP_BLAS1
97+
if( !z_coors.asyncAssign( index, update ) ) {
98+
(void) ++asyncAssigns;
99+
}
100+
#else
101+
(void) z_coors.assign( index );
102+
#endif
103+
GRB_UTIL_IGNORE_MAYBE_UNINITIALIZED
104+
// z_b[ k ] has been initialized in the loop just before
105+
*( z_p + index ) = z_b[ k ];
106+
GRB_UTIL_RESTORE_WARNINGS
107+
}
108+
}
109+
#ifdef _H_GRB_REFERENCE_OMP_BLAS1
110+
111+
```

docs/user.conf

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -874,6 +874,7 @@ INPUT = include/graphblas.hpp \
874874
include/graphblas/monoid.hpp \
875875
include/graphblas/iomode.hpp \
876876
include/graphblas/ops.hpp \
877+
include/graphblas/selection_ops.hpp \
877878
include/graphblas/descriptors.hpp \
878879
include/graphblas/rc.hpp \
879880
include/graphblas/reference/config.hpp \

include/CMakeLists.txt

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -41,18 +41,19 @@ set( HEADERS_REGEX ".+\.(hpp|h|hxx|hh|h\\+\\+)$" )
4141
# to avoid flaky acrobatics with regex or glob expressions, copy main files directly
4242
install( FILES "graphblas.hpp" DESTINATION "${INCLUDE_INSTALL_DIR}" )
4343
set( root_files
44-
"graphblas/backends.hpp" "graphblas/benchmark.hpp"
44+
"graphblas/alloc.hpp" "graphblas/backends.hpp" "graphblas/benchmark.hpp"
4545
"graphblas/blas0.hpp" "graphblas/blas1.hpp" "graphblas/blas2.hpp"
4646
"graphblas/blas3.hpp" "graphblas/collectives.hpp" "graphblas/config.hpp"
47-
"graphblas/coordinates.hpp" "graphblas/descriptors.hpp" "graphblas/distribution.hpp"
48-
"graphblas/exec.hpp" "graphblas/identities.hpp" "graphblas/init.hpp"
49-
"graphblas/internalops.hpp" "graphblas/io.hpp" "graphblas/iomode.hpp"
50-
"graphblas/matrix.hpp" "graphblas/monoid.hpp" "graphblas/ops.hpp"
51-
"graphblas/phase.hpp" "graphblas/pinnedvector.hpp" "graphblas/properties.hpp"
52-
"graphblas/rc.hpp" "graphblas/semiring.hpp" "graphblas/spmd.hpp"
53-
"graphblas/tags.hpp" "graphblas/type_traits.hpp" "graphblas/utils.hpp"
54-
"graphblas/vector.hpp" "graphblas/synchronizedNonzeroIterator.hpp"
55-
"graphblas/nonzeroStorage.hpp"
47+
"graphblas/coordinates.hpp" "graphblas/descriptors.hpp"
48+
"graphblas/distribution.hpp" "graphblas/exec.hpp" "graphblas/final.hpp"
49+
"graphblas/identities.hpp" "graphblas/init.hpp" "graphblas/internalops.hpp"
50+
"graphblas/io.hpp" "graphblas/iomode.hpp" "graphblas/matrix.hpp"
51+
"graphblas/monoid.hpp" "graphblas/ops.hpp" "graphblas/phase.hpp"
52+
"graphblas/pinnedvector.hpp" "graphblas/properties.hpp" "graphblas/rc.hpp"
53+
"graphblas/semiring.hpp" "graphblas/spmd.hpp" "graphblas/tags.hpp"
54+
"graphblas/type_traits.hpp" "graphblas/utils.hpp" "graphblas/vector.hpp"
55+
"graphblas/synchronizedNonzeroIterator.hpp" "graphblas/nonzeroStorage.hpp"
56+
"graphblas/selection_ops.hpp"
5657
)
5758

5859
set( GRB_INCLUDE_INSTALL_DIR "${INCLUDE_INSTALL_DIR}/graphblas")

include/graphblas.hpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,12 @@
170170
* -# #grb::Monoid, and
171171
* -# #grb::Semiring.
172172
*
173+
* A list of standard operators, monoids, and semirings are provided in their
174+
* respective name spaces:
175+
* -# #grb::operators,
176+
* -# #grb::monoids, and
177+
* -# #grb::semirings.
178+
*
173179
* Binary operators are parametrised in two input domains and one output domain,
174180
* \f$ D_1 \times D_2 \to D_3 \f$. The \f$ D_i \f$ are given as template
175181
* arguments to the operator. A #grb::Monoid is composed from a binary operator
@@ -513,6 +519,7 @@ namespace grb {
513519
#include <graphblas/ops.hpp>
514520
#include <graphblas/monoid.hpp>
515521
#include <graphblas/semiring.hpp>
522+
#include <graphblas/selection_ops.hpp>
516523

517524
// Then include containers. If containers rely on ALP/GraphBLAS primitives that
518525
// are defined as free functions, then container implementations must forward-

0 commit comments

Comments
 (0)