Yeni bir Thrust vektörü oluştururken görünen tüm öğeler varsayılan olarak 0'dır - Sadece bunun her zaman olacağından emin olmak istiyorum.Çekişteki öğelerin varsayılan yapılandırması nasıl önlenir :: device_vector?
Eğer öyleyse, ayrıca bypass yapıcı bir yol yoktur onların ham işaretçileri ediliyor, bazı vektörler için ben bir başlangıç değeri, örneğin olması onlara ihtiyacım yok çünkü (ek hız için bu davranışlarından sorumlu CUBLAS'a çıktı olarak geçti)?
8
A
cevap
7
thrust::device_vector
sadece std::vector
gibi, onun sağlanan ayırıcısı kullanarak içeren unsurlar oluşturur. Vektörün bir eleman inşa etmesini istediğinde, ayırıcının ne yaptığını kontrol etmek mümkündür.
uninitialized_allocator::construct
çağırmak için bir çekirdek lansman maliyet yaratacağını
// uninitialized_allocator is an allocator which
// derives from device_allocator and which has a
// no-op construct member function
template<typename T>
struct uninitialized_allocator
: thrust::device_malloc_allocator<T>
{
// note that construct is annotated as
// a __host__ __device__ function
__host__ __device__
void construct(T *p)
{
// no-op
}
};
// to make a device_vector which does not initialize its elements,
// use uninitialized_allocator as the 2nd template parameter
typedef thrust::device_vector<float, uninitialized_allocator<float> > uninitialized_vector;
, ama bu çekirdek emekli olacak no-op olacak hızlı bir şekilde. Gerçekten ilgilendiğiniz şey, dizinin doldurulması için gerekli olan bellek bant genişliğinden kaçınmaktır.
Örnek bir kod here var.
Bu tekniğin Thrust 1.7 veya daha iyi bir sürüm gerektirdiğini unutmayın.
İlgili konular
- 1. QNetworkRequest ve varsayılan SSL yapılandırması
- 2. Nihai ad belirtilirken varsayılan jar nesnesinin oluşturulması nasıl önlenir?
- 3. Thrust :: device_vector öğesinden ham işaretçiye ve arkadan?
- 4. İthalat derleme nasıl önlenir?
- 5. CSS bildirimi nasıl önlenir?
- 6. Burada numberformatexception nasıl önlenir?
- 7. FileNotFoundException nasıl önlenir?
- 8. thrust :: device_vector <int> ham işaretçiyi nasıl çevirebilirim
- 9. yapılandırması
- 10. Takım Yapı Numarası Format varsayılan yapılandırması damla klasörünün
- 11. Öğelerin ikisi arasındaki öğelerin karşılaştırılması Öğeleri
- 12. Uygulama başlatılırken Siyah Ekran nasıl önlenir
- 13. Kayan nokta hataları nasıl önlenir?
- 14. Brunch saatinde önbellekleme nasıl önlenir
- 15. BaseX'te doğranmış sonuç nasıl önlenir?
- 16. Etkinlik aboneliğinin çoğaltılması nasıl önlenir?
- 17. Rust'ta aşırı klonlama nasıl önlenir?
- 18. PHPExcel'de makroları kaybetmemek nasıl önlenir?
- 19. Tam sayı taşması nasıl önlenir?
- 20. Haskell Belirsiz Geçişler - nasıl önlenir?
- 21. Yükleyicide sayfanın rekreasyonu nasıl önlenir?
- 22. Postgres'de fantom okumaları nasıl önlenir?
- 23. Eşzamanlı javascript yürütmeleri nasıl önlenir?
- 24. Bir prototipte değişiklikler nasıl önlenir?
- 25. Hadoop çalışırken OutOfMemoryException nasıl önlenir?
- 26. R'de bilimsel gösterim nasıl önlenir?
- 27. Sert kodlama dizgileri nasıl önlenir
- 28. Öğelerin sırasını ReactCSSTransitionGroup'da nasıl belirlenir?
- 29. jenkins çoklu yapılandırma yapılandırması ve yapılandırması nasıl yapılır
- 30. SMTP yapılandırması
Çok hoş. Daha önce stl için debug aşırı yükünü yazmasına rağmen, son yapı çağrısının burada olduğunu unuttum. Kazmaya devam etmeliydin. +1 :) – leander
Aslında - kafam karıştı. Ben yanlış, 'senin' zincirleri, 'insert' için 'yeniden boyutlandırmak' hangi yeniden 'uninitialized_fill_n' içinde biten' fill_insert ', zincirleri' yeniden '? Yani hala yeni 'storage_type 'alanını oluştururken' yapısını' görmezden gelmesine rağmen hala kopya alıyorsunuz? ... tabii ki bir hata ayıklayıcısında bu adımı atmam gerekiyor, ancak varsayılan/başlangıçtaki x 'varsayılan argümanın başlangıçtaki uninitialized_fill_n'nın nasıl önlenebileceğini görmüyorum. – leander
En son Thrust ile bir hata ayıklayıcısında ilerlemeniz gerekebilir. Bu karmaşık bir gönderi. –