Uruchamianie jądra po stronie hosta przy użyciu interfejsu API środowiska wykonawczego wynosi tylko około 15-30 mikrosekund na platformach innych niż WDDM dla systemu Windows. Na platformach WDDM (których nie używam) rozumiem, że może być znacznie, dużo więcej, a ponadto w sterowniku jest jakiś mechanizm dozujący, który próbuje amortyzować koszty, wykonując wiele operacji w jednej operacji po stronie kierowcy.
Zasadniczo nastąpi wzrost wydajności "łączenia" operacji związanych z wieloma danymi, które w innym przypadku byłyby wykonywane w oddzielnych jądrach w jednym jądrze, na które pozwalają algorytmy. GPU ma znacznie wyższą arytmetyczną wydajność szczytową niż przepustowość pamięci szczytowej, więc im więcej FLOPów, które mogą być wykonywane na transakcję pamięci (i na "kodzie konfiguracji" jądra), tym lepsza będzie wydajność jądra. Z drugiej strony, próba napisania jądra "szwajcarskiego scyzoryka", który stara się całkowicie rozproszyć różne operacje w jednym kawałku kodu, nigdy nie jest szczególnie dobrym pomysłem, ponieważ zwiększa nacisk rejestru i zmniejsza wydajność takich rzeczy jak L1, stałe pamięci i pamięci podręczne tekstur.
Którą drogą wybierzesz, należy kierować się naturą kodu/algorytmów. Nie wierzę, że istnieje jedna "poprawna" odpowiedź na to pytanie, którą można zastosować we wszystkich okolicznościach.
Podejście szwajcarskiego noża wojskowego jest czymś, czego staram się uniknąć, aby utrzymać dzielenie się tymi kernelami pomiędzy projektami. Dzięki za odpowiedź, chciałem tylko upewnić się, że nie było jakiegoś szalonego problemu z wydajnością, którego nie byłem świadomy podczas wykonywania wielu połączeń cuda. – NothingMore
Uwaga: w WDDM, jeśli używasz procesora graficznego Tesla, możesz użyć sterownika Tesla Compute Cluster (TCC), aby dostosować wydajność do platform innych niż WDDM, takich jak XP lub Linux. Na oryginalne pytanie chciałbym podkreślić: jeśli połączenie jądra pomaga zmniejszyć wymagane transfery PCI-express, może być tego warte. Jeśli nie, to przynajmniej upewnij się, że nakładasz się na Kernel1 z transferami do GPU danych dla Kernel2, itp. – harrism
Czy mówisz o platformach Windows innych niż WDDM? winXP? Jestem bardzo zainteresowany, ponieważ kara WDDM jest OGROMNA, a ja nie mogę podrosnąć do Linuksa. Z powodzeniem używam Win7 x64 i potrzebuję platformy x64 (problemy z RAM) – Dredok