Comments (9)
It also fails with this code:
double a[M][N];
double b[M][N];
double c0;
double c1;
double c2;
for(int j=1; j < M-1; j++){
for(int i=1; i < N-1; i++){
b[j][i] = c0 * a[j][i]
+ c1 * (a[j][i-1] + a[j-1][i] + a[j+1][i] + a[j][i+1])
+ c2 * (a[j-1][i-1] + a[j+1][i-1] + a[j-1][i+1] + a[j+1][i+1])
;
}
}
from kerncraft.
you can resolve this by manually providing the pointer increment via --pointer-increment
. For me to investigate this issue further, you will need to provide the generated assembly file.
from kerncraft.
@sguera Have you tried the latest kerncraft version? Did it solve the problem? If not, could you provide the generated assembly file for debugging purposes.
from kerncraft.
I just tried for both the codes. I still get the same error with the latest kerncraft.
I attach the 2 assembly files.
2D-5pt-variable.s.txt
2D-5pt-constant.s.txt
from kerncraft.
It is not en error, you can always set the pointer increment manually: for the 2D-5pt-variable code use --pointer-increment 16
and for the 2D-5pt-constant code use --pointer-increment 8
.
I will try to tweak the heuristics to also handle the codes you provided, but there will always be cases where it fails an the loop or pointer increment needs to be manually given.
from kerncraft.
I understand.. the problem is when we want to use it automatically on all the bouquet of stencils that can be generated through STEMPEL (generate each possible combination + for each code kerncraft analysis + for each code run through PROVA! and then validate)
from kerncraft.
For me to understand how to do it (even if not automatically), can you explain or give me a reference in how to identify the correct pointer increment (and then manually specify it?
from kerncraft.
You need to identify the loop in the assembly code. iaca_marker
helps here, most of the time the default selection is correct. Then in the assembly you will need to look for the store memory references and identify the increment from one block iteration to the next.
from kerncraft.
The two cases you provided are now recognized automatically, but as said before: there will always be situations where the heuristic fails.
from kerncraft.
Related Issues (20)
- Upgrade to latest ruamel.yaml to support Python 3.7
- Compiler selection order not constant HOT 1
- Print compiler calls with verbosity flags HOT 1
- Pack kernel in a function for Benchmark mode HOT 5
- precompile kernel for benchmark HOT 1
- Arrays not swapped between sweeps in compilable code HOT 2
- Support parallel execution of Kerncraft on same kernel file
- Merge LC model and LC cache predictor
- Generic ECM model description in Machine File
- Print load and store bytes per iteration/CL in LC module HOT 1
- Return git hash with --version, if available HOT 1
- Make machine model vs hardware check more robust HOT 2
- Document current machinefile format
- Extend benchmarks to include repeated measurements
- Intel compiler requires zmm-usage option for AVX512 code HOT 1
- Allow machine file features to be overwritten from the command line
- Extend layer conditions with a transition model
- Redirect version information to stdout HOT 2
- Cache Simulator Speedup Improvements: Elements per Iteration assumption? HOT 4
- other iaca_instrumentation() parameter needed as described
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 kerncraft.