Комментировать

Но вопросов этот простенький

Но вопросов этот простенький пример порождает много:

- компиляция C-кода делается g++, хотя бы потому, что C & C++ образуют по-разному внешние имена для линковки:

  1. [<a href="mailto:olej@nvidia" rel="nofollow">olej@nvidia</a> mobj]$ nm clock.o
  2. 00000000 T _Z12clock_cyclesv

вот то _Z12... и есть типизация параметров и возврата C++.

- стоит поменять g++ на gcc на линковке и всё рассыпается ... из-за дефаултных подключаемых библиотек (а как их дефаулт - посмотреть?):

  1. [<a href="mailto:olej@nvidia" rel="nofollow">olej@nvidia</a> mobj]$ ldd multiple
  2.     linux-gate.so.1 =>  (0x0076b000)
  3.     libcudart.so.4 => /usr/local/cuda/lib/libcudart.so.4 (0x00ddc000)
  4.     libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x075d5000)
  5.     libm.so.6 => /lib/libm.so.6 (0x00b51000)
  6.     libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00b88000)
  7.     libc.so.6 => /lib/libc.so.6 (0x009a1000)
  8.     libdl.so.2 => /lib/libdl.so.2 (0x00b4a000)
  9.     libpthread.so.0 => /lib/libpthread.so.0 (0x00b2d000)
  10.     librt.so.1 => /lib/librt.so.1 (0x00b7d000)
  11.     /lib/ld-linux.so.2 (0x0097c000)

- ну и в подтверждение того, что это одно и то же (почти) приложение:

  1.  
  2. [<a href="mailto:olej@nvidia" rel="nofollow">olej@nvidia</a> mobj]$ ls -l *
  3. ...
  4. -rwxrwxr-x. 1 olej olej 11550 Ноя  5 21:09 multiple
  5. ...
  6. -rwxrwxr-x. 1 olej olej 11525 Ноя  5 21:09 solid
  7. ...
  8. [<a href="mailto:olej@nvidia" rel="nofollow">olej@nvidia</a> mobj]$ ./multiple
  9. execution time was 184467452 cycles
  10. [<a href="mailto:olej@nvidia" rel="nofollow">olej@nvidia</a> mobj]$ ./solid
  11. execution time was 132999604 cycles
  12. [<a href="mailto:olej@nvidia" rel="nofollow">olej@nvidia</a> mobj]$ ./solid
  13. execution time was 160662372 cycles
  14. [<a href="mailto:olej@nvidia" rel="nofollow">olej@nvidia</a> mobj]$ ./multiple
  15. execution time was 117963975 cycles