2009-08-19 20 views
5

İç içe geçmiş döngülerimle çoklu iş parçacığı yapmak için OpenMP kullanıyorum. Bu şeylere yeninden beri, OpenMP'yi doğru şekilde kullanıp kullanmadığımı, böylece paralel programlamayı yapabileceğinden emin değilim. Bu yüzden OpenMP'yi kullanan C++ programımın performansını ölçüp ölçemediğimi bilmek isterim, bu yüzden gerçekten çalıştığını söyleyebilirim ve doğru yolda mıyım? Paralel olarak kaç tane iş parçacığı çalışıyor ve bunların her biri için ne kadar sürüyor. Teşekkür ve saygılarımla!OpenMP'nin benim C++ programımda çalışıp çalışmadığını söyleme nasıl olur

+0

OpenMPI ile OpenMPI'yi karıştırmaktan dolayı özür dilerim! Dirk Eddelbuettel'e kibarca hatama işaret ettiği için teşekkürler! –

cevap

9
#include <omp.h> 

... 
int target_thread_num = 4; 
omp_set_num_threads(target_thread_num); 
unsigned long times[target_thread_num]; 

// Initialize all the times 
#pragma omp parallel 
{ 
    int thread_id = omp_get_thread_num(); 
    times[thread_id] = start_time(); 

    std::cout << "Thread number: " << omp_get_thread_num() << endl; 

    times[thread_id] = end_time(); 
} 
... 
devam ederken bunların her
  • duraklama bazıları çalıştığı kodu

    Açıkçası, iki zamanlayıcı işlevini sağlamanız gerekir, ancak bu özellik budur. OMP işlevleri oldukça kendinden açıklayıcıdır. Ayrıca ortamınızın uygun şekilde kurulduğundan ve uygun mekanizmalarla derlediğinizden emin olun. g ++ seçeneği -fopenmp'dir. Visual Studio'da proje ayarları, C++, Dil'e gidin ve "OpenMP Desteği" ni etkinleştirin.

  • 1

    CPU kullanımını izlemek için windows taskmanager (CTRL-SHIFT-ESC) pencerelerini ya da * nix kutularını üstte kullanabilirsiniz.

    birçok çekirdek kullanıldığında sadece kontrol ya da değil

    1
    (Windows üzerinde iseniz Visual Studio) Bu hizmeti kullanmak için ayıklayıcı kullanabilirsiniz

    :

    • nasıl ipler
    • bkz çalışan edebilir bkz icar diğerleri
    +0

    Bunları gdb/on Linux ile nasıl yapılacağını biliyor musunuz? – Tim

    +0

    Bu yardımcı olmalıdır: http://www.delorie.com/gnu/docs/gdb/gdb_25.html Ayrıca bu sayfanın altındaki bağlantılara da bakın. (Caveat: Bunu Google ile buldum; GDB kullanıcısı değilim.) – RichieHindle

    +0

    Linux üzerinde, çekirdeklerinizi görmek için her zaman 'top' kullanabilir ve ne yaptığını kontrol edebilirsiniz. – Anna

    İlgili konular