Comments (8)
Thanks, can you please send a PR?
from aggregation.
I haven't diagnosed the root cause of error, but simply skipped the cases that calls partialSparsification
in order to compile that example program. For example SpTrSv_LL_HDAGG
doesn't call sparsification so still runs, but SpTrSv_LL_Tree_HDAGG
breaks. However the inspection time of HDAGG
is many times slower than Tree_HDAGG
, presumably due to lack of sparsification.
from aggregation.
One clue: The same SpTRSV_runtime.cpp example from the older repo https://github.com/BehroozZare/HDagg-benchmark (as of commit 948b38f
) runs fine without array-bound errors. So it must be due to some updates in between.
from aggregation.
Got it, thanks.
I think HDagg repo is more updated than this for the HDagg algorithm.
from aggregation.
Hi @cheshmi I found the problem with this repo --
The find_package(OpenMP)
in the top-level cmake file is disabled:
Lines 59 to 72 in da104fa
This is probably fine when compiled as a subproject of Sympiler (where OpenMP is found one level higher); but when compiling this aggregation
repo as a standalone project, the ENABLE_OPENMP
macro and OpenMP flags won't get defined. Then, inside the HDAGG::partialSparsification
function:
aggregation/src/hdagg/hdagg.cpp
Lines 2036 to 2042 in da104fa
Both bins
and tid
will be set to 1
, causing a bug when the user wants parallel partitioning.
Uncommenting find_package(OpenMP)
fixes the bug. Or maybe using the HAS_PARENT
condition to optionally include dependencies.
One the other hand, in the older HDagg-benchmark repo, there is no ENABLE_OPENMP
switch, and bins
is always set to omp_get_num_threads()
, so no such bug.
from aggregation.
More unit tests for the HDagg procedure (sparsification, grouping, partitioning, ungrouping...) might help prevent future bugs? In the current Catch_tests there seems to be only one test for the simple levelset sptrsv, but not more advanced partitionings like LBC or HDagg. And the test is disabled in cmake file.
from aggregation.
The current GitHub workflow runs lbc_demo
and sptrsv_demo
, but not Hdagg_SpTRSV
(the executable for SpTRSV_runtime.cpp
).
aggregation/.github/workflows/cmakeUbuntu.yml
Lines 37 to 45 in da104fa
If you add lines like
cmake --build ${{github.workspace}}/build --target Hdagg_SpTRSV
${{github.workspace}}/build/example/Hdagg_SpTRSV`,
you should see the error message in GitHub actions.
from aggregation.
OK I saw that find_package(OpenMP)
was disabled by the commit 5b88309 , presumably to ensure compatibility with the parent Sympiler directory.
May using
if(LBC_IS_TOPLEVEL)
find_package(OpenMP)
endif()
to avoid duplication. Although I think duplicately calling find_package(OpenMP)
is also fine...
from aggregation.
Related Issues (6)
- How is the average memory access latency measured or calculated? HOT 2
- Use std::isnan in example/SpTRSV_runtime.h HOT 1
- Metis reordering necessary to sptrsv example? HOT 1
- Why is Metis reordering necessary for the sptrsv example? HOT 10
- Invalid vector size bug during Tree-HDagg partitioning for certain input matrices HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from aggregation.