Bir multiprecision Fortran kütüpanesi MPFUN90 ın kurulum sorunu

Başlatan Yılmazeser, 24 Ekim 2014 - 22:27:46

« önceki - sonraki »

0 Üyeler ve 3 Ziyaretçi konuyu incelemekte.

Yılmazeser

Ben yeni bir ubuntu kullanıcısıyım. Keyfi hassasiyetler için hesaplama yapmaya yarayan tar.gz uzantılı Mpfun90 paketini gfortran derleyicimde çalıştırmak istiyorum. Ancak Mpfun90 paketini yükleyemedim. Linux kullanmaya yeni başlayan birinin anlayabileceği şekilde bu paketin nasıl kurulduğunu anlatabilirseniz sevinirim. Mpfun90 paketi için site: http://crd-legacy.lbl.gov/~dhbailey/mpdist/

if

https://forum.ubuntu-tr.net/index.php?topic=179.0

wgt http://crd.lbl.gov/~dhbailey/mpdist/mpfun90.tar.gz
tar -xf mpfun90.tar.gz
cd mpfun90/f90
make

heartsmagic

make
adımından önce de şu gerekiyor derleme için:
sudo apt-get install gfortran
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

Yılmazeser

öncelikle ilginizden dolayı çok teşekkür ederim. ben söylemiş olduğunuz kodları aynen girdim.

kuantum@Kuantum:~/Masaüstü$ tar -xf mpfun90.tar.gz
kuantum@Kuantum:~/Masaüstü$ cd mpfun90/f90
kuantum@Kuantum:~/Masaüstü/mpfun90/f90$ sudo apt-get install gfortran
[sudo] password for kuantum:
Paket listeleri okunuyor... Bitti
Bağımlılık ağacı oluşturuluyor       
Durum bilgisi okunuyor... Bitti     
gfortran zaten en yeni sürümde.
0 paket yükseltilecek, 0 yeni paket kurulacak, 0 paket kaldırılacak ve 119 paket yükseltilmeyecek.
kuantum@Kuantum:~/Masaüstü/mpfun90/f90$ make


"make" komudundan sonra yüklendiğini gösteren uzunca yazılar çıktı( onları burada yazmadım.).  Daha sonra program kurulumu gerçekleştimi diye "m.f90" adlı bir fortran dosyası çalıştırmak istediğimde

/tmp/ccoTh48j.o: In function `MAIN__':
M.f90:(.text+0x14): undefined reference to `__mpdefmod_MOD_mpinit'
M.f90:(.text+0x2a): undefined reference to `__mprealmod_MOD_mp_eqqd'
M.f90:(.text+0x42): undefined reference to `__mpgenmod_MOD_mp_cos'
M.f90:(.text+0x7e): undefined reference to `__mprealmod_MOD_mp_expqi'
M.f90:(.text+0xb2): undefined reference to `__mpgenmod_MOD_mp_sin'
M.f90:(.text+0xee): undefined reference to `__mprealmod_MOD_mp_expqi'
M.f90:(.text+0x12c): undefined reference to `__mprealmod_MOD_mp_addqq'
M.f90:(.text+0x168): undefined reference to `__mprealmod_MOD_mp_subqd'
M.f90:(.text+0x19c): undefined reference to `__mprealmod_MOD_mp_eqqq'
M.f90:(.text+0x1f2): undefined reference to `__mpgenmod_MOD_mp_outq'
collect2: error: ld returned 1 exit status


şeklinde bir hata verdi. bu hatanın kaynağı ne olabir? "M.f90" dosyasındaki algoritma klasörün içindeki README dosyasının içindeki örnek algortmadır. aşağıda yazıyorum.

program main
    use mpmodule
    implicit none
    type (mp_real) a, b
    call mpinit (500)
    a = 1.d0
    b = cos(a)**2 + sin(a)**2 - 1.d0
    call mpwrite(6, b)
    stop
  end program

if


heartsmagic

make aşaması sorunsuz bitti mi, ikilik dosyalar oluştu mu o dizinde?
Bir de, örnek algoritmayı tam olarak nasıl denediğini yazabilir misin buraya.
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

Yılmazeser

"make" komutunun sorunsuz çalıştığını düşünüyorum. çünkü klasörün içinde yeni birçok dosya oluştu. ve aşağıdaki yazılar çıktı.

kuantum@Kuantum:~$ cd Masaüstü
kuantum@Kuantum:~/Masaüstü$ tar -xf mpfun90.tar.gz
kuantum@Kuantum:~/Masaüstü$ cd mpfun90/f90
kuantum@Kuantum:~/Masaüstü/mpfun90/f90$ sudo apt-get install gfortran
[sudo] password for kuantum:
Paket listeleri okunuyor... Bitti
Bağımlılık ağacı oluşturuluyor       
Durum bilgisi okunuyor... Bitti     
gfortran zaten en yeni sürümde.
0 paket yükseltilecek, 0 yeni paket kurulacak, 0 paket kaldırılacak ve 119 paket yükseltilmeyecek.
kuantum@Kuantum:~/Masaüstü/mpfun90/f90$ make
gfortran -O2 -ffree-form -c mpfun90.f
gfortran -O2 -ffree-form -c mpmod90.f
gfortran -O2 -ffree-form -c mpmodm90.f
gfortran -O2 -ffree-form -c mpmodx90.f
gfortran -O2 -ffree-form -c testmp90.f
gfortran -O2 -ffree-form -c second.f
gfortran -o testmp90 testmp90.o second.o mpfun90.o mpmod90.o mpmodm90.o mpmodx90.o
gfortran -O2 -ffree-form -c tmpmod90.f
gfortran -o tmpmod90 tmpmod90.o mpfun90.o mpmod90.o mpmodm90.o mpmodx90.o
gfortran -O2 -ffree-form -c tpslq1.f
gfortran -o pslq1 tpslq1.o second.o mpfun90.o mpmod90.o mpmodm90.o mpmodx90.o
gfortran -O2 -ffree-form -c tpslq2.f
gfortran -o pslq2 tpslq2.o second.o mpfun90.o mpmod90.o mpmodm90.o mpmodx90.o
gfortran -O2 -ffree-form -c tpslq3.f
tpslq3.f:814.16:

    call decmd (t3, d1, n1)
                1
Warning: Type mismatch in argument 'a' at (1); passed TYPE(mp_realm) to TYPE(mp_real)
tpslq3.f: In function 'pslq3x':
tpslq3.f:262:0: warning: iteration 6 invokes undefined behavior [-Waggressive-loop-optimizations]
     times(i) = 0.d0
^
tpslq3.f:261:0: note: containing loop
   do i = 1, 16
^
gfortran -o pslq3 tpslq3.o second.o mpfun90.o mpmod90.o mpmodm90.o mpmodx90.o
gfortran -O2 -ffree-form -c tpslqm1.f
gfortran -o pslqm1 tpslqm1.o second.o mpfun90.o mpmod90.o mpmodm90.o mpmodx90.o
gfortran -O2 -ffree-form -c tpslqm2.f
gfortran -o pslqm2 tpslqm2.o second.o mpfun90.o mpmod90.o mpmodm90.o mpmodx90.o
gfortran -O2 -ffree-form -c tpslqm3.f
tpslqm3.f:806.16:

    call decmd (t3, d1, n1)
                1
Warning: Type mismatch in argument 'a' at (1); passed TYPE(mp_realm) to TYPE(mp_real)
gfortran -o pslqm3 tpslqm3.o second.o mpfun90.o mpmod90.o mpmodm90.o mpmodx90.o
gfortran -O2 -ffree-form -c tquaderf.f
gfortran -o quaderf tquaderf.o second.o mpfun90.o mpmod90.o mpmodm90.o mpmodx90.o
gfortran -O2 -ffree-form -c tquadgs.f
gfortran -o quadgs tquadgs.o second.o mpfun90.o mpmod90.o mpmodm90.o mpmodx90.o
gfortran -O2 -ffree-form -c tquadts.f
gfortran -o quadts tquadts.o second.o mpfun90.o mpmod90.o mpmodm90.o mpmodx90.o
gfortran -O2 -ffree-form -c roots.f
gfortran -o roots roots.o second.o mpfun90.o mpmod90.o mpmodm90.o mpmodx90.o



öte yanda " make" komutunun hemen ardından

sudo make install


komudunu kullandığımda

kuantum@Kuantum:~/Masaüstü/mpfun90/f90$ sudo make install
make: *** Hedef `install' i derlemek için  hiçbir kural yok. Durdu.


şeklinde bir yazı belirdi. örnek konusuna gelince: "M.f90" adlı .f90 uzuntılı bir fortran dosyasının içince yukarıdaki algortimayı yapıştırdım ve Masaüstü/mpfun90/f90 klasörünün içine atarak

kuantum@Kuantum:~/Masaüstü/mpfun90/f90$ gfortran M.f90


şeklinde derledim. derleme şeklimde bir hata olduğunu düşünmuyorum.benim düşüncem ya paket tam olarak yüklenmedi ya da algortmada bir problem var.

heartsmagic

Örnek kod aynı hatayı bende de verdi, neymiş diye internete bakıp hiç sonuç göremeyince işkillendim açıkçası. Şuradan örnekler denedim daha sonra:
http://en.wikibooks.org/wiki/Fortran/Fortran_examples#Fortran_90.2F95_examples

Güzel güzel derleniyor örnek kodlar. Kısacası derleyici iş görüyor.

make install orada iş görmez zira kurulum için bir şey yok paketin içinde. Artık make aşamasından sonra ortaya çıkan ikilik dosyalar her ne işe yarıyorsa o amaçla senin kullanman gerekecek :)

Not: Şimdi anladım ama, kod mpfun kütüphanesi ya da her neyi ise onu içeriyor sanırım. Biraz bakınmak gerekebilir.
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

heartsmagic

https://www.sharcnet.ca/help/index.php/MPFUN#Testing_the_MPFUN90_functions

Burada derleme aşamasında kütüphane için yol gösteriliyor ancak bizim indirdiğimiz paketin içinde haliyle lib, include falan yok. Bu kütüphanenin nasıl kullanılacağını biliyor musun tam olarak?
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

Yılmazeser

gfortran en fazla quartprecision denilen virgülden sonra 32 basamak hesaplayabiliyor (0.6364663478838339933032727.. gibi) bu paket yüklendiğinde virgülden sonra istediğimiz hassasyette hesap yapabilmemiz gerekiyor. Anladığım kadarıyla paket iki kısımdan oluşuyor birinci kısım bizim yüksemeye çaılştığımız multipresion yapabilmeye yarıyan kısım. ikinci kısım ise verilen bir normal programı multiprecisiona çevirmeye yarıyan bir rehber kısmı. bu paketin bir benzerini smith ( http://myweb.lmu.edu/dmsmith/fmlib.html) adlı biri yapmış ben windosda paketi yükledim ve bir örnek bir programı sorunsuz çalıştırdım. windowda ağaşıdaki şekilde yükleniyor.(yüklemeye çalıştığımız paket değil, sadece aynı işe yarayan benzer bir paket windows için)


gfortran fmsave.f95  -c -O3

    gfortran FM.f95  -c -O3

    gfortran FMZM90.f95  -c -O3


    gfortran TestFM.f95  -c -O3

    gfortran  fmsave.o  FM.o  FMZM90.o  TestFM.o  -o TestFM.exe

    TestFM

ve örnek program aşağıdaki şekilde çalıştırılıyor


gfortran SampleFM.f95  -c -O3

    gfortran  fmsave.o  FM.o  FMZM90.o  SampleFM.o -o SampleFM.exe

    SampleFM


belki bir fikir verebilir

heartsmagic

Bana çok uzak konular olduğu için hiç yorum yapamıyorum ne yazık ki. Etrafta hiç belgelendirme de yok. Ortaya çıkan ikilik dosyaları hiç kurcaladın mı? Bana fikir vermiyor ama belki sana verebilir.
./testmp90
dediğimizde örneğin bir dizi test yapıp tamamladığını söylüyor sanırım.
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

if


Yılmazeser

ben de fransızca olan siteyi bulmuştum ama hem fransızca hemde linux bilmediğimden bir şey anlamadım. bu paketin hem c hemde fortranda çalışanı var   http://crd-legacy.lbl.gov/~dhbailey/mpdist/   sitede   ARPREC adıyla. bu paketin içinde nasıl install yapılacağı yazıyor ancak buna rağmen ben yinede install yapamadım


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 25 Ekim 2014 - 02:05:58

sen son çare programı yaza adama meal atarım kodları yolla diye


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 25 Ekim 2014 - 02:06:50

en son çare programı yazan adama meal atarım kodları yolla diye

if

libmpfun90.a gibi bir dosya oluştu mu f90 dizini altında.

heartsmagic

Bizdeki make aşaması *.o dosyalarını oluşturuyor zaten. Fransızca anlatımdaki gibi adı geçen .o dosyalarını lib dizinine, .mod dosyalarını da include dizinine alıp derlemeye çalıştım ama yine yemedi.
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

if

Taşımadan ziyade ar komutunu kullanmış:) Toolkit ne işe yarıyor acaba @Yılmazer?

Arprec için:
wget http://crd.lbl.gov/~dhbailey/mpdist/arprec-2.2.17.tar.gz
tar -xf arprec-2.2.17.tar.gz
cd cd arprec-2.2.17/
./configure
make
sudo make install
Ayrıca make fortran-demo ile örnek Fortran-90 uygulaması oluşturabilinirmiş.

heartsmagic

O taşımamış ama elinde olmayan *.o dosyalarını ar ile oluşturmuş :) Bizde ise zate *.a dosyaları yok, derlemeden sonra oluşuyorlar. O nedenle öyle bir yönteme kalkıştım fakat yemedi. Ya yanlış anlıyorum ya da başka bir sorun mevcut yine.
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

if


Yılmazeser

Bu konuyu fransızca anlatım adresinde   (yani http://www.lavrovo.fr/Cygwin/install_mpfun90_gfortran.html) "Cygwin" adlı bir konu altında incelemiş. "Cygwin" bildiğim kadarıya gfortran derleyicisin windows için sürümü ....

öte yandan, sanırım "f90" klasörü gfortrana multiprescion özelliği kazandırıyor. bu özelliği gfortran kazandıktan sonra Örnek programı çalıştırıyor olmamız gerekiyor. "toolkit" klasörünün ise verilen bir doulprecision fortran programının multiprecisiona otomotik olarak çeviren bir rehber program sanırım...

bu paketin fortran77 için çalışan bir versiyonunu ( eski bir versyon:mpfun77) http://math.digi2.jp/math/mp/mpfun/mpfun77_inst.html adresinde yüklenişini gösteriyor. ben buradaki adımları gfortran için uyguladım mpfun77 paketi yüklendi sanırım ancak buradan yolla çıkarak mpfun90 paketini yinede yükleyemedim. sanırım bu konunun çözümü linuxden çok birazda fortran ile ilgili. Ben ilginizden dolayı çok ama çok teşekkür ederim.

heartsmagic

Linux konusunda ne nerede kullanılacak bilirsek elimizden geldiğince yardımcı oluruz yine. Fakat söylediğin gibi konu biraz da kütüphanenin nasıl ve nerede kullanılacağını kestiremememizle alakalı gibi. 
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.