- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello,
I'm obtaining run-time traces of the NAS Parallel Benchmarks parallelized with OpenMP and built with ifort. I'm interested in "capturing" the functions generated by ifort, namely those that contain __par_region in their name. These are discussed in the ifort manual, in the section targeted to debugging of OpenMP applications, so I assume that these symbols have to be in the final binaries.
The thing is, I have two build machines. When I build the benchmarks on a SGI Altix (Intel 64) using ifort 11.0 074, the final binary has these symbols:
> nm bin/cg.S | grep conj_grad
4000000000007d00 T conj_grad_
4000000000007d00 t conj_grad_??unw
6000000000013e30 s ___kmpv_zeroconj_grad__9
40000000000081c0 T L_conj_grad__523__par_region9_2$12
400000000000a380 T L_conj_grad__547__tree_reduce11_2$8
400000000000a2c0 T L_conj_grad__631__tree_reduce13_2$9
400000000000a200 T L_conj_grad__656__tree_reduce14_2$10
400000000000a140 T L_conj_grad__700__tree_reduce17_2$11
4000000000111130 r __udt_conj_grad_??unw
>
However, building the same source on an x86_64 box using ifort 11.0 081 (note the slight version difference), the symbols are not there:
> nm bin/cg.S | grep conj_grad
00000000006d3f58 b ___kmpv_zeroconj_grad__9
0000000000406410 T conj_grad_
>
The only options passed to the compiler are "-O -openmp". I have even tried passing -O0 and -g to no avail; same results.
If I compile the sources to assembly code (using -S), I can see that the names are actually generated. But, for some reason, they don't end up in the object code.
Any ideas?
Thank you!
I'm obtaining run-time traces of the NAS Parallel Benchmarks parallelized with OpenMP and built with ifort. I'm interested in "capturing" the functions generated by ifort, namely those that contain __par_region in their name. These are discussed in the ifort manual, in the section targeted to debugging of OpenMP applications, so I assume that these symbols have to be in the final binaries.
The thing is, I have two build machines. When I build the benchmarks on a SGI Altix (Intel 64) using ifort 11.0 074, the final binary has these symbols:
> nm bin/cg.S | grep conj_grad
4000000000007d00 T conj_grad_
4000000000007d00 t conj_grad_??unw
6000000000013e30 s ___kmpv_zeroconj_grad__9
40000000000081c0 T L_conj_grad__523__par_region9_2$12
400000000000a380 T L_conj_grad__547__tree_reduce11_2$8
400000000000a2c0 T L_conj_grad__631__tree_reduce13_2$9
400000000000a200 T L_conj_grad__656__tree_reduce14_2$10
400000000000a140 T L_conj_grad__700__tree_reduce17_2$11
4000000000111130 r __udt_conj_grad_??unw
>
However, building the same source on an x86_64 box using ifort 11.0 081 (note the slight version difference), the symbols are not there:
> nm bin/cg.S | grep conj_grad
00000000006d3f58 b ___kmpv_zeroconj_grad__9
0000000000406410 T conj_grad_
>
The only options passed to the compiler are "-O -openmp". I have even tried passing -O0 and -g to no avail; same results.
If I compile the sources to assembly code (using -S), I can see that the names are actually generated. But, for some reason, they don't end up in the object code.
Any ideas?
Thank you!
Link Copied
1 Reply
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Quoting - jmmv
Hello,
I'm obtaining run-time traces of the NAS Parallel Benchmarks parallelized with OpenMP and built with ifort. I'm interested in "capturing" the functions generated by ifort, namely those that contain __par_region in their name. These are discussed in the ifort manual, in the section targeted to debugging of OpenMP applications, so I assume that these symbols have to be in the final binaries.
The thing is, I have two build machines. When I build the benchmarks on a SGI Altix (Intel 64) using ifort 11.0 074, the final binary has these symbols:
> nm bin/cg.S | grep conj_grad
4000000000007d00 T conj_grad_
4000000000007d00 t conj_grad_??unw
6000000000013e30 s ___kmpv_zeroconj_grad__9
40000000000081c0 T L_conj_grad__523__par_region9_2$12
400000000000a380 T L_conj_grad__547__tree_reduce11_2$8
400000000000a2c0 T L_conj_grad__631__tree_reduce13_2$9
400000000000a200 T L_conj_grad__656__tree_reduce14_2$10
400000000000a140 T L_conj_grad__700__tree_reduce17_2$11
4000000000111130 r __udt_conj_grad_??unw
>
However, building the same source on an x86_64 box using ifort 11.0 081 (note the slight version difference), the symbols are not there:
> nm bin/cg.S | grep conj_grad
00000000006d3f58 b ___kmpv_zeroconj_grad__9
0000000000406410 T conj_grad_
>
The only options passed to the compiler are "-O -openmp". I have even tried passing -O0 and -g to no avail; same results.
If I compile the sources to assembly code (using -S), I can see that the names are actually generated. But, for some reason, they don't end up in the object code.
Any ideas?
Thank you!
I'm obtaining run-time traces of the NAS Parallel Benchmarks parallelized with OpenMP and built with ifort. I'm interested in "capturing" the functions generated by ifort, namely those that contain __par_region in their name. These are discussed in the ifort manual, in the section targeted to debugging of OpenMP applications, so I assume that these symbols have to be in the final binaries.
The thing is, I have two build machines. When I build the benchmarks on a SGI Altix (Intel 64) using ifort 11.0 074, the final binary has these symbols:
> nm bin/cg.S | grep conj_grad
4000000000007d00 T conj_grad_
4000000000007d00 t conj_grad_??unw
6000000000013e30 s ___kmpv_zeroconj_grad__9
40000000000081c0 T L_conj_grad__523__par_region9_2$12
400000000000a380 T L_conj_grad__547__tree_reduce11_2$8
400000000000a2c0 T L_conj_grad__631__tree_reduce13_2$9
400000000000a200 T L_conj_grad__656__tree_reduce14_2$10
400000000000a140 T L_conj_grad__700__tree_reduce17_2$11
4000000000111130 r __udt_conj_grad_??unw
>
However, building the same source on an x86_64 box using ifort 11.0 081 (note the slight version difference), the symbols are not there:
> nm bin/cg.S | grep conj_grad
00000000006d3f58 b ___kmpv_zeroconj_grad__9
0000000000406410 T conj_grad_
>
The only options passed to the compiler are "-O -openmp". I have even tried passing -O0 and -g to no avail; same results.
If I compile the sources to assembly code (using -S), I can see that the names are actually generated. But, for some reason, they don't end up in the object code.
Any ideas?
Thank you!
Try the -dryrun option on each to verify that they are using the same compiler options.
ron
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