Comments (5)
Hi Matt,
Thanks for your questions. A few clarifications:
- You don't need to add every function to
WORKLOAD
anymore. If there's just one function inWORKLOAD
, LLVM-Tracer assumes it is the top level one and will trace every function called by that function. - There are several reasons why you could be getting that error, but the most common is that you didn't declare
m
in your Aladdin configuration file. Ifm
is a function argument of your top level function or is declared inside the top level function, this is required.
Sam
from aladdin.
Hi Sam,
Thanks a lot for your prompt reply. m
was in fact the function parameter of one of the helper functions. Now that I have removed the helper functions from WORKLOAD
, I get a similar error for the arrays declared inside the top level function.
Can you please explain why this is required? A pointer to a paper or an article would be great.
The reason I am asking this is that I partitioned all the necessary arrays to registers, but I get a segmentation fault when scheduling begins. I would like to know if partitioning can affect scheduling.
from aladdin.
Partitioning absolutely affects scheduling - the more you partition an array, the more memory bandwidth you are provisioning for your accelerator, and more concurrent memory accesses leads to faster execution (which means a different schedule).
You have to declare the arrays in the configuration file because that's how Aladdin knows about them in the first place. All of the fields are important - name, size, word size, and partitioning factor - and getting one of them wrong could potentially lead to unexpected behavior.
As a side note, generally, you only want to partition very small arrays completely into registers, as they are much more expensive to build than SRAMs.
For more information, I suggest you read the original Aladdin paper.
from aladdin.
Thanks a lot for your thorough explanation. I had read the paper a couple of times, but I still had issues understanding partitions. I guess the concept is clear now.
By the way, the reason for segmentation fault was loop unrolling configuration. It looks like I have to explicitly mention loop unrolling factor even if I do not want to unroll any of the loops (unroll once).
from aladdin.
Yes, that is correct. Aladdin's loop unrolling optimization is actually a loop rolling operation, because we start with the idealistic DDDG that only has true memory dependences, so at the beginning, all loops are completely unrolled (aka flattened). In order to model loop unrolling, we then add additional dependences to the loops. So if you don't mention loop unrolling for a loop, then Aladdin wouldn't know that loop exists at all, and then that loop would remain flattened - it's not so trivial to set a default to 1 because we don't know a priori where all the loops are in the dynamic trace to begin with.
from aladdin.
Related Issues (20)
- Compilation of Aladdin is not working as per instructions HOT 1
- SHOC/fft dynamic trace not forming in dma-trace-binary
- bash: $../ALADDIN_HOME/common/aladdin: No such file or directory HOT 3
- full_trace.so no such file or directory HOT 4
- About configure file HOT 2
- How did file dynamic_trace.gz come about? HOT 1
- can't produce dynamic_trace.gz HOT 2
- A problem about running aladdin HOT 2
- About Aladdin's Input HOT 2
- Error: can't find library python2.7 required by python HOT 1
- /usr/bin/ld: /tmp/ccP7FT6j.o: relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a PIE object; recompile with -fPIC #30 HOT 2
- declare it as partition_factor 1 in your config file, like: like what๏ผ HOT 1
- About the generation of binary files HOT 1
- Benchmarking math functions HOT 2
- Simulation crashes caused by empty array labels in host memory operations
- Failed to build aladdin HOT 1
- Xyzsam/gem5-Aladdin missing build director HOT 13
- Run gem5-aladdin images and run example (with Window putty to Linux)
- Running ALADIN for bb_gemm [ Crash ] HOT 2
- issue about power_dalay data
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 aladdin.