Arama butonu
Bu konudaki kullanıcılar: 1 misafir
11
Cevap
279
Tıklama
1
Öne Çıkarma
CUDA ile çalışan quicksort algoritması geliştirdim.
T
10 ay
Yarbay
Konu Sahibi

std::sort 'un 5 katı, std::qsort 'un 10 katı hızda. Sıralama yapılırken işlemci asenkron olarak başka iş yapabiliyor yani bekleme yapmıyor.

tugrul512bit/TurtleSort: Quicksort with 3 pivots, CUDA acceleration and adaptive sorting algorithm for different chunk sizes. (github.com)

Şu anda tamamen optimize değil. Bi 5 kat daha hızlandırılabilir belki.

Mantık şöyle:

Diziyi 4 parçaya bölüyor. Ama bölümler birbirini ayıran noktalara göre sıralı. Sonra onları da kendi içlerinde bölmeye devam ediyor. En sonunda dizi sıralanmış oluyor.

Sıralanmış dizi verilince 2 kat yavaşlıyor yani hala std::sort'un üstünde.

Bölümlerden biri 1024 eleman veya daha az ise, daha hızlı çalışan bir sıralama algoritması kullanıyor. 1024 thead ile paralel çalışan bubble sort (odd-even olan) kullanıyor. Eleman sayısı 2-3 ise doğrudan sıralamayı 2 satırda yapıp veriyor.

Çok sayıda tekrar eden sayı varsa yaklaşık 3 kat daha hızlanıyor. Mesela 64 milyon elemanı 0.15 saniyede sıralıyor. Rastgeleyken 0.5 saniye. Sıralıyken 1 saniye. Sistemde rtx 4070 ve ryzen 7900 varken bu hızda. 4090 olsa 2-3 kat daha hızlanır.

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil





< Bu mesaj bu kişi tarafından değiştirildi Tugrul_512bit -- 26 Eylül 2024; 10:21:9 >

< Bu ileti mobil sürüm kullanılarak atıldı >

DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.