Does your product link to IPP dynamically? And if so, what would be the potential impact to you if Intel were to remove dynamic linkage entirely from the product and only provide static linkage as part of the product? Your input is appreciated.
Thanks for your input Sergey. It is greatly appreciated. We know that a lot of customers are using dynamic linkage and are trying to assess the impact to our customers if we were to remove it.
I statically link, and much prefer it. The fact of life now is that hard drives are massive, as is memory, compared to win 3.1 days when DLL's were really needed. I have worked at companies where DLL's, and especially COM caused massive problems due to different product installs affecting already instealled programs. I prefer to statically link, and know my programs will work, regardless of what any other program or installer does. I believe a user is much more concerned about that, that slightly more hard drive used and a little bit more memory.
Sergey Kostrov wrote:
I simply would like to understand Why do you consider that option, that is Dynamic linking removal?
Intel is trying to gauge whether or not dynamic linking is something that is needed for IPP moving forward. If the customers are not using it and it is of little value, then it is important to consider removing it in a future release. Again, we are just trying to get a feel for what the customers think.
Internally, we use several applications that use dynamic linking. No external apps do. It simply is not worth the descent into dll-hell for little or no gain. Given how cheap storage is and the (comparitively) small size of the IPP memory footprint, I see no reason to maintaion dynamic linkage.
A caveat is that static linkage to IPP does not work on Windows with the combination of Composer 2013 and Visual Studio 2012. See this post for details: http://software.intel.com/en-us/forums/topic/328164
I link several DLLs using threaded static libraries, with each DLL having one CPU type. A main DLL contains my common functions, and also takes care of dispatching (loading + getting function pointers) to the proper CPU DLL.
I achieve more or less the same as IPP dynamic libraries, but then with only my actually used functions. This way, the size of my used IPP is much smaller.