CUDA üzerinde biraz çalışıyorum, gördüğüm örneklerin ve öğreticilerin çoğu GPU'da matematiksel işlevler uygulamakla ilgileniyor (Bazı vektör / matris hesaplamaları gibi).
Dizgiler üzerinde çalışmak için GPU'yu doğrudan kullanıp kullanamayacağımızı, matematiksel fonksiyonların olmadığını merak ediyordum. belki bir sürü ipi bir araya getirmek gibi bir şey.
1
Evet, ancak çok sayıda dizgiye "bayt akışları" (rastgele bayt dizileri) gibi davranıyorsanız ve dizgelere aynı işlem türünü uyguladıysanız ve dizgenin verilerini çok az okuyup, çoğunlukla yazarken . Örneğin, her karakterin değerini 1 artırarak 100000 uzunluğundaki dizelerin 16'dan 64'üne kadar olan dizinleri güncellemek istiyorsanız, bu GPU'da etkili olabilir. Her CUDA çekirdeği birkaç yüz ip alabilir ve bunu büyük paralel olarak yapabilir. Her dizenin güncellenmiş değerinin diğer dizgilere bağlı olması kötü olurdu.
—
allquixotic
Başka bir not; Her CUDA çekirdeği, kontrol ettiği verileri okuma ve yazma konusunda oldukça etkilidir, yani belirli bir CUDA çekirdeğinin "atanmış" bir dizgeden okuması gerekiyorsa, hızlı okuma / yazma için iyi olabilir, ama " Önbellek ve RAM mimarisi nedeniyle büyük bir veri kümesinde dolaşmak zorunda olduğunuz CPU üzerinde etkili olan "rasgele erişim" GPU'da verimsiz olacaktır (CPU'da daha hızlı). İş yüküne bağlıdır. Ancak, sonuçta, dizeleri bir dizi olarak ele almanız ve ardından işlemlerin GPU'da etkili olup olmadığına karar vermeniz gerekir.
—
allquixotic
rastgele okuma yazma çalışmıyorum - hayal - 100 satır, her biri 100 karakter ve ilk satırı kalan 99 ile eşleştirmek istiyorum (örneğin satır 2 ile satır 1, satır 1 ile satır 1, satır 1 ile satır 1 ... öyleyse) ve eşleştirmede 10 karakterden az uyuşmazlık varsa, geri dönüş 1 diyelim; 10 karakterden fazla uyuşmazsa 0 döndür.
—
SidSen