-
GEBIET DER ERFINDUNG
-
Die vorliegende Erfindung betrifft Parameter-Analyse und insbesondere Bestimmen eines Satzes von Voreinstellungen basierend auf Parameter-Analyse.
-
HINTERGRUND
-
Viele der heute existierenden Produkte umfassen einen oder mehrere Parameter, welche eine Gesamt-Erfahrung, welche mit dem Produkt assoziiert ist, beeinflussen. Zum Beispiel können Computer-Spiele und andere Software viele Parameter haben, welche eine Qualität eines Renderns, Audio, Spiel, etc. bestimmen. Vorhandene Techniken zum Anordnen der Parameter, welche mit diesen Produkten assoziiert sind, sind jedoch mit verschiedenen Begrenzungen assoziiert worden.
-
Zum Beispiel können momentan Kunden dafür verantwortlich sein, eine Mehrzahl von Parameter, welche mit einem Produkt assoziiert sind, manuell einzustellen, um geeignete Einstellungen für dieses Produkt zu bestimmen. Dies kann zu schlechteren als optimalen Einstellungen für das Produkt, zu einem zeitaufwendigen Versuch und Irrtum von dem Kunden, etc. führen. Somit gibt es einen Bedarf zum Adressieren dieser und/oder anderer Probleme, welche mit dem Stand der Technik assoziiert sind. US 2003 / 0 023 841 A1 beschreibt ein System welches eine Konfiguration eines Datenverarbeitungssystems nach Testkriterien optimiert.
US 6 059 842 A beschreibt ein Verfahren zur Bestimmung einer optimierten Betriebsweise für ein Computersystem mit Berücksichtigung einer Nutzerpräferenz.
-
Ein System, Verfahren und Computer-Programm-Produkt zum Berechnen von Einstellungen für ein Gerät, unter Benutzung von einer oder mehreren Einschränkungen werden gemäß der unabhängigen Ansprüche bereitgestellt. In Benutzung wird eine Mehrzahl von Parametern, welche mit einem Gerät assoziiert sind, identifiziert. Zusätzlich werden eine oder mehrere Einschränkungen (constraints) bestimmt, unter Benutzung der Mehrzahl von Parametern. Ferner werden eine oder mehrere Einstellungen für das Gerät unter Benutzung der einen oder der mehreren Einschränkungen und der Mehrzahl von Parametern berechnet.
-
Figurenliste
-
- 1 zeigt ein Verfahren zum Bestimmen von Einstellungen für ein Gerät in Übereinstimmung mit einer Ausführungsform.
- 2 zeigt ein Verfahren zum Bestimmen von zuvor bestimmten optimalen spielbaren (playable) Einstellungen für einen Personal-Computer in Übereinstimmung mit einer anderen Ausführungsform.
- 3 zeigt einen exemplarischen Parameter-DAG in Übereinstimmung mit einer anderen Ausführungsform.
- 4 illustriert ein exemplarisches System, in welchem die verschiedene Architektur und/oder Funktionalität der verschiedenen vorherigen Ausführungsformen implementiert werden können.
-
DETAILLIERTE BESCHREIBUNG
-
1 zeigt ein Verfahren 100 zum Bestimmen von Einstellungen für ein Gerät in Übereinstimmung mit einer Ausführungsform. Wie in Operation 102 gezeigt ist, wird eine Mehrzahl von Parametern, welche mit einem Gerät assoziiert ist, identifiziert. In einer Ausführungsform kann das Gerät irgendein Objekt umfassen, welches eine Mehrzahl von mit ihm assoziierten Parametern hat. Zum Beispiel kann das Gerät ein Objekt, sowie etwa einen Personal-Computer, einen persönlichen digitalen Assistenten, ein Mobiltelefon oder ein anderes Hardware-Element, ein Automobil, ein Haus etc. umfassen.
-
Zusätzlich kann in einer Ausführungsform die Mehrzahl von Parametern irgendeine Charakteristik des Gerätes umfassen. Zum Beispiel kann die Mehrzahl von Parametern Beschreibungen von Hardware (z.B. eine Zentral-Verarbeitungs-Einheit (CPU), eine Grafik-Verarbeitungs-Einheit (GPU), Speicher mit willkürlichem Zugriff (RAM), eine Haupt-Platine, eine Anzeige, eine Auflösung, etc.) umfassen, welche innerhalb des Gerätes (z.B. ein Schreibtisch-Computer, ein Laptop-Computer, ein Tablet-Computer, eine persönlicher digitaler Assistent, ein Mobiltelefon, etc.) installiert ist, Software (z.B. ein Betriebssystem, Treiber, etc.), welche innerhalb des Gerätes installiert ist, Maschinen-Charakteristiken eines Automobils (z.B. Zeitgebung, Kopftyp, etc.), etc. umfassen.
-
Ferner können in einer Ausführungsform einer oder mehrere der Mehrzahl von Parametern unabhängig konfigurierbar sein. Zum Beispiel kann jeder der Mehrzahl von Parametern in der Lage sein, unabhängig von anderen Parametern geändert zu werden. In einer anderen Ausführungsform kann jeder der Mehrzahl von Parametern von dem Gerät benutzt werden, um eine oder mehrere Aktionen durchzuführen. In noch einer anderen Ausführungsform kann die Mehrzahl von Parametern bei einem Server identifiziert werden. Zum Beispiel kann die Mehrzahl von Parametern von dem Produkt oder Dienst oder einer Entität, welche mit dem Produkt oder dem Dienst assoziiert ist, zu einem Server über ein Netzwerk (z.B. ein drahtloses Netzwerk, ein drahtbasiertes Netzwerk, ein zelluläres Netzwerk, ein Satelliten-Netzwerk, etc.) gesendet werden. In einem anderen Beispiel können Details, welche die Mehrzahl von Parametern beschreiben, zu dem Server von dem Gerät gemäß einem vorbestimmten Intervall (z.B. einmal pro Tag, einmal pro Woche, einmal pro Monat, etc.) hochgeladen werden.
-
Zusätzlich werden, wie in Operation 104 gezeigt ist, eine oder mehrere Einschränkungen bestimmt, unter Benutzung der Mehrzahl von Parametern. In einer Ausführungsform können die eine oder die mehreren Einschränkungen unter Benutzung eines gerichteten azyklischen Graphen (DAG) bestimmt werden. Zum Beispiel kann der DAG einen Graphen umfassen, welcher erzeugt ist, welcher eine Mehrzahl von gerichteten Knoten beinhaltet, wobei die Knoten basierend auf einem oder mehreren Kriterien gerichtet sind (directed). Zum Beispiel kann jeder der Mehrzahl von Knoten des DAG eine Kombination von Geräte-Parametern repräsentieren und die Knoten können innerhalb des DAG basierend auf der Geschwindigkeit gerichtet sein, welche mit jenem Knoten assoziiert ist, wobei die Geschwindigkeit basierend auf den Geräte-Parametern, welche mittels des Knotens repräsentiert sind, bestimmt ist. In einer anderen Ausführungsform können die Knoten in dem DAG derart gerichtet sein, dass ein erster Knoten des DAG auf einen zweiten Knoten des DAG zeigen kann, wenn bestimmt ist, dass der zweite Knoten des DAG definitiv schneller in einer oder in mehreren Hinsichten (z.B. bezüglich einer Verarbeitungs-Geschwindigkeit, etc.) ist als der erste Knoten des DAG.
-
Ferner kann in einer Ausführungsform jeder Knoten in dem DAG eine eigentümliche bzw. eindeutige (unique) Variation einer Mehrzahl von Varietäten von möglichen Parametern repräsentieren, welche mit dem Gerät oder einem anderen Gerät assoziiert sind. Zum Beispiel kann die Mehrzahl von möglichen Parametern, welche mit dem Gerät assoziiert sind, eine Geräte-CPU, eine Geräte-GPU, eine Geräte-Auflösung umfassen und jeder Knoten in dem DAG kann eine eigentümliche bzw. eindeutige Kombination eines bestimmten Typs von Geräte-CPU, Geräte-GPU, und Geräte-Auflösung repräsentieren. In dieser Weise zeigt ein erster Knoten, welcher auf einen zweiten Knoten innerhalb des DAG zeigt, an, dass die Mehrzahl von möglichen Parametern, welche mit dem Gerät assoziiert sind, repräsentiert mittels des zweiten Knotens in dem DAG, definitiv bessere Verarbeitungs-Geschwindigkeit und Performance anbieten als die Mehrzahl von möglichen Parametern, welche mit dem Gerät assoziiert sind, welche mittels des ersten Knotens in dem DAG repräsentiert sind.
-
Ferner noch kann in einer Ausführungsform Bestimmen der einen oder der mehreren Einschränkungen umfassen Identifizieren eines Knotens in dem DAG, welcher der identifizierten Mehrzahl von Parametern, welche mit dem Gerät assoziiert sind, entspricht. Zum Beispiel kann ein Knoten in dem DAG, welcher eine Variation einer Mehrzahl von möglichen Parametern repräsentiert, welche mit der identifizierten Mehrzahl von Parametern übereinstimmen, welche mit dem Gerät assoziiert sind, identifiziert werden und auf das Gerät abgebildet werden (mapped).
-
In einer Ausführungsform kann auch das Bestimmen der einen oder der mehreren Einschränkungen umfassen Bestimmen einer ersten Untermenge (subset) von Knoten in dem DAG, welche definitiv kleiner oder gleich sind in einer Gesamt-Geschwindigkeit und -Performance zu dem identifizierten Knoten, welcher der identifizierten Mehrzahl von Parametern entspricht, welche mit dem Gerät assoziiert sind. Zum Beispiel können alle Knoten in dem DAG, welche entweder direkt oder indirekt auf den identifizierten Knoten zeigen, welcher der identifizierten Mehrzahl von Parametern entspricht, welche mit dem Gerät assoziiert sind, bestimmt werden.
-
Zusätzlich kann in einer Ausführungsform Bestimmen der einen oder der mehreren Einschränkungen umfassen Bestimmen einer zweiten Untermenge von Knoten in dem DAG, welche definitiv schneller oder gleich sind in einer Gesamt-Geschwindigkeit und -Performance zu dem identifizierten Knoten, welcher der identifizierten Mehrzahl von Parametern entspricht, welche mit dem Gerät assoziiert sind. Zum Beispiel können alle Knoten in dem DAG, auf welche entweder direkt oder indirekt mittels des identifizierten Knotens gezeigt wird, welcher der identifizierten Mehrzahl von Parametern entspricht, welche mit dem Gerät assoziiert sind, bestimmt werden.
-
Ferner kann in einer Ausführungsform Bestimmen der einen oder der mehreren Einschränkungen umfassen Berechnen einer Maximal-Ausgabe (maximum output), welche möglich ist, mittels der ersten Untermenge von Knoten produziert zu werden. Zum Beispiel kann die Maximal-Ausgabe für die erste Untermenge von Knoten die höchste Bildqualität umfassen, welche in der Lage ist, mittels der Knoten innerhalb der ersten Untergruppe verarbeitet und ausgegeben zu werden. In einer anderen Ausführungsform kann die Maximal-Ausgabe für die erste Untermenge von Knoten die höchste Bildqualität umfassen, welche in der Lage ist, mittels der Knoten innerhalb der ersten Untermenge für eine bestimmte Bedingung (z.B. eine minimale erlaubte Bildrate, etc.) verarbeitet und ausgegeben zu werden.
-
In einer anderen Ausführungsform können eine oder mehrere Einstellungen mit der Maximal-Ausgabe assoziiert sein, welche möglich ist, mittels der ersten Untermenge von Knoten produziert zu werden. Zum Beispiel kann ein spezifischer Knoten innerhalb der ersten Untermenge von Knoten identifiziert werden, der Mehrzahl von Parametern zu entsprechen, welche in der Lage sind, die Maximal-Ausgabe zu produzieren. In einer anderen Ausführungsform kann der spezifische Knoten mit einer oder mit mehreren vorbestimmten Einstellungen (z.B. die vorbestimmten Einstellungen, welche die Maximal-Ausgabe zu produzieren erlauben, unter Benutzung der gegebenen Mehrzahl von Parametern, etc.) assoziiert sein, was dann mit der Maximal-Ausgabe für die erste Untermenge von Knoten assoziiert sein kann.
-
Zum Beispiel kann ein monotoner Satz bzw. Menge (set) von Voreinstellungen für eine oder mehrere eigentümliche bzw. eindeutige Variationen der Mehrzahl von möglichen Parametern, welche mit dem Gerät assoziiert sind, bestimmt worden sein, wobei jede eigentümliche Variation mittels eines Knotens in dem DAG repräsentiert ist. Siehe z.B. [NVIDP695], was hiermit mittels Bezugnahme in seiner Gänze inkorporiert ist und was beispielhafte Verfahren zum Bestimmen eines monotonen Satzes von Voreinstellungen basierend auf einer Mehrzahl von Parametern beschreibt.
-
In einer anderen Ausführungsform können die vorbestimmten Einstellungen mit einem oder mehreren Parametern assoziiert sein, welche basierend auf der Mehrzahl von möglichen Parametern bestimmt worden sind, welche mit dem Gerät assoziiert sind (z.B. die Mehrzahl von Parametern, welche mit einem bestimmten Knoten assoziiert sind, etc.). Siehe z.B., [NIVDP541], welches hiermit durch Bezugnahme in seiner Gänze inkorporiert ist und was beispielhafte Verfahren zum Bestimmen von Anwendungs-Parametern basierend auf Hardware-Spezifikationen beschreibt.
-
Ferner kann in einer Ausführungsform Bestimmen der einen oder der mehreren Einschränkungen Berechnen einer Minimal-Ausgabe umfassen, welche nicht möglich ist mittels der zweiten Untermenge von Knoten produziert zu werden. Zum Beispiel kann die Minimal-Ausgabe für die zweite Untergruppe von Knoten die niedrigste Bildqualität umfassen, welche nicht in der Lage ist, mittels der Knoten innerhalb der zweiten Untergruppe verarbeitet und ausgegeben zu werden. In einer anderen Ausführungsform kann die Minimal-Ausgabe für die zweite Untergruppe von Knoten die niedrigste Bildqualität umfassen, welche nicht in der Lage ist, mittels der Knoten innerhalb der zweiten Untergruppe für eine bestimmte Bedingung (z.B. eine minimal erlaubbare Bildrate, etc.) verarbeitet und ausgegeben zu werden.
-
In einer anderen Ausführungsform können eine oder mehrere Einstellungen mit der Minimal-Ausgabe assoziiert sein, welche nicht möglich ist, mittels der zweiten Untermenge von Knoten produziert zu werden. Zum Beispiel kann ein spezifischer Knoten innerhalb der zweiten Untergruppe von Knoten identifiziert werden, der Mehrzahl von Parametern zu entsprechen, welche nicht in der Lage sind, die Minimal-Ausgabe zu produzieren. In einer anderen Ausführungsform kann der spezifische Knoten mit einer oder mit mehreren vorbestimmten Einstellungen (z.B. die vorbestimmten Einstellungen, welche verhindern, dass die Minimal-Ausgabe unter Benutzung der gegebenen Mehrzahl von Parametern produziert ist, etc.) assoziiert sein, was dann mit der Minimal-Ausgabe für die zweite Untergruppe von Knoten assoziiert sein kann.
-
Wie in Operation 106 gezeigt ist, werden auch eine oder mehrere Einstellungen für das Gerät berechnet, unter Benutzung der einen oder der mehreren Einschränkungen und der Mehrzahl von Parametern. In einer Ausführungsform können die eine oder die mehreren Einstellungen, welche für das Gerät berechnet sind, vordefinierte Einstellungen für einen oder mehrere der Mehrzahl von Parametern umfassen, welche mit dem Gerät assoziiert sind. Zum Beispiel kann das Gerät einen Personal-Computer umfassen und die Einstellungen können vordefinierte Einstellungen für ein oder mehrere Elemente von Hardware und Software umfassen, welche innerhalb des Geräts installiert sind.
-
Zusätzlich können in einer Ausführungsform die Einstellungen mit einer oder mehreren Operationen assoziiert sein, welche mittels des Produktes oder Dienstes durchgeführt sind. Zum Beispiel können die Einstellungen vordefinierte Einstellungen zum Ablaufen von einem oder mehreren Software-Programmen mittels des Geräts umfassen. In einer anderen Ausführungsform können die eine oder die mehreren Einstellungen, welche für das Gerät berechnet sind, Einstellungen für die identifizierte Mehrzahl von Parametern umfassen, welche zu einer Maximal-Ausgabe führen (z.B. Bildqualität, etc.), während eine Bedingung aufrechterhalten ist (z.B. eine minimale Bildrate, etc.).
-
Ferner kann in einer Ausführungsform die eine oder die mehreren Einschränkungen, welche unter Benutzung der Mehrzahl von Parametern bestimmt sind, Grenzen bereitstellen, welche während des Berechnens der einen oder der mehreren Einstellungen für das Gerät benutzt werden. Zum Beispiel können die eine oder die mehreren Einschränkungen die Maximal-Ausgabe umfassen, welche möglich ist, mittels der ersten Untermenge von Knoten produziert zu werden, was als ein Boden- (floor), Startpunkt-, Minimal-Ausgabe-Menge, etc. definiert sein kann, wenn die eine oder die mehreren Einstellungen für das Gerät berechnet werden. In einem anderen Beispiel können die eine oder die mehreren Einschränkungen die Minimal-Ausgabe umfassen, welche nicht möglich ist, mittels der zweiten Untermenge von Knoten produziert zu werden, welche als eine Decke-, Endpunkt-, Maximal-Ausgabe-Menge, etc. designiert sein kann, wenn die eine oder die mehreren Einstellungen für das Gerät berechnet sind.
-
In einer anderen Ausführungsform können die eine oder die mehreren Einschränkungen die eine oder die mehreren vorbestimmten Einstellungen umfassen, welche mit der Maximal-Ausgabe für die erste Untermenge von Knoten assoziiert sind, welche als minimal mögliche Einstellungen designiert sein können, wenn die eine oder die mehreren Einstellungen für das Gerät berechnet werden. Ferner können die eine oder die mehreren Einschränkungen die eine oder die mehreren vorbestimmten Einstellungen, welche mit der Minimal-Ausgabe für die zweite Untergruppe von Knoten assoziiert sind, umfassen, welche als maximal mögliche Einstellungen designiert sein können, wenn die eine oder die mehreren Einstellungen für das Gerät berechnet werden.
-
Ferner noch kann in einer Ausführungsform Berechnen der einen oder der mehreren Einstellungen für das Gerät umfassen ein Bestimmen von Mittelpunkt-Einstellungen (midpoint settings) auf halbem Wege zwischen den minimal möglichen Einstellungen und den maximal möglichen Einstellungen, und Bestimmen, ob das Gerät in der Lage ist, die Bedingung aufrechtzuerhalten, während die Mittelpunkts-Einstellungen durchgeführt werden. Wenn es bestimmt ist, dass das Gerät die Bedingung unter Benutzung der Mittelpunkts-Einstellungen nicht aufrechterhalten kann, dann können zusätzlich die Geräte-Einstellungen inkrementell vermindert werden, bis die Geräte-Einstellungen bestimmt sind, welche ermöglichen, dass die Bedingung aufrechterhalten wird. Wenn es bestimmt ist, dass das Gerät die Bedingung unter Benutzung der Mittelpunkts-Einstellungen aufrechterhalten kann, dann können ferner die Geräte-Einstellungen inkrementell erhöht werden, bis die Geräte-Einstellungen bestimmt sind, welche ermöglichen, dass die Bedingung aufrechterhalten wird.
-
Auf diese Weise können Einschränkungen auf eine Mehrzahl von Parametern, welche mit einem Gerät assoziiert sind, angewendet werden, wenn Einstellungen für die Mehrzahl von Parametern des Gerätes bestimmt werden, welche zu einer maximierten Ausgabe führen, während eine Bedingung für das Gerät aufrechterhalten wird. Dies kann eine schnellere Konvergenz unter optimierten Einstellungen durch Einsetzen (leveraging) von vorbestimmten Einstellungen von benachbarten Konfigurationen innerhalb des DAG ermöglichen. Auch können eine oder mehrere vorbestimmte Einstellungen für das Gerät bestimmt werden, während sichergestellt wird, dass vorbestimmte Kriterien (z.B. eine minimale Bildrate-Bedingung, etc.) für das Gerät erfüllt sind. Zusätzlich kann mittels eines Benutzens eines DAG, eine binäre Suche benutzt werden, um die eine oder die mehreren Einstellungen zu bestimmen.
-
Mehr illustrative Information wird nun bezüglich der verschiedenen optionalen Architekturen und Merkmale ausgeführt, mit welchem das vorangehende Rahmenwerk implementiert werden kann oder nicht implementiert zu werden braucht, je nach den Wünschen des Benutzers. Es sollte deutlich bemerkt werden, dass die folgende Information für illustrative Zwecke ausgeführt ist und nicht interpretiert werden sollte, in irgendeiner Weise zu begrenzen. Irgendeines der folgenden Merkmale kann optional inkorporiert werden mit oder ohne den Ausschluss von anderen beschriebenen Merkmalen.
-
2 zeigt ein Verfahren 200 zum Bestimmen von vorbestimmten optimalen spielbaren (playable) Einstellungen für einen Personal-Computer in Übereinstimmung mit einer anderen Ausführungsform. Als eine Option kann das Verfahren 200 in dem Kontext der Funktionalität von 1 ausgeführt werden. Natürlich kann jedoch das Verfahren 200 in irgendeiner gewünschten Umgebung implementiert werden. Es sollte auch bemerkt werden, dass die zuvor erwähnten Definitionen während der vorliegenden Beschreibung gelten können.
-
Wie in Operation 202 gezeigt ist, wird eine Mehrzahl von Parametern, welche mit einem Personal-Computer assoziiert ist, an einen Server gesendet. In einer Ausführungsform kann die Mehrzahl von Parametern Parameter umfassen, welche mit einer Anzeige des Personal-Computers assoziiert sind. Zum Beispiel kann die Mehrzahl von Parametern eine Schirm-Auflösung des Personal-Computers umfassen. In einer anderen Ausführungsform kann die Mehrzahl von Parametern Parameter umfassen, welche mit dem Rendern von Grafik mittels des Personal-Computers assoziiert sind. Zum Beispiel kann die Mehrzahl von Parametern Spezifitäten von System-Hardware umfassen, welche innerhalb des Personal-Computers installiert ist (z.B. CPU-Spezifitäten, GPU-Spezifitäten, Haupt- oder Haupt-Platine-Spezifitäten, RAM-Spezifitäten, etc.), Spezifitäten von System-Software, welche innerhalb des Personal-Computers installiert ist, etc.
-
Zusätzlich kann in einer Ausführungsform der Server entfernt von dem Personal-Computer sein und die Mehrzahl von Parametern kann zu dem Server über ein Netzwerk gesendet werden. Zum Beispiel kann Software, welche innerhalb des Personal-Computers installiert ist, die Mehrzahl von Parametern erhalten und solche Parameter zu dem Server senden. In einer anderen Ausführungsform kann der Server innerhalb des Personal-Computers lokalisiert sein und die Mehrzahl von Parametern können zu dem Server innerhalb des Personal-Computers gesendet werden. Natürlich kann jedoch die Mehrzahl von Parametern zu dem Server in irgendeiner Weise gesendet werden.
-
In einer anderen Ausführungsform kann die Mehrzahl von Parametern, welche mit dem Personal-Computer assoziiert ist, zu dem Server gesendet werden, wenn ein Benutzer eine Anwendung auf dem Personal-Computer abläuft. In noch einer anderen Ausführungsform kann die Mehrzahl von Parametern, welche mit dem Personal-Computer assoziiert ist, zu dem Server gesendet werden, wenn ein Benutzer eine Anwendung auf dem Personal-Computer installiert. In noch einer anderen Ausführungsform kann die Mehrzahl von Parametern, welche mit dem Personal-Computer assoziiert ist, zu dem Server gesendet werden, wenn ein Benutzer eine Anwendung auf den Personal-Computer herunter lädt. Natürlich kann jedoch die Mehrzahl von Parametern, welche mit dem Personal-Computer assoziiert ist, zu dem Server als ein Ergebnis von irgendeiner Aktion oder Kriterium gesendet werden.
-
Wie weiter in Operation 204 gezeigt ist, wird ein Knoten in einem Parameter-DAG bei dem Server identifiziert, unter Benutzung der Mehrzahl von Parameter, welche zu dem Server gesendet sind. Zum Beispiel kann der Parameter-DAG eine Mehrzahl von Knoten umfassen, welche eigentümliche bzw. eindeutige Kombinationen von Parametern für den Personal-Computer repräsentieren, und ein Knoten innerhalb des DAG, welcher alle oder eine vorbestimmte Untermenge von der Mehrzahl von Parametern repräsentiert, welche zu dem Server gesendet sind, kann identifiziert werden.
-
Wie in Operation 206 gezeigt ist, wird noch weiter eine erste Untermenge von allen Knoten in dem Parameter-DAG, welche definitiv langsamer als oder gleich sind in einer Geschwindigkeit zu dem identifizierten Knoten, bei dem Server bestimmt. In einer Ausführungsform kann jeder Knoten in dem Parameter-DAG eine eigentümliche Kombination von Parametern für den Personal-Computer repräsentieren und jeder Knoten in dem Parameter-DAG kann mit einer vorbestimmten Geschwindigkeit (z.B. einer Geschwindigkeit, mit welcher die eigentümliche Kombination von Parametern des Knotens Daten verarbeiten kann) assoziiert sein. Zum Beispiel kann eine Geschwindigkeit für jede eigentümliche bzw. eindeutige Kombination von Parametern für den Personal-Computer explizit kalkuliert oder approximiert werden und solch eine Geschwindigkeit kann mit seinem entsprechenden Knoten assoziiert sein.
-
Auch kann in einer Ausführungsform die erste Untergruppe von einem Knoten in dem Parameter-DAG, welche definitiv langsamer sind als oder gleich sind wie in Geschwindigkeit zu dem identifizierten Knoten dadurch bestimmt werden, dass alle Knoten identifiziert werden, welche direkt oder indirekt auf den identifizierten Knoten zeigen. Wie in Operation 208 gezeigt ist, wird zusätzlich eine zweite Untermenge von allen Knoten in dem Parametern-DAG, welche definitiv schneller sind als oder gleich sind wie in Geschwindigkeit zu dem identifizierten Knoten bei dem Server identifiziert. In einer Ausführungsform kann die zweite Untermenge von allen Knoten in dem Parameter-DAG, welche definitiv schneller sind als oder gleich sind wie in Geschwindigkeit zu dem identifizierten Knoten dadurch bestimmt werden, dass alle Knoten identifiziert werden, welche direkt oder indirekt auf den identifizierten Knoten zeigten.
-
Wie in Operation 210 gezeigt ist, wird ferner ein Boden-Knoten (floor node), welcher eine Maximal-Ausgabe innerhalb der ersten Untermenge von Knoten bei einer gegebenen vorbestimmten Bedingung produziert, bestimmt. In einer Ausführungsform kann die vorbestimmte Bedingung eine vorbestimmte minimale akzeptable Bildrate umfassen, welche in der Lage ist, mittels der eigentümlichen Kombination von Parametern produziert zu werden, welche mittels jedes Knotens in dem DAG repräsentiert sind. In einer anderen Ausführungsform kann der Boden-Knoten, dessen assoziierte Parameter die Maximal-Ausgabe produzieren, den Knoten umfassen, welcher die höchste Bildqualität bereitstellt, bei gegebener vorbestimmter Bedingung. In noch einer anderen Ausführungsform kann der Boden-Knoten, welcher die Maximal-Ausgabe produziert dadurch identifiziert werden, dass eine Größe bzw. Menge (magnitude) der Ausgabe (z.B. eine Bildqualität, etc.) für die eigentümliche Kombination von Parametern, welche mittels jedes Knotens repräsentiert sind, in der ersten Untermenge von Knoten für eine Schwellwert-Bildrate verglichen wird.
-
Wie in Operation 212 gezeigt ist, wird noch weiter ein Decken-Knoten (ceiling node), welcher eine Minimal-Ausgabe innerhalb der zweiten Untermenge von Knoten bei einer gegebenen vorbestimmten Bedingung produziert, bestimmt. In einer Ausführungsform kann der Decken-Knoten, welcher die Minimal-Ausgabe produziert, den Knoten umfassen, dessen assoziierte Parameter die niedrigste Bildqualität bei der gegebenen vorbestimmten Bedingung umfassen. In noch einer anderen Ausführungsform kann der Decke-Knoten, welcher die Minimal-Ausgabe produziert, dadurch identifiziert werden, dass eine Menge bzw. Größe der Ausgabe (z.B. Bildqualität, etc.) für die eigentümliche Kombination von Parametern, welche mittels jedes Knotens repräsentiert sind, in der ersten Untermenge von Knoten für eine Schwellwert-Bildrate verglichen wird.
-
Wie in Operation 214 gezeigt ist, werden auch Boden-Einstellungen (floor settings), welche mit einer Maximal-Ausgabe assoziiert sind, welche in der Lage ist, mittels des Boden-Knotens gegeben die vorbestimmte Bedingung produziert zu werden, identifiziert. In einer Ausführungsform können die Einstellungen eine oder mehrere Einstellungen umfassen, welche der Kombination von Parametern zugewiesen sind, welche mittels des Boden-Knotens repräsentiert sind, welcher zu der Maximal-Ausgabe führt, während die vorbestimmte Bedingung erfüllt ist, können auch identifiziert werden. Zusätzlich werden, wie in Operation 216 gezeigt ist, Decke-Einstellungen, welche mit einer Minimal-Ausgabe assoziiert ist, welche mittels des Decke-Knotens produziert ist, identifiziert, während die vorbestimmte Bedingung verletzt ist.
-
In einer Ausführungsform können die Einstellungen, welche der Kombination von Parametern zugeordnet sind, welche mittels des Decke-Knotens repräsentiert sind, inkrementell erhöht werden, bis eine vorbestimmte Bildrate-Bedingung nicht erfüllt ist (z.B. die Bildrate, welche mittels der Parameter produziert ist, ist kleiner als die Schwellwert-Bildrate). Ferner können die Einstellungen eine oder mehrere Einstellungen umfassen, welche der Kombination von Parametern zugewiesen sind, welche mittels des Decke-Knotens repräsentiert ist, welcher die Minimal-Ausgabe produziert, während die vorbestimmte Bedingung verletzt wird, können auch identifiziert werden.
-
Wie ferner in Operation 218 gezeigt ist, werden optimale spielbare Einstellungen für die Mehrzahl von Parametern, welche mit dem Personal-Computer assoziiert sind, verfeinert, basierend auf den Boden-Einstellungen und den Decke-Einstellungen. In einer Ausführungsform können Mittelpunkts-Einstellungen (midpoint settings) für die Mehrzahl von Parametern, welche mit dem Personal-Computer assoziiert sind, auf halbem Weg zwischen den Boden-Einstellungen und den Decke-Einstellungen bestimmt werden. Zusätzlich können in einer Ausführungsform, wenn eine vorbestimmte Bedingung (z.B. eine Bestehen/Verfehlen einer Bool'schen Bedingung, ein Schwellwert (z.B. Bildrate, etc.) etc.) mittels der Parameter gegeben die Mittelpunkts-Einstellungen erfüllt ist, die Einstellungen inkrementell erhöht werden, bis die vorbestimmte Bedingung nicht erfüllt ist und die letzten gültigen Einstellungen, welche die Bildrate erfüllen, können als die optimalen spielbaren Einstellungen gesetzt werden.
-
Umgekehrt können in einer Ausführungsform, wenn eine vorbestimmte Bedingung (z.B. Bildrate, etc.) mittels der Parameter gegeben die Mittelpunkts-Einstellungen nicht erfüllt ist, die Einstellungen inkrementell erniedrigt werden, bis die vorbestimmte Bedingung erfüllt ist und die ersten gültigen Einstellungen, welche die Bildrate erfüllen, können als die optimalen spielbaren Einstellungen gesetzt werden. Auf diese Weise können die Boden-Einstellungen und die Decke-Einstellungen als Einschränkungen agieren, um eine Konvergenz zu verbessern, wenn die optimalen spielbaren Einstellungen für den Personal-Computer detektiert werden.
-
In einer Ausführungsform können noch weiter die erste und die zweite Untermenge von Knoten, sowie der Boden-Knoten und der Decke-Knoten konstant während der Bestimmung der optimalen spielbaren Einstellungen für den Personal-Computer verfeinert werden. Auf diese Weise können neue Knoten-Untermengen und Boden- und Decke-Knoten zu irgendeiner Zeit während der Bestimmung der optimalen spielbaren Einstellungen für den Personal-Computer bestimmt werden.
-
3 zeigt einen exemplarischen Parameter-DAG 300 in Übereinstimmung mit einer anderen Ausführungsform. Als eine Option kann der exemplarische Parameter-DAG 300 in dem Kontext der Funktionalität von 1-2 ausgeführt werden. Natürlich kann jedoch der exemplarische Parameter-DAG 300 in irgendeiner gewünschten Umgebung implementiert werden. Es sollte auch bemerkt werden, dass die zuvor erwähnten Definitionen in der vorliegenden Beschreibung gelten können.
-
Wie gezeigt ist, umfasst der exemplarische Parameter-DAG 300 eine Mehrzahl von Knoten 302A-I, welche jeweils einer eigentümlichen bzw. eindeutigen Kombination einer ersten Menge 304 von Variationen 306A-C einer ersten Komponente (z.B. ein CPU-Typ, etc.) eines Personal-Computers und einer zweiten Menge 308 einer Variation 310A-C einer zweiten Komponente (z.B. ein GPU-Typ) des Personal-Computers entsprechen. In einer Ausführungsform kann der DAG 300 einen gerichteten Graphen mit keinen gerichteten Zyklen, welcher mittels der Sammlung von Knoten 302A-I (z.B. Vertizes, etc.) und einer Mehrzahl von gerichteten Kanten 312 gebildet ist, umfassen, derart, dass es keinen Weg gibt, um an irgendeinem Knoten in dem DAG 300 zu starten und einer Sequenz von Kanten zu folgen, welche schließlich in einer Schleife wieder zu dem Start-Knoten zurückführen.
-
Zusätzlich sind die Knoten sowohl in der ersten Menge 304 von Variationen 306A-C der ersten Komponente und in der zweiten Menge 308 von Variationen 310A-C der zweiten Komponenten basierend auf Verarbeitungs-Geschwindigkeit gerichtet, mit langsameren Knoten auf schnellere Knoten zeigend. Als solches ist der erste Knoten 306A der langsamste Knoten in der ersten Menge 304, der zweite Knoten 306B ist schneller als der erste Knoten 306A aber langsamer als der dritte Knoten 306C in der ersten Menge 304 und der dritte Knoten 306C ist der schnellste Knoten in der ersten Menge 304.
-
In einer Ausführungsform kann die Geschwindigkeit jedes der Knoten 302A-I unter Benutzung von einem oder mehreren Algorithmen, Bezugspunkt-Tests, Hersteller-Offenbarungen, etc. bestimmt werden. In einer anderen Ausführungsform kann die Lokalisierung der Knoten 302A-I innerhalb des DAG 300 (einschließlich welche Knoten zu welchen Knoten zeigen) dadurch bestimmt werden, dass Eigenschaften von Komponenten in jedem Knoten analysiert werden und die Gesamt-Verarbeitungs-Geschwindigkeit von jedem der Knoten 302A-I verglichen wird.
-
Wie gezeigt ist, zeigen zusätzlich gerichtete Kanten 312 von Knoten, welche langsameren eigentümlichen Kombinationen von Parameter-Variationen des Personal-Computers entsprechen, auf Knoten, welche eindeutig schnelleren eigentümlichen Kombinationen von Parameter-Variationen des Personal-Computers entsprechen. Auf diese Weise entspricht der Boden-Knote n 302I der schnellsten eigentümlichen Kombination von Parameter-Variationen des Personal-Computers, wogegen der obere Knoten 302A der langsamsten eigentümlichen Kombination von Parameter-Variationen des Personal-Computers entspricht.
-
Ferner kann in einer Ausführungsform eine initiale Kombination von Parameter-Variationen identifiziert werden. Zum Beispiel kann eine berechnete Kombination von Parameter-Variationen, welche bestimmt werden, innerhalb eines Personal-Computers installiert zu werden, von dem Personal-Computer empfangen werden. In einer Ausführungsform kann die identifizierte Kombination von Parameter-Variationen mit Knoten 302E innerhalb des DAG 300 übereinstimmen bzw. zusammengepasst werden (matched). Zum Beispiel kann die identifizierte Kombination von Parameter-Variationen mit der Kombination von Parameter-Variationen übereinstimmen (match), denen Knoten 302E entspricht.
-
Noch weiter kann in einer Ausführungsform bestimmt werden, dass eine erste Knoten-Untergruppe, welche Knoten 302A, B, C und D umfasst, definitiv langsamer ist als oder gleich ist wie Knoten 302E. Zum Beispiel zeigen Knoten 302A, B und C alle direkt und indirekt zu Knoten 302E durch gerichtete Vertizes und als ein Ergebnis sind Knoten 302A, B und C definitiv langsamer als Knoten 302E. In einem anderen Beispiel kann es bestimmt werden, dass Knoten 302D langsamer ist als oder gleich ist wie in Geschwindigkeit zu Knoten 302E.
-
Auch kann in einer Ausführungsform bestimmt werden, dass eine zweite Knoten-Untergruppe, welche Knoten 302F, G, H und I umfasst, definitiv schneller ist als oder gleich ist zu Knoten 302E. Zum Beispiel wird auf Knoten 302G, H und I direkt oder indirekt mittels Knoten 302E durch gerichtete Vertizes gezeigt und als ein Ergebnis sind Knoten 302G, H und I alle definitiv schneller als Knoten 302E. In einem anderen Beispiel kann es bestimmt werden, dass Knoten 302F schneller ist als oder gleich ist wie in Geschwindigkeit zu Knoten 302E.
-
Zusätzlich kann in einer Ausführungsform bestimmt werden, dass die Parameter, welche mittels Knoten 302D repräsentiert sind, eine Maximal-Ausgabe innerhalb der ersten Untermenge von Knoten 302A, B, C und D für eine vorbestimmte Bildrate produzieren, gegeben besondere vorbestimmte Einstellungen. In einer anderen Ausführungsform können diese besonderen vorbestimmten Einstellungen des Knotens 302D als Boden-Einstellungen gesetzt werden. In noch einer anderen Ausführungsform kann es bestimmt sein, dass die Parameter, welche mittels Knoten 302F repräsentiert sind, eine
minimale Ausgabe innerhalb der zweiten Untergruppe von Knoten 302F, G, H und I für eine vorbestimmte Bildrate produzieren, gegeben bestimmte vorbestimmte Einstellungen. In einer anderen Ausführungsform können diese besonderen vorbestimmten Einstellungen des Knotens 302F als Decke-Einstellungen gesetzt werden.
-
Ferner können in einer Ausführungsform optimale spielbare Einstellungen für die anfängliche Kombination von Parameter-Variationen bestimmt werden, wobei die Boden-Einstellungen und Decke-Einstellungen den Bereich von Einstellungen diktieren, welcher während der Bestimmung zu testen ist. Auf diese Weise kann die genaue Bestimmung von Einstellungen für einen Knoten in dem DAG 300 in einer schnellen Weise dadurch konvergieren, dass Ergebnisse von benachbarten Knoten in dem DAG 300 verwendet werden (leveraging) .
-
4 illustriert ein exemplarisches System 400, in welchem die verschiedene Architektur und/oder Funktionalität der verschiedenen vorherigen Ausführungsformen implementiert werden kann. Wie gezeigt ist, ist ein System 400 bereitgestellt, welches zumindest einen Host-Prozessor 401 umfasst, welcher mit einem Kommunikations-Bus 402 verbunden ist. Das System 400 umfasst auch einen Hauptspeicher 404. Steuerlogik (Software) und Daten sind in dem Hauptspeicher 404 gespeichert, welcher die Form eines Speichers mit willkürlichem Zugriff (RAM) annehmen kann.
-
Das System 400 umfasst auch einen Grafik-Prozessor 406 und eine Anzeige 408, d.h. einen Computer-Monitor. In einer Ausführungsform kann der Grafik-Prozessor 406 eine Mehrzahl von Schattierungs-Modulen (shader modules), ein Raster-Modul, etc. umfassen. Jedes der vorangehenden Module kann sogar auf einer einzelnen Halbleiter-Plattform situiert sein, um eine Grafik-Verarbeitungs-Einheit (GPU) zu bilden.
-
In der vorliegenden Beschreibung kann sich eine einzelne Halbleiter-Plattform auf einem einzelnen unitären Halbleiter-basierten integrierten Schaltkreis oder -Chip beziehen. Es sollte bemerkt werden, dass
der Ausdruck einzelne Halbleiter-Plattform sich auch auf Mehr-Chip-Module mit erhöhter Konnektivität beziehen kann, welche eine Auf-Chip-Operation simulieren, und welche wesentliche Verbesserungen über ein Benutzen einer konventionellen Zentral-Verarbeitungs-Einheit (CPU) und Bus-Implementation machen. Natürlich können die verschiedenen Module auch separat oder in verschiedenen Kombinationen von Halbleiter-Plattformen nach den Wünschen des Benutzers situiert sein.
-
Das System 400 kann auch einen sekundären Speicher 410 umfassen. Der sekundäre Speicher 410 umfasst z.B. ein Festplatte-Laufwerk und/oder ein entfernbares Speicher-Laufwerk, welches ein Floppydisk-Laufwerk repräsentiert, ein Magnetband-Laufwerk, ein Kompaktdisk-Laufwerk, etc. Das entfernbare Speicher-Laufwerk liest von und/oder schreibt auf eine entfernbare Speicher-Einheit in einer wohl bekannten Weise.
-
Computer-Programme, Computer-Steuerlogik-Algorithmen können in dem Hauptspeicher 404 und/oder dem sekundären Speicher 410 gespeichert sein. Solche Computer-Programme, wenn ausgeführt, setzen das System 400 in die Lage, verschiedene Funktionen auszuführen. Speicher 404, Speicher 410 und/oder irgendein anderer Speicher sind mögliche Beispiele von Computer-lesbaren Medien.
-
In einer Ausführungsform kann die Architektur und/oder Funktionalität der verschiedenen vorherigen Figuren in dem Kontext des Host-Prozessors 401, Grafik-Prozessors 406 und integrierter Schaltung (nicht gezeigt) implementiert sein, welche von zumindest einem Teil der Funktionalität von sowohl dem Host-Prozessor 401 als auch dem Grafik-Prozessor 406 der Lage ist, eines Chip-Satzes (z.B. eine Gruppe von integrierten Schaltungen, welche ausgelegt sind, als eine Einheit zum Durchführen von betreffenden Funktionen, etc. zu arbeiten und verkauft zu werden) und/oder irgendeine andere integrierte Schaltung für diese Aufgabe.
-
Noch weiter kann die Architektur und/oder Funktionalität der verschiedenen vorherigen Figuren in dem Kontext eines Allgemein-Computer-Systems, eines Schaltungs-Platten-Systems, eines Spiel-Konsole-Systems, welches für Unterhaltungs-Zwecke dediziert ist, eines Anwendungsspezifischen Systems und/oder irgendeines anderen gewünschten Systems implementiert werden. Zum Beispiel kann das System 400 die Form eines Schreibtisch-Computers, eines Laptop-Computers und/oder irgendeines anderen Typs von Logik annehmen. Noch weiter kann das System 400 die Form von verschiedenen anderen Geräten m annehmen einschließlich, nicht darauf begrenzt, ein persönlicher digitaler Assistent (PDA)-Gerät, ein mobiles Telefon-Gerät, ein Fernseher, etc.
-
Ferner kann, während es nicht gezeigt ist, das System 400 mit einem Netzwerk [z.B. eine Telekommunikations-Netzwerk, ein Lokalbereichs-Netzwerk (LAN), ein drahtloses Netzwerk, ein Weitbereichs-Netzwerk (WAN), wie etwa das Internet, Peer-to-Peer-Netzwerk, Kabel-Netzwerk, etc.] für Kommunikations-Zwecke gekoppelt sein.