How to port optimized applications from one ACCESS system to another?

Hi,

I wonder if there are best practices for porting optimized applications from one system to another in ACCESS? how can I ensure efficient performance from one system to another?

If an application is optimized on one system, it means the compiler took into consideration, the hardware spec of the system(instruction sets, memory structure, cache, etc). This means if you copy the binary to another system you can get similar performance if the system specs are compatible. If the compatibility differ a lot you won’t be able to execute the application on the new system. In such a case you will need to compile and set optimization flags ( depending on how you want to use the application) for your new system.

Now when you talk about porting an application to a system, it means compiling the application to the hardware specifications of your systems. How you do this is almost alway the same:

  • You will need to know the application (dependencies and the structure of the program)
  • You should be able able read the source code of the application
  • Have software development skills or be able to work effectively with the deveoper
  • Even important is having the developer to work with you to do the necessary changes, because they are familiar with the source code and can quickly carry out the changes.
  • Have a solid understanding of application optimization, the pros and cons to be able to find a balance in optimization
  • Know the compiler very well to be able to choose the flags compatible with the system.
  • Finally, be able to carry out performance analysis to map the runtime environment of the application and identify bottlenecks.

I try to use containers for that purpose whenever is possible since the optimized application gets include when the container is built. You then have something you should be able to transfer between systems, albeit with the costs associated with apptainer, etc.