SORU
5 Mayıs 2015, Salı


Armadillo çözmek() iş parçacığı güvenli?

Benim kod, ben inşa ve kararlı doğrusal sistem ve bunu çözmek için denemek döngü var:

#pragma omp parallel for
for (int i = 0; i < n[0] 1; i  ) {
    for (int j = 0; j < n[1] 1; j  ) {
        for (int k = 0; k < n[2] 1; k  ) {
            arma::mat A(max_points, 2);
            arma::mat y(max_points, 1);
            // initialize A and y

            arma::vec solution = solve(A,y);
        }
    }
}

Bazen, program kilitleniyor oldukça rasgele veya çözüm vektöründe sonuçları NaN. Ve eğer bunu koyarsam:

arma::vec solution;
#pragma omp critical 
{
    solution = solve(weights*A,weights*y);
}

o zaman bu sorun artık olmayacak gibi görünmüyor.

Asılı zaman, bazı konuları OpenMP engeli bekliyor çünkü bunu yapar:

Thread 2 (Thread 0x7fe4325a5700 (LWP 39839)):
#0  0x00007fe44d3c2084 in gomp_team_barrier_wait_end () from /usr/lib64/gcc-4.9.2/lib64/gcc/x86_64-redhat-linux-gnu/4.9.2/libgomp.so.1
#1  0x00007fe44d3bf8c2 in gomp_thread_start () at ../.././libgomp/team.c:118
#2  0x0000003f64607851 in start_thread () from /lib64/libpthread.so.0
#3  0x0000003f642e890d in clone () from /lib64/libc.so.6

Ve diğer iş Armadillo içinde sıkışmış

Thread 1 (Thread 0x7fe44afe2e60 (LWP 39800)):
#0  0x0000003ee541f748 in dscal_ () from /usr/lib64/libblas.so.3
#1  0x00007fe44c0d3666 in dlarfp_ () from /usr/lib64/atlas/liblapack.so.3
#2  0x00007fe44c058736 in dgelq2_ () from /usr/lib64/atlas/liblapack.so.3
#3  0x00007fe44c058ad9 in dgelqf_ () from /usr/lib64/atlas/liblapack.so.3
#4  0x00007fe44c059a32 in dgels_ () from /usr/lib64/atlas/liblapack.so.3
#5  0x00007fe44f09fb3d in bool arma::auxlib::solve_ud<double, arma::Glue<arma::Mat<double>, arma::Mat<double>, arma::glue_times> >(arma::Mat<double>&, arma::Mat<double>&, arma::Base<double, arma::Glue<arma::Mat<double>, arma::Mat<double>, arma::glue_times> > const&) () at /usr/include/armadillo_bits/lapack_wrapper.hpp:677
#6  0x00007fe44f0a0f87 in arma::Col<double>::Col<arma::Glue<arma::Glue<arma::Mat<double>, arma::Mat<double>, arma::glue_times>, arma::Glue<arma::Mat<double>, arma::Mat<double>, arma::glue_times>, arma::glue_solve> >(arma::Base<double, arma::Glue<arma::Glue<arma::Mat<double>, arma::Mat<double>, arma::glue_times>, arma::Glue<arma::Mat<double>, arma::Mat<double>, arma::glue_times>, arma::glue_solve> > const&) ()
at /usr/include/armadillo_bits/glue_solve_meat.hpp:39

Stacktrace gördüğünüz gibi Armadillo benim sürümü atlas kullanır. Ve atlas parçacığı güvenli gibi görünüyor, bu belgelere göre: ftp://lsec.cc.ac.cn/netlib/atlas/faq.html#tsafe

Güncelleme 9/11/2015

Sonunda daha fazla test için biraz zaman, Vladimir F. önerileri temelinde var

Ben armadillo ATLAS'IN BLAS derleme, hala sonra kilitleniyor ve NaNs çoğaltmak mümkün değilim. Asılı zaman, stacktrace içinde değişen tek şey BLAS çağrısı

#0  0x0000003fa8054718 in ATL_dscal_xp1yp0aXbX@plt () from /usr/lib64/atlas/libatlas.so.3
#1  0x0000003fb05e7666 in dlarfp_ () from /usr/lib64/atlas/liblapack.so.3
#2  0x0000003fb0576a61 in dgeqr2_ () from /usr/lib64/atlas/liblapack.so.3
#3  0x0000003fb0576e06 in dgeqrf_ () from /usr/lib64/atlas/liblapack.so.3
#4  0x0000003fb056d7d1 in dgels_ () from /usr/lib64/atlas/liblapack.so.3
#5  0x00007ff8f3de4c34 in void arma::lapack::gels<double>(char*, int*, int*, int*, double*, int*, double*, int*, double*, int*, int*) () at /usr/include/armadillo_bits/lapack_wrapper.hpp:677
#6  0x00007ff8f3de1787 in bool arma::auxlib::solve_od<double, arma::Glue<arma::Mat<double>, arma::Mat<double>, arma::glue_times> >(arma::Mat<double>&, arma::Mat<double>&, arma::Base<double, arma::Glue<arma::Mat<double>, arma::Mat<double>, arma::glue_times> > const&) () at /usr/include/armadillo_bits/auxlib_meat.hpp:3434

ATLAS, sadece ağ kitaplığı BLAS ve LAPACK olmadan derleniyor, ama kilitleniyor, NaNs çoğaltmak mümkün oldu.

Çözmek çevreleyen her iki durumda da, () #pragma omp ile kritik ben hiçbir sorunları var

CEVAP
15 NİSAN 2013, PAZARTESİ


Aslında sadece bir cevap eklemek için:

Ren onun yorum belirtildiği gibi, bu bir hata ile ilgili olarak 11* o *,.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • buttheadgsxr1000

    buttheadgsxr

    24 Ocak 2008
  • Jason Rosolowski

    Jason Rosolo

    25 EKİM 2006
  • Crossover

    Crossover

    18 HAZİRAN 2007