- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi all,
I have been building the UMC samples that come with IPP 6.1 as static libraries using both ICL and VC9. In either case when I link the UMC libraries with a 64-bit application, depends does not list libiomp5md.dll as a dependency while 32-bit applications do. Is there something I'm missing to get threaded 64-bit static UMC libraries?
Thanks,
Peter
I have been building the UMC samples that come with IPP 6.1 as static libraries using both ICL and VC9. In either case when I link the UMC libraries with a 64-bit application, depends does not list libiomp5md.dll as a dependency while 32-bit applications do. Is there something I'm missing to get threaded 64-bit static UMC libraries?
Thanks,
Peter
Link Copied
7 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Quoting - pvonkaenel
Hi all,
I have been building the UMC samples that come with IPP 6.1 as static libraries using both ICL and VC9. In either case when I link the UMC libraries with a 64-bit application, depends does not list libiomp5md.dll as a dependency while 32-bit applications do. Is there something I'm missing to get threaded 64-bit static UMC libraries?
Thanks,
Peter
I have been building the UMC samples that come with IPP 6.1 as static libraries using both ICL and VC9. In either case when I link the UMC libraries with a 64-bit application, depends does not list libiomp5md.dll as a dependency while 32-bit applications do. Is there something I'm missing to get threaded 64-bit static UMC libraries?
Thanks,
Peter
Well it looks like it was specific to the cl compiler and not icl. There is a place in the UMC makefile that only puts /openmp in with the CFLAGS if it is a 32-bit build. Is there something wrong with using the libiomp5md version of OpenMP in the UMC samples when build with cl for 64-bit?
Peter
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Peter,
You can change the following to enable the openmp threading with cl:
!IF "$(CC)" == "cl.exe" && "$(ARCH)" == "win32"
->>!IF "$(CC)" == "cl.exe"
The OpenMP code will be threaded by MS compiler. The code will depends on MS OpenMP runtime library (vcomp.dll?), not Intel openmp library (libiomp5md).
thanks,
Chao
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Quoting - Chao Yu (Intel)
Hi Peter,
You can change the following to enable the openmp threading with cl:
!IF "$(CC)" == "cl.exe" && "$(ARCH)" == "win32"
->>!IF "$(CC)" == "cl.exe"
The OpenMP code will be threaded by MS compiler. The code will depends on MS OpenMP runtime library (vcomp.dll?), not Intel openmp library (libiomp5md).
thanks,
Chao
Thanks for the reply Chao. That is the makefile change I made, but I also link with libiomp5md.lib which gets me Intel's version of OpenMP.
Peter
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Quoting - pvonkaenel
Thanks for the reply Chao. That is the makefile change I made, but I also link with libiomp5md.lib which gets me Intel's version of OpenMP.
Peter
Hi Peter,
'libiomp5md.lib' is not necessory. since the code is comipled by MS compiler. The compiler will choose the MS openmp runtime library. Adding libiomp5md.lib may not be helpful.
Thanks,
Chao
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Quoting - Chao Yu (Intel)
Hi Peter,
'libiomp5md.lib' is not necessory. since the code is comipled by MS compiler. The compiler will choose the MS openmp runtime library. Adding libiomp5md.lib may not be helpful.
Thanks,
Chao
Hi Chao,
I have two reasons for wanting to use libiomp5md.dll instead of vcomp9.dll, but please let me know if they are misplaced:
1) I use IPP, and while I do not currently use the threaded layer, if I start then I think I must use libiomp5md. Is that correct, or will IPP threaded calls use vcomp?
2) libiomp5md conforms to OpenMP 3 while vcomp9 is still OpenMP 2. I am assuning there have been advances in 3 over 2 that I should be able to seemlessly take advantage of. Is this correct, or are all the changes in omp_* calls that will only be available if I'm also using Intel's omp.h header file?
Thanks,
Peter
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Peter,
IPP static libraries are not threaded, and do not depend on libiomp5md. IPP dynamic libraries and threaded static libraries are threaded internally with 'libiomp5md' ( IPP functions are built with Intel Compiler).
The threading in UMC sample code is different. It is threaded in the UMC source code, not IPP functions. So if you build with UMC source with cl. it will use 'vcomp'. If you build the source code with Intel Compiler, it will choose 'libiomp5md'.
So in this case, if you want to use 'libiomp5md', you need to use Intel Compiler to compile the source code.
Thanks,
Chao
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Quoting - Chao Yu (Intel)
Hi Peter,
IPP static libraries are not threaded, and do not depend on libiomp5md. IPP dynamic libraries and threaded static libraries are threaded internally with 'libiomp5md' ( IPP functions are built with Intel Compiler).
The threading in UMC sample code is different. It is threaded in the UMC source code, not IPP functions. So if you build with UMC source with cl. it will use 'vcomp'. If you build the source code with Intel Compiler, it will choose 'libiomp5md'.
So in this case, if you want to use 'libiomp5md', you need to use Intel Compiler to compile the source code.
Thanks,
Chao
Good to know. I was not aware that the UMC libraries used the non-threaded IPP. However, I have build UMC and all of my code with VC9, specified libiomp5md in my link, and it worked fine. Looking at my binaries with depends shows a dependency on libiomp5md.dll and not on vcomp90.dll. I take it from your comments that since I want to use VC9, the safest way to use OpenMP is with the MS library even though linking with Intel's appears (on the surface) to work. Thanks for the input - I'll switch it over and start my testing.
Peter
Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page