GPU Kodunda Hata Ayıklama

Grafik işleme biriminde (GPU) çalışan C++ kodunda hata ayıklayabilirsiniz. Visual Studio'da GPU hata ayıklama desteği, yarış algılamayı, işlemleri başlatmayı ve bunlara eklemeyi ve hata ayıklama pencereleriyle tümleştirmeyi içerir.

Desteklenen Platformlar

Hata ayıklama Windows 7, Windows 8, Windows 10, Windows 11, Windows Server 2008 R2, Windows Server 2012 ve Windows Server 2016'da desteklenir. Yazılım öykünücüsü, Windows 8, Windows 10, Windows 11 veya Windows Server 2012'de hata ayıklama için Windows Server 2016 gereklidir. Donanımda hata ayıklama için grafik kartınızın sürücülerini yüklemeniz gerekir. Tüm donanım satıcıları tüm hata ayıklayıcı özelliklerini uygulamaz. Sınırlamalar için satıcı belgelerine bakın.

Not

Visual Studio'da GPU hata ayıklamasını desteklemek isteyen bağımsız donanım satıcılarının VSD3DDebug arabirimini uygulayan ve kendi sürücülerini hedefleyen bir DLL oluşturması gerekir.

GPU Hata Ayıklamayı Yapılandırma

Hata ayıklayıcı aynı uygulama yürütmesinde hem CPU kodunda hem de GPU kodunda kesilemez. Varsayılan olarak, hata ayıklayıcısı CPU kodunda kesintiye neden olur. GPU kodunda hata ayıklamak için şu iki adımdan birini kullanın:

  • Standart araç çubuğundaki Hata Ayıklama Türü listesinde Yalnızca GPU'yı seçin.

  • Çözüm Gezgini'da, projenin kısayol menüsünde Özellikler'i seçin. Özellik Sayfaları iletişim kutusunda Hata Ayıklama'yı ve ardından Hata Ayıklayıcı Türü listesinde Yalnızca GPU'yı seçin.

Uygulamaları Başlatma ve Uygulamalara Ekleme

GPU hata ayıklamasını başlatmak ve durdurmak için Visual Studio hata ayıklama komutlarını kullanabilirsiniz. Daha fazla bilgi için bkz . Hata Ayıklayıcı ile Kodda Gezinme. Gpu hata ayıklayıcısını çalışan bir işleme de ekleyebilirsiniz, ancak yalnızca bu işlem GPU kodunu yürütürse. Daha fazla bilgi için bkz . Çalışan İşlemlere Ekleme.

Geçerli Kutucuğu İmleç'e ve Çalıştır'ı İmleç'e Çalıştırma

GPU'da hata ayıklarken, imleç konumuna çalıştırmak için iki seçeneğiniz vardır. Her iki seçenek için komutlar, kod düzenleyicisinin kısayol menüsünde bulunur.

  1. İmleçte Çalıştır komutu, uygulamanızı imleç konumuna ulaşana ve ardından bozulana kadar çalıştırır. Bu, geçerli iş parçacığının imleç üzerinde çalıştığı anlamına gelmez; bunun yerine, imleç noktasına ulaşan ilk iş parçacığının kesmeyi tetiklediğini gösterir. Bkz . Hata Ayıklayıcı ile Kodda Gezinme

  2. Geçerli Kutucuğu İmleçle Çalıştır komutu, geçerli kutucuktaki tüm iş parçacıkları imleçlere ulaşana ve sonra kopana kadar uygulamanızı çalıştırır.

Windows'ta Hata Ayıklama

Belirli hata ayıklama pencerelerini kullanarak GPU iş parçacıklarını inceleyebilir, işaretleyebilir ve dondurabilirsiniz. Daha fazla bilgi için bkz.

Veri Eşitleme Özel Durumları

Hata ayıklayıcı, yürütme sırasında çeşitli veri eşitleme koşullarını tanımlayabilir. Bir koşul algılandığında hata ayıklayıcı kesme durumuna girer. İki seçeneğiniz vardır: Kesme veya Devam. Özel Durumlar iletişim kutusunu kullanarak, hata ayıklayıcının bu koşulları algılayıp algılamayacağını ve hangi koşulları bozacağını yapılandırabilirsiniz. Daha fazla bilgi için bkz . Hata Ayıklayıcı ile Özel Durumları Yönetme. Ayrıca, yazılan veriler verilerin değerini değiştirmezse hata ayıklayıcının özel durumları yoksayması gerektiğini belirtmek için Seçenekler iletişim kutusunu da kullanabilirsiniz. Daha fazla bilgi için bkz . Genel, Hata Ayıklama, Seçenekler İletişim Kutusu.

Sorun giderme

Hızlandırıcı belirtme

GPU kodundaki kesme noktalarına yalnızca kod hızlandırıcı::d irect3d_ref (REF) hızlandırıcısında çalışıyorsa isabet edilir. Kodunuzda bir hızlandırıcı belirtmezseniz, proje özelliklerinde Hata Ayıklama Hızlandırıcısı Türü olarak REF hızlandırıcısı otomatik olarak seçilir. Kodunuz açıkça bir hızlandırıcı seçerse, hata ayıklama sırasında REF hızlandırıcısı kullanılmaz ve GPU donanımınızda hata ayıklama desteği olmadığı sürece kesme noktalarına isabet edilmeyecektir. Hata ayıklama sırasında REF hızlandırıcısını kullanması için kodunuzu yazarak bunu düzeltebilirsiniz. Daha fazla bilgi için bkz. proje özellikleri ve C++ Hata Ayıklama Yapılandırması için Hızlandırıcı ve accelerator_view Nesneleri ve Project Ayarlar kullanma.

Koşullu Kesme Noktaları

GPU kodundaki koşullu kesme noktaları desteklenir, ancak cihazda her ifade değerlendirilemez. Bir ifade cihazda değerlendirilemiyorsa, hata ayıklayıcıda değerlendirilir. Hata ayıklayıcı büyük olasılıkla cihazdan daha yavaş çalışacaktır.

Hata: Seçili Hata Ayıklama Hızlandırıcısı Türü ile ilgili bir yapılandırma sorunu var.

Bu hata, proje ayarlarıyla hata ayıkladığınız bilgisayarın yapılandırması arasında tutarsızlık olduğunda oluşur. Daha fazla bilgi için bkz. C++ Hata Ayıklama Yapılandırması için Project Ayarlar.

Hata: Seçilen Hata Ayıklama Hızlandırıcısı Türü için hata ayıklama sürücüsü hedef makinede yüklü değil.

Bu hata, uzak bir bilgisayarda hata ayıklarken oluşur. Hata ayıklayıcısı, sürücülerin uzak bilgisayara yüklenip yüklenmediğini çalışma zamanına kadar belirleyemez. Sürücüler grafik kartı üreticisi tarafından kullanılabilir.

Hata: Zaman Aşımı Algılama ve Kurtarma (TDR) uzak sitede devre dışı bırakılmalıdır.

C++ AMP hesaplamalarının Windows zaman aşımı algılama ve kurtarma işlemi (TDR) tarafından ayarlanan varsayılan zaman aralığını aşması mümkündür. Bu durumda hesaplama iptal edilir ve veriler kaybolur. Daha fazla bilgi için bkz . C++ AMP'de TDR'leri işleme.