Jump to page: 1 2
Thread overview
Koşut İşlemler Örneği Çalışmıyor
Jul 11, 2012
Kadir Can
Jul 11, 2012
erdem
Jul 11, 2012
Kadir Can
Jul 11, 2012
erdem
Jul 11, 2012
Kadir Can
Jul 11, 2012
erdem
Jul 11, 2012
Kadir Can
Jul 11, 2012
erdem
Jul 11, 2012
erdem
Jul 11, 2012
Kadir Can
July 11, 2012

Merhaba arkadaşlar;
Dün koşut işlemler dersini okudum ve bugün de biraz örnek yapmaya çalıştım ama hiçbiri derlenemedi. Bunun üzerine acaba ben mi hata yapıyorum diyerek örnek programları derlemeye çalıştım. Yine hiçbiri derlenemedi. Derleyici ile ilgili bir sorun olabilir mi? Aşağıda kodlar ve derleme hatası var.

import std.stdio;
import std.parallelism;
import std.algorithm;
import core.thread;

struct Öğrenci
{
   int numara;
   int[] notlar;

   double ortalamaNot() @property
   {
       writeln(numara,
               " numaralı öğrencinin işlemi başladı");
       Thread.sleep(dur!"seconds"(1));

       immutable ortalama =
           reduce!((a, b) => a + b)(0.0, notlar) / notlar.length;

       writeln(numara, " numaralı öğrencinin işlemi bitti");
       return ortalama;
   }
}

void main()
{
   Öğrenci[] öğrenciler;

   foreach (i; 0 .. 10) {
       /* Her öğrenciye 80'li ve 90'lı iki not */
       öğrenciler ~= Öğrenci(i, [80 + i, 90 + i]);
   }

   auto sonuçlar = taskPool.map!(ö => ö.ortalamaNot)(öğrenciler);

   foreach (sonuç; sonuçlar) {
       writeln(sonuç);
   }
}

Hata:

parallel.d(34): Error: template instance map!(__lambda5) cannot use local '__lambda5(__T4)'
as parameter to non-global template map(functions...)
/usr/local/include/d/phobos2/std/parallelism.d(1974): Error: template instance amap!(__lambda5)
cannot use local '__lambda5(__T4)' as parameter to non-global template amap(functions...)
parallel.d(34): Error: template instance std.parallelism.TaskPool.map!(__lambda5).map!(Öğrenci[])
error instantiating

taskPool.map giriş aralıklarında çalıştığı için her ne kadar dilim kullansak da aralık gerçeklemelerini sundum, yine de hata verdi. Acaba sorun nerede?

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

July 11, 2012

Ben de dmd 2.059 ile deniyorum.
Türkçe karakterleri çıkararak da denemiştim, yine de hata vermişti. Türkçe karakterleri çıkararak bir daha denedim, hala hata veriyor.

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

July 11, 2012

64 bit Windows 7'de ve 32 bit PCBSD'de denedim. İkisinde de aynı hatayı veriyor.
Dediğin gibi belki yeniden dmd kurulumu ile düzelebilir. Hemen deniyorum.

Sen koşut olmayan programı denemişsin. Onun bir iki satır altında aynı programın koşut olarak gerçeklenmiş hali var. Bir de onu deneyebilir misin?

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

July 11, 2012

dmd 2.059 ve Türkçe karakter kullanmadan denedim sorunsuz çalışıyor.

Alıntı:

>

0 numarali ogrencinin islemi basladi
0 numarali ogrencinin islemi bitti
85
1 numarali ogrencinin islemi basladi
1 numarali ogrencinin islemi bitti
86
2 numarali ogrencinin islemi basladi
2 numarali ogrencinin islemi bitti
87
3 numarali ogrencinin islemi basladi
3 numarali ogrencinin islemi bitti
88
4 numarali ogrencinin islemi basladi
4 numarali ogrencinin islemi bitti
89
5 numarali ogrencinin islemi basladi
5 numarali ogrencinin islemi bitti
90
6 numarali ogrencinin islemi basladi
6 numarali ogrencinin islemi bitti
91
7 numarali ogrencinin islemi basladi
7 numarali ogrencinin islemi bitti
92
8 numarali ogrencinin islemi basladi
8 numarali ogrencinin islemi bitti
93
9 numarali ogrencinin islemi basladi
9 numarali ogrencinin islemi bitti
94

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

July 11, 2012

Rica ederim.
Kapama kavramıyla ilgili aklıma bir şey takıldı. Sözlüğümüzden kontrol ettim, işlemleri ve işledikleri kapsamı bir arada saklayan program yapısı olarak tanımlanmış. Yani yanlış anlamadıysam temsilciler kapamalara örnek oluyor; peki {} olarak tanımladığımız kapsamlar kapamaya örnek oluyor mu?
Ayrıca burada hataya sebep olan şey doğru anladıysam lambda fonksiyon, değil mi?

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

July 11, 2012

Ben 32 bit XP'de denedim. Acaba derleyicinde bir problem olabilir mi. Diğer örnekleri derliyor mu.

Eğer 32 bit Ubuntu kullanıyorsan:

'$ sudo dpkg --purge dmd'

ile tüm 'dmd' paketlerini kaldırmayı dene.

'$ sudo find / | grep dmd'

Hatta yukarıdaki gibi kaldırdıktan sonra dmd'ye ait olabileceğini düşündüğün dizin ve dosyalar varsa bunları elle silmeni tavsiye ederim. Sonra bu işlemlerden sonra hala duruyorsa '/etc/dmd.conf' dosyasını silip tekrar dmd'yi kurmayı dene. Bu mesajda (http://ddili.org/forum/thread/508) benzer bir konu konuşulmuştu.

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

July 11, 2012

Alıntı (Kadir Can):

>
>     auto sonuçlar = taskPool.map!(ö => ö.ortalamaNot)(öğrenciler);
> ```

>
Hiç derleyiciyi kuracağım diye zahmet etme burada 'map' yerine 'taskPool.map' yazmışsın  ;-)

-- 
[ Bu gönderi, <http://ddili.org/forum>'dan dönüştürülmüştür. ]
July 11, 2012

Teşekkürler, şimdi daha iyi anladım. :)

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

July 11, 2012

Evet haklısın. İyi yakalamışsın sanırım bir hata var.

Ben bu konuyu henüz okumadım ayrıntılarını bilmiyorum ama Ali bey de D haber grubunda bir mesaj (http://www.digitalmars.com/d/archives/digitalmars/D/learn/Bug_taskPool.map_with_bufSize_and_writeln_gets_stuck_32406.html) göndermiş. Ama oradaki hata sanırım standart çıkışın kullanılmasıyla ilgili.

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

July 11, 2012

Alıntı (acehreli):

>
>
>     auto sonuçlar = taskPool.map!(ö => ö.ortalamaNot)(öğrenciler, 3); // derleniyor
> ```

>

Maalesef ben de siz bu mesajı yazmadan önce denemiştim derlenmiyor.

-- 
[ Bu gönderi, <http://ddili.org/forum>'dan dönüştürülmüştür. ]
« First   ‹ Prev
1 2