Preesm 3.11.0 and S-LAM Hardware ID

We have released Preesm version 3.11.0. This new release introduces a new property for the component instances of the S-LAM architecture model. This integer property hardwareID links the component instance to the processor ID as listed by the OS running the application.

This property is used during the code generation to ensure the the actors mapped to a specific component instance are properly executed on the corresponding one. There is no constraint in the model forbidding to set the same ID to several components. Indeed the architecture model could represent 8 x86 cores with 2 CUDA GPUs and 1 shared memory, having the x86 IDs ranging from 0 to 7, the GPU IDs set to 0 and 1, and the memory ID set to 0. However the current code generation will throw errors if several Operator (i.e. x86 or GPU, but not the memory) share the same ID.

This new property causes warnings when unset. We have updated most of the tutorials and our application repository (preesm-apps) to reflect this update. If your workflow ‘Error on Warning’ settings is set to true, this warning will cause a failure.

Allong with this new property, we have fixed the code generation to properly assign the affinity of the main thread (the thread running on the main operator). We have also disabled the affinity settings on Windows and added a new C preprocessor test on PREESM_NO_AFFINITY to disable affinity setting if defined.