Lapack: Segfault di ./EIG/xeigtstz

Dibuat pada 19 Apr 2019  ·  11Komentar  ·  Sumber: Reference-LAPACK/lapack

Hai,

ini dengan Lapack 3.8.0.

Segfault terjadi di xeigtstz dengan lapack 3.8.0 dan gfortran terbaru:

./EIG/xeigtstz < nep.in > znep.out 2>&1
/bin/sh: Zeile 1: 9026 Speicherzugriffsfehler (Speicherabzug geschrieben) ./EIG/xeigtstz < nep.in > znep.out 2>&1

Ini hilang ketika batas tumpukan dinaikkan dari default 8192 kb menjadi 81920 kb (
nilai pertama yang saya coba).

Build System Testing

Semua 11 komentar

Tampaknya merupakan duplikat dari https://github.com/Reference-LAPACK/lapack/issues/276 .

gfortran9 menandai akses di luar batas di (antara lain) TESTING/EIG/zhet21.f baris 304 (lakukan loop pada J yang berjalan dari 1 hingga N-1, mengakses elemen array U(1, J-1 ) ... Aduh). Tidak yakin apakah ini sebenarnya dan satu-satunya penyebab masalah ini ...
EDIT: pengamatan saya tidak terkait (dan saya sebenarnya melewatkan bahwa Anda sudah membuka #333 untuk itu) xeigtstz mencoba mengalokasikan sekitar 10MB pada tumpukan untuk tes NEP seperti yang telah dicatat di https://github.com/xianyi/OpenBLAS/ masalah/1645

pengaturan ulimit -s 16384 alih-alih default 8192 memperbaiki masalah ini untuk saya juga

Masalah yang sama di sini #85.

Solusi masuk untuk masalah ini adalah meningkatkan batas tumpukan tetapi karena ini adalah ujian, apakah alokasi tumpukan bukan solusi yang lebih baik?

Saya percaya itu adalah array yang dapat dialokasikan yang berakhir di tumpukan karena opsi 'rekursif' (diperlukan untuk keamanan utas) tetapi saya belum berhasil menemukan solusi yang berfungsi.

@weslleyspereira hanya akan mencoba mengkompilasi zchkee.f tanpa opsi -frecursive. Jadi semua file (khususnya liblapack.a) akan dikompilasi menggunakan opsi -frecursive, tetapi zchkee.f akan dikompilasi tanpa opsi -frecursive. Kami pikir/berharap itu akan berhasil. Kami akan menguji. Saya pikir penting untuk mengkompilasi LAPACK dengan -frecursive. Sekarang zchkee.f dapat dikompilasi tanpa. Itu akan baik-baik saja. CMake dan make akan terlihat sedikit lebih jelek. Saya pikir kami sudah lama menunggu untuk test suite baru, jadi kami menyarankan agar kami melakukannya dengan buruk untuk saat ini, dan fokus pada test suite baru.

Bekerja untuk saya selama saya tidak juga menggunakan OpenMP, tetapi yang terakhir sayangnya menyiratkan -frecursive
(Dapat menggunakan filter_out di Makefile untuk menghapus frecursive/Mrecursive dari FFLAGS, jadi tidak banyak keburukan baru)

Bekerja untuk saya selama saya tidak juga menggunakan OpenMP, tetapi yang terakhir sayangnya menyiratkan -frecursive

Ah. Ya, itu masalah potensial.

(Dapat menggunakan filter_out di Makefile untuk menghapus frecursive/Mrecursive dari FFLAGS, jadi tidak banyak keburukan baru)

Ide bagus. Tidak tahu bagaimana filter_out di Makefile bekerja. Lebih buruk menyelidiki. Terima kasih atas tipnya.

PENGUJIAN/EIG/Makefile, setelah include ../../make.inc add

FFLAGS := $(filter-out -frecursive -Mrecursive,$(FFLAGS))
FFLAGS_DRV := $(filter-out -frecursive -Mrecursive,$(FFLAGS_DRV))
LDFLAGS := $(filter-out -frecursive -Mrecursive,$(LDFLAGS))

untuk cmake itu akan menjadi sesuatu seperti
string(REGEX REPLACE "-(fM)recursive" "" FFLAGS ${FFLAGS})
(belum dicoba)

Terima kasih @martin-frbg! Saya akan mengujinya sekarang

Apakah halaman ini membantu?
0 / 5 - 0 peringkat