Aracılığıyla paylaş


DirectML'de hataları işleme ve cihaz kaldırma

Cihaz kaldırma

Kurtarılamaz bir hata oluşursa, DirectML cihazı "cihaz kaldırıldı" durumuna girebilir. Geçersiz API kullanımı ( HRESULT döndürmeyen yöntemler için), sürücü hatası, donanım arızası veya bellek yetersizliği (OOM) durumları cihazın kaldırılmasına yol açan giderilemez hatalardır.

Bir DirectML cihazı kaldırıldığında, cihazdaki tüm yöntem çağrıları ve bu cihaz tarafından oluşturulan her nesne, işlevsiz hale gelir. HRESULT döndüren yöntemler için DXGI_ERROR_DEVICE_REMOVED hata kodu döndürülür. DirectML cihazının kaldırılıp kaldırılmadığını denetlemek ve daha ayrıntılı bir hata kodu almak için IDMLDevice::GetDeviceRemovedReason yöntemini kullanabilirsiniz.

Etkilenen cihazı ve tüm alt öğelerini serbest bırakıp, ardından DirectML cihazını sıfırdan yeniden oluşturmadan cihazın kaldırılmasından kurtulamazsınız.

Direct3D 12 cihazının kaldırılması, DirectML cihazının da kaldırılmasına neden olur. Ancak tersi doğru değildir. DirectML cihazının kaldırılması, temel alınan Direct3D 12 cihazının kaldırılmasına neden olmayabilir.

DirectML cihaz kaldırma hataları ve diğer hatalarda hata ayıklama

DirectML hatalarının en yaygın nedeni geçersiz API kullanımıdır. Geçersiz API kullanımı E_INVALIDARG HRESULT hata koduna veya cihazın kaldırılmasına neden olabilir.

Bu tür hataları yakalamak ve hatalarını ayıklamak için geliştirme sırasında DirectML hata ayıklama katmanını etkinleştirmenizi kesinlikle öneririz. DirectML hata ayıklama katmanı, yöntem parametreleri ve API kullanımı için kapsamlı doğrulama gerçekleştirir ve hata ayıklamanıza yardımcı olması için hata ayıklama çıkış iletileri yayar.

Ayrıca bakınız