-
GEBIET DER ERFINDUNG
-
Die vorliegende Erfindung bezieht sich auf Parameteranalyse und insbesondere auf das Bestimmen von Einstellungen basierend auf Parameteranalyse.
-
HINTERGRUND
-
Viele Produkte, die heute existieren, weisen einen oder mehrere Parameter auf, die ein mit dem Produkt assoziiertes Gesamterlebnis beeinflussen. Computerspiele und andere Software mögen zum Beispiel viele Parameter haben, die eine Qualität des Rendering, Audio, Gameplay (engl. „game play”) usw. bestimmen. Gegenwärtige Techniken zum Anordnen der mit diesen Produkten assoziierten Parameter sind aber mit verschiedenen Einschränkungen assoziiert gewesen.
-
Zum Beispiel mögen Kunden gegenwärtig dafür verantwortlich sein, eine Mehrzahl von Parametern, die mit einem Produkt assoziiert sind, zu Justieren, um passende Einstellungen für dieses Produkt zu bestimmen. Dies mag nicht optimale Einstellungen für das Produkt, zeitaufwändiger Versuch und Irrtum (engl. „trial and error”) durch den Kunden etc. zur Folge haben. Es besteht folglich ein Bedürfnis, diese und/oder andere mit dem Stand der Technik assoziierten Probleme anzugehen.
-
ZUSAMMENFASSUNG
-
Ein System, Verfahren und Computerprogrammprodukt werden bereitgestellt zum simultanen Bestimmen von Einstellungen für eine Mehrzahl von Parametervariationen. Eine Mehrzahl von Parametervariationen, die mit einer Vorrichtung assoziiert sind, wird im Betrieb identifiziert. Einstellungen werden zusätzlich simultan für jede der Mehrzahl von Parametervariationen bestimmt.
-
Kurze Beschreibung der Zeichnungen
-
Die 1 zeigt ein Verfahren zum simultanen Bestimmen von Einstellungen für eine Mehrzahl von Parametervariationen, gemäß einer Ausführungsform.
-
Die 2 zeigt ein Verfahren zum simultanen Bestimmen von einer Mehrzahl von optimalen Einstellungen, gemäß einer weiteren Ausführungsform.
-
Die 3 zeigt einen beispielhaften Parameter-DAG, gemäß einer weiteren Ausführungsform.
-
Die 4 stellt ein beispielhaftes System dar, in welchem die verschiedenen Architektur und/oder Funktionalität der verschiedenen vorhergehenden Ausführungsformen implementiert werden mögen.
-
DETAILLIERTE BESCHREIBUNG
-
Die 1 zeigt ein Verfahren 100 zum simultanen Bestimmen von Einstellungen für eine Mehrzahl von Parametervariationen, gemäß einer Ausführungsform. Wie es in Operation 102 gezeigt ist, wird eine Mehrzahl von Parametervariationen identifiziert, die mit einer Vorrichtung assoziiert sind. In einer Ausführungsform mag die Vorrichtung ein Objekt aufweisen, wie zum Beispiel einen persönlichen Computer oder ein anderes Hardwareelement. In einer weiteren Ausführungsform mag die Mehrzahl von Parametervariationen eine Mehrzahl von eindeutigen (engl. „unique”) Variationen von einer Mehrzahl von verschiedenen Parametern aufweisen.
-
In einer Ausführungsform mögen die Parameter des Weiteren jegliche Eigenschaften von der Vorrichtung aufweisen. Die Parameter mögen zum Beispiel Hardware (zum Beispiel eine zentrale Verarbeitungseinheit (CPU), eine Grafikverarbeitungseinheit (GPU), Speicher mit direktem Zugriff (RAM), ein Motherboard, ein Display etc.), die innerhalb der Vorrichtung installiert ist (zum Beispiel einen Desktopcomputer, einen Laptopcomputer, einen Tabletcomputer, einen persönlichen digitalen Assistenten, ein Mobiltelefon etc.), Software (zum Beispiel ein Operativsystem, Treiber, etc.), die innerhalb der Vorrichtung installiert ist, etc. enthalten.
-
In einer Ausführungsform mag einer oder mehrere von den Parametern ferner in unabhängiger Weise konfigurierbar sein. Jeder der Parameter mag zum Beispiel dazu fähig sein, unabhängig von den anderen Parametern geändert zu werden. In einer weiteren Ausführungsform mag jeder der Parameter von der Vorrichtung verwendet werden, um eine oder mehrere Handlungen auszuführen. In einer noch weiteren Ausführungsform mag die Parametervariationen eine Mehrzahl von verschiedenen Typen von dem Parameter aufweisen, wobei die Typen eine mit dem Parameter assoziierte Größe, Magnitude, Geschwindigkeit etc. enthalten mögen. Falls der Parameter zum Beispiel eine Vorrichtungs-CPU ist, dann mögen die Variationen des Parameters einen Hersteller der CPU, eine Geschwindigkeit der CPU, eine Cachegröße der CPU etc. aufweisen. In einem weiteren Beispiel, wenn der Parameter RAM ist, dann mögen die Variationen eine Menge von RAM, eine Geschwindigkeit des RAM, einen Hersteller des RAM etc. aufweisen.
-
Noch ferner mag die Mehrzahl von Parametervariationen in einer Ausführungsform auf einem Server identifiziert werden. Zum Beispiel mag jede der Mehrzahl von Parametervariationen von einer Benutzervorrichtung, die diese Parametervariationen aufweist, über ein Netzwerk (zum Beispiel ein drahtloses Netzwerk, ein verkabeltes Netzwerk, ein Mobilfunknetzwerk, ein Satellitennetzwerk etc.) zu einem Server gesendet werden. In einer weiteren Ausführungsform mag die Mehrzahl von Parametervariationen in einer Datenbank gespeichert und aus dieser abgerufen werden.
-
In einer Ausführungsform mag die Mehrzahl von Parametervariationen, die mit der Vorrichtung assoziiert sind, auch basierend auf einem oder mehreren Kriterien identifiziert werden. Zum Beispiel mag eine vorbestimmte Anzahl von Parametervariationen, die als die populärsten Parametervariationen bestimmt worden sind (zum Beispiel die Parametervariationen, die am häufigsten in Vorrichtungen von Kunden verwendet werden etc.), als die mit der Vorrichtung assoziierten Mehrzahl von Parametervariationen ausgewählt werden.
-
Des Weiteren werden Einstellungen für jede der Mehrzahl von Parametervariationen simultan bestimmt, wie es in der Operation 104 gezeigt ist. In einer Ausführungsform mögen die Einstellungen, die für jede der Mehrzahl von Parametervariationen bestimmt worden sind, optimierte Einstellungen aufweisen, die einen oder mehrere Aspekte der Mehrzahl von Parametervariationen manipulieren. In einer weiteren Ausführungsform mögen die Einstellungen für jede der Mehrzahl von Parametervariationen einen monotonen Satz von vorbestimmten Einstellungen (Voreinstellungen (engl. „presets”)) aufweisen. Zum Beispiel mögen Einstellungen für jede der Mehrzahl von Parametervariationen einen monotonen Satz von Voreinstellungen aufweisen, der in Bezug auf eine erste Eigenschaft sequentiell größer wird und in Bezug auf eine zweite Eigenschaft sequentiell kleiner wird.
-
In einem weiteren Beispiel mag der monotone Satz von Voreinstellungen geordnet sein, und jede sukzessive Voreinstellung innerhalb des Satzes von Voreinstellungen mag eine verbesserte erste Eigenschaft und eine verringerte zweite Eigenschaft aufweisen, wenn sie mit der vorhergehenden Voreinstellung innerhalb des Satzes von Voreinstellungen verglichen wird. In einer noch weiteren Ausführungsform mag die erste Eigenschaft mit Qualität (zum Beispiel Bildqualität, Klangqualität etc.) assoziiert sein und die zweite Eigenschaft mag mit Leistung bzw. Performance (zum Beispiel Geschwindigkeit, Ökonomie bzw. Wirtschaftlichkeit, Effizienz etc.) assoziiert sein. Ein Softwareelement mag zum Beispiel auf der Vorrichtung ausgeführt werden, und jede sukzessive Voreinstellung innerhalb des Satzes von Voreinstellungen mag eine verbesserte Bildqualität von dem Softwareelement und eine verringerte Performance des Softwareelements aufweisen.
-
In einer weiteren Ausführungsform mögen die Einstellungen unter Verwendung eines Algorithmus bestimmt werden. Die Einstellungen mögen zum Beispiel unter Verwendung eines Greedy-Algorithmus, eines Exhaustionsalgorithmus (engl. „exhaustive algorithm”) etc. bestimmt werden. In einer anderen Ausführungsform mögen die Einstellungen durch Maximieren einer ersten Eigenschaft in Bezug auf eine zweite Eigenschaft bestimmt werden für jede Voreinstellung des Satzes von Voreinstellungen. Zum Beispiel mag jede einer Mehrzahl von Einstellungen für eine Parametervariation eine erste Eigenschaft, die mit Qualität assoziiert ist, und eine zweite Eigenschaft, die mit Performance assoziiert ist, aufweisen, und die erste Eigenschaft mag in Bezug auf die zweite Eigenschaft optimiert werden.
-
In einer Ausführungsform mögen die Einstellungen ferner für jede der Mehrzahl von Parametervariationen eine Konfiguration von dieser Parametervariation enthalten, so dass die Vorrichtung, die diese Parametervariation hat, ein maximierter Output (zum Beispiel Bildqualität etc.) während Aufrechterhaltens einer Schwellwertbedingung erzeugt, wenn sie ein vorbestimmtes Softwareelement ausführt. In einer anderen Ausführungsform mag das Softwareelement ein Softwareprogramm aufweisen, das innerhalb der Vorrichtung installiert sein mag oder installiert werden soll.
-
In einer Ausführungsform mag das simultane Bestimmen von Einstellungen für jede der Mehrzahl von Parametervariationen noch ferner ein Erzeugen eines gerichteten azyklischen Grafen (DAG) aufweisen, der eine Mehrzahl von Knoten aufweist, wobei jeder der Mehrzahl von Knoten eine der Mehrzahl von Parametervariationen repräsentiert. In einer anderen Ausführungsform mögen die Knoten des DAG basierend auf einem oder mehreren Kriterien gerichtet sein. Zum Beispiel mag jeder der Mehrzahl von Knoten des DAG basierend auf der mit jedem Knoten assoziierten Geschwindigkeit innerhalb des DAG gerichtet werden, wobei die Geschwindigkeit basierend auf den von dem Knoten repräsentierten Vorrichtungsparametervariationen bestimmt wird. In einer weiteren Ausführungsform mögen die Knoten in dem DAG so gerichtet sein, dass ein erster Knoten des DAG auf einen zweiten Knoten des DAG zeigen mag, wenn es bestimmt wird, dass der zweite Knoten des DAG in einer oder mehreren Hinsichten (zum Beispiel hinsichtlich Verarbeitungsgeschwindigkeit, etc.) definitiv schneller als der erste Knoten des DAG ist.
-
In einer Ausführungsform mag das simultane Bestimmen von Einstellungen für jede der Mehrzahl von Parametervariationen auch ein Justieren von einer oder mehreren Einstellungen aufweisen, die mit jeder der Mehrzahl von Parametervariationen assoziiert sind. Für jede der Mehrzahl von Parametervariationen mag zum Beispiel eine oder mehrere assoziierten Einstellungen justiert werden (zum Beispiel ein- oder ausgeschaltet, erhöht, reduziert etc.), um die größtmögliche Magnitude einer ersten Eigenschaft in Bezug auf eine zweite Eigenschaft zu bestimmen. In einer weiteren Ausführungsform mögen die für jede der Mehrzahl von Parametervariationen bestimmten Einstellungen diejenige Einstellung für die Mehrzahl von Parametervariationen enthalten, die die größtmögliche Magnitude der ersten Eigenschaft in Bezug auf die zweite Eigenschaft ergibt.
-
Das simultane Bestimmen von Einstellungen für jede der Mehrzahl von Parametervariationen mag in einer Ausführungsform zusätzlich ein sukzessives Justieren von einer einzigen Einstellung gleichzeitig für jede der Mehrzahl von Parametervariationen aufweisen. Zum Beispiel mag für jede der Mehrzahl von Parametervariationen eine erste Einstellung justiert werden, um die größtmögliche Magnitude einer ersten Eigenschaft in Bezug auf eine zweite Eigenschaft zu bestimmen. Des Weiteren mag eine zweite Einstellung, nachdem die erste Einstellung justiert wurde, zum Justieren bestimmt werden, wobei die zweite bestimmte Einstellung für jede der Mehrzahl von Parametervariationen justiert wird.
-
In einer weiteren Ausführungsform mag das simultane Bestimmen von Einstellungen für jede der Mehrzahl von Parametervariationen ein Starten bei einem Minimum-Einstellungsbetrag für jede der Mehrzahl von Parametervariationen und ein sukzessives Erhöhen einer einzigen Einstellung gleichzeitig für jede der Mehrzahl von Parametervariationen aufweisen. In noch einer weiteren Ausführungsform mag das simultane Bestimmen von Einstellungen für jede der Mehrzahl von Parametervariationen ein Starten bei einem Maximum-Einstellungsbetrag für jede der Mehrzahl von Parametervariationen und ein sukzessives Vermindern einer einzigen Einstellung gleichzeitig für jede der Mehrzahl von Parametervariationen aufweisen.
-
In einer noch weiteren Ausführungsform mag das simultane Bestimmen von Einstellungen für jede der Mehrzahl von Parametervariationen ein Starten bei sowohl einem Maximum-Einstellungsbetrag als auch einem Minimum-Einstellungsbetrag für jede der Mehrzahl von Parametervariationen und ein sukzessives Vermindern einer einzigen Einstellung von dem Maximum und Erhöhen einer einzigen Einstellung von dem Minimum gleichzeitig für jede der Mehrzahl von Parametervariationen aufweisen, bis optimale Einstellungen bestimmt worden sind, die die größtmögliche Magnitude der ersten Eigenschaft in Bezug auf die zweite Eigenschaft ergeben.
-
In einer Ausführungsform mag jede der Mehrzahl von Parametervariationen des Weiteren beeinflussen, wie die Einstellungen bestimmt werden. Zum Beispiel mag jede der Mehrzahl von Parametervariationen (oder deren jeweiligen Knoten in dem DAG) für eine erste bestimmte Einstellung stimmen, die für jede der Mehrzahl von Parametervariationen justiert wurde. In einem anderen Beispiel mag jede der Mehrzahl von Parametervariation (oder deren jeweiligen Knoten in dem DAG), nachdem die erste bestimmte Einstellung für jede der Mehrzahl von Parametervariationen justiert wurde, für eine zweite bestimmte Einstellung stimmen, die für jede der Mehrzahl von Parametervariationen justiert wurde.
-
In einer Ausführungsform mag jede der Mehrzahl von Parametervariationen noch ferner einen unterschiedlichen Einflussgrad in Bezug darauf haben, wie die Einstellungen bestimmt werden. Zum Beispiel mag ein Populationswert (engl. „population value”) mit jeder der Mehrzahl von Parametervariationen (oder deren jeweiligen Knoten in dem DAG) assoziiert sein. In einer weiteren Ausführungsform mag ein Populationswert, der mit einer bestimmten Parametervariation assoziiert ist, einer vorbestimmten Anzahl von Benutzern entsprechen, die diese Parametervariation (zum Beispiel innerhalb deren Vorrichtung installiert etc.) haben. In noch einer weiteren Ausführungsform mag ein Populationswert, der mit einer bestimmten Parametervariation assoziiert ist, einem vorbestimmten prozentualen Anteil von einer gesamten Anzahl von Benutzern entsprechen, die diese Parametervariation haben.
-
In einer noch weiteren Ausführungsform mag der Populationswert, der mit einer bestimmten Parametervariation assoziiert ist, eine Magnitude bzw. Größe (zum Beispiel eine Stärke etc.) des Einflusses beeinflussen, der von der bestimmten Parametervariation in Bezug darauf ausgeübt wird, wie die Einstellungen bestimmt werden. Zum Beispiel mag eine Stimme der bestimmten Parametervariation für eine bestimmte Einstellung, die für jede der Mehrzahl von Paramatereinstellungen justiert wurde, proportional mit dem Populationswert erhöht werden, der mit der bestimmten Parametervariation assoziiert ist (zum Beispiel durch Multiplizieren der Stimme mit dem Populationswert etc.). In dieser Art und Weise mögen populäre Parametervariationen, die von einer großen Benutzerbasis (engl. „user base”) verwendet werden, einen größeren Einfluss darauf haben, wie die Einstellungen bestimmt werden.
-
In einer Ausführungsform mag ein Indexwert (zum Beispiel ein Einflusswert etc.) auch mit jeder der Mehrzahl von Parametervariationen (oder deren jeweiligen Knoten in dem DAG) assoziiert sein. In einer weiteren Ausführungsform mag der Indexwert, der mit einer bestimmten Parametervariation assoziiert ist, einer Fähigkeit der bestimmten Parametervariation entsprechen, ein vorbestimmtes Softwareelement bei einer vorbestimmten Framerate auszuführen. Der Indexwert mag zum Beispiel gleich –1 sein, wenn die bestimmte Parametervariation das vorbestimmte Softwareelement bei der vorbestimmen Framerate nicht ausführen kann. In einem weiteren Beispiel mag der Indexwert gleich null sein, wenn die bestimmte Parametervariation das vorbestimmte Softwareelement unter Verwendung einer oder mehrerer Minimumeinstellungen bei der vorbestimmten Framerate ausführen kann. In einer noch weiteren Ausführungsform mag der Indexwert gleich (n – 1) sein, wenn die bestimmte Parametervariation das vorbestimmte Softwareelement unter Verwendung einer oder mehrerer Maximumeinstellungen bei der vorbestimmten Framerate ausführen kann, wobei n gleich der Anzahl von Parametern ist, die von jedem Knoten in dem DAG repräsentiert sind.
-
In einer noch weiteren Ausführungsform mag der Indexwert, der mit einer bestimmten Parametervariation assoziiert ist, eine Magnitude (zum Beispiel einer Stärke etc.) des Einflusses beeinflussen, der von der bestimmten Parametervariation in Bezug darauf ausgeübt wird, wie die Einstellungen bestimmt werden. Zum Beispiel mag eine Stimme von der bestimmten Parametervariation für eine bestimmte Einstellung, die für jede der Mehrzahl von Paramatereinstellungen justiert wurde, proportional mit dem Populationswert erhöht oder vermindert werden, der mit der bestimmten Parametervariation assoziiert ist (zum Beispiel durch Multiplizieren der Stimme mit dem Populationswert etc.). In dieser Art und Weise mögen Parametervariationen, die mit größerer Wahrscheinlichkeit die Einstellungen verwenden mögen, einen größeren Einfluss darauf haben, wie die Einstellungen bestimmt werden.
-
In einer Ausführungsform mag des Weiteren eine Uneinigkeit zwischen der Mehrzahl von Parametervariationen (oder deren jeweiligen Knoten in dem DAG) während Abstimmens für eine Justierung von bestimmten Einstellungen für jede der Mehrzahl von Parametervariationen identifiziert werden. Zum Beispiel mag ein Teil der Mehrzahl von Parametervariationen (oder deren jeweiligen Knoten in dem DAG) für eine bestimmte Einstellung stimmen, die für jede der Mehrzahl von Parametervariationen justiert werden soll, und ein anderer Teil der Mehrzahl von Parametervariationen (oder deren jeweiligen Knoten in dem DAG) mag für eine andere bestimmte Einstellung stimmen, die für jede der Mehrzahl von Parametervariationen justiert werden soll.
-
Als Antwort auf das Identifizieren der Uneinigkeit zwischen der Mehrzahl von Parametervariationen mag die Mehrzahl von Parametervariationen ferner in eine Mehrzahl von Subgruppen (zum Beispiel kleineren DAGs etc.) geteilt werden. Wenn zum Beispiel ein vorbestimmter prozentualer Anteil von der Mehrzahl von Parametervariationen (oder deren jeweiligen Knoten in dem DAG) für eine bestimmte Einstellung stimmen, die unterschiedlich von Einstellungen sind, für die andere Parametervariationen (oder deren jeweiligen Knoten in dem DAG) gestimmt haben, dann mag der vorbestimmte prozentuale Anteil von der Mehrzahl von Parametervariationen von dem DAG entfernt und in einem sub-DAG zur Einstellungsbestimmung platziert werden. In dieser Art und Weise mag Einstellungsbestimmung für die Parametervariationen in jeder Subgruppe effizienter bestimmt werden.
-
Illustrativere Informationen bezüglich verschiedener optionalen Architekturen und Merkmale, mit denen das vorhergehende Framework gemäß den Wünschen des Benutzers implementiert oder nicht implementiert werden mag, werden jetzt dargelegt. Es sollte dringend beachtet werden, dass die folgenden Informationen zu illustrativen Zwecken dargelegt werden und nicht als in irgendeiner Weise einschränkend ausgelegt werden sollen. Alle folgenden Merkmale mögen optional eingearbeitet werden, wobei andere beschriebenen Merkmale ausgeschlossen oder nicht ausgeschlossen werden mögen.
-
Die 2 zeigt ein Verfahren 200 zum simultanen Bestimmen einer Mehrzahl von optimalen Einstellungen, gemäß einer weiteren Ausführungsform. Das Verfahren 200 mag, als eine Option, im Kontext der Funktionalität von 1 ausgeführt werden. Das Verfahren 200 mag aber selbstverständlich in jeglicher gewünschter Umgebung implementiert werden. Es sollte auch beachtet werden, dass die oben erwähnten Definitionen im Laufe der folgenden Beschreibung Anwendung finden mögen.
-
Wie es in Operation 202 gezeigt ist, wird eine Mehrzahl von Parametervariationen identifiziert, die mit einer Vorrichtung assoziiert sind. In einer Ausführungsform mag die Mehrzahl von Parametervariationen solche Parametervariationen enthalten, die mit einem Display auf einem persönlichen Computer assoziiert sind. Die Mehrzahl von Parametervariationen mag zum Beispiel eine Bildschirmauflösung des persönlichen Computers enthalten. In einer weiteren Ausführungsform mag die Mehrzahl von Parametervariationen solche Parametervariationen enthalten, die mit dem Rendering von Grafik durch den persönlichen Computer assoziiert sind. Die Mehrzahl von Parametervariationen mag zum Beispiel Einzelheiten von der Systemhardware enthalten, die innerhalb der Vorrichtung installiert ist (zum Beispiel CPU-Einzelheiten, GPU-Einzelheiten, Motherboard-Einzelheiten, RAM-Einzelheiten etc), Einzelheiten von der Systemsoftware, die innerhalb der Vorrichtung installiert ist, etc.
-
Zusätzlich wird, wie es in Operation 204 gezeigt ist, ein DAG mit einer Mehrzahl von Knoten konstruiert, wobei jeder der Mehrzahl von Knoten einer der Mehrzahl von Parametervariationen entspricht. In einer Ausführungsform mögen die Knoten in dem DAG basierend auf einem oder mehreren Regeln gerichtet sein. Zum Beispiel mögen die Knoten innerhalb des DAG basierend auf der mit jedem Knoten assoziierten Geschwindigkeit gerichtet sein, wobei die Geschwindigkeit basierend auf den Parametervariationen bestimmt ist, die von dem Knoten repräsentiert ist. In einer anderen Ausführungsform mögen die Knoten in dem DAG so gerichtet sein, dass ein erster Knoten des DAG auf einen zweiten Knoten des DAG zeigen mag, wenn es bestimmt wird, dass der zweite Knoten des DAG in einer oder mehrerer Hinsichten (zum Beispiel in Bezug auf Verarbeitungsgeschwindigkeit etc.) eindeutig schneller als der erste Knoten des DAG ist
-
In einer Ausführungsform mag jeder Knoten in dem DAG auch eine eindeutige (engl. „unique”) Variation von einer Mehrzahl von möglichen Parametern repräsentieren, die mit der Vorrichtung assoziiert sind. Die Mehrzahl von möglichen Parametern, die mit der Vorrichtung assoziiert sind, mag zum Beispiel eine Vorrichtungs-CPU, eine Vorrichtungs-GPU und eine Vorrichtungs-Auflösung enthalten, und jeder Knoten in dem DAG mag eine eindeutige Kombination von einer bestimmten Vorrichtungs-CPU, Vorrichtungs-GPU und Vorrichtungs-Auflösung repräsentieren. In dieser Art und Weise signalisiert ein erster Knoten, der auf einen zweiten Knoten innerhalb des DAG zeigt, dass die Parametervariationen, die mit der Vorrichtung assoziiert und von dem zweiten Knoten in dem DAG repräsentiert sind, eine definitiv bessere Verarbeitungsgeschwindigkeit und Leistung bzw. Performance anbieten als die Mehrzahl von Parametervariationen, die mit der Vorrichtung assoziiert und von dem ersten Knoten in dem DAG repräsentiert sind.
-
Des Weiteren wird, wie es in der Operation 206 gezeigt ist, ein Populationswert, der mit jedem Knoten assoziiert ist, zu jedem Knoten zugeordnet. In einer Ausführungsform mag eine Mehrzahl von Populationswerten als Resultat von analytischen Operationen erlangt werden. In einer weiteren Ausführungsform mag die Mehrzahl von Populationswerten Telemetriedaten (engl. „telemetry data”) enthalten. In noch einer weiteren Ausführungsform mag die Mehrzahl von Populationswerten aus einer Populationswert-Datenbank abgerufen werden. In noch einer weiteren Ausführungsform mag der Populationswert, der zu einem Knoten zugeordnet ist, eine Benutzerpopulation repräsentieren, die eine Vorrichtung besitzt, welche die Parametervariationen hat, die diesem Knoten entsprechen.
-
Noch ferner wird ein mit jedem Knoten assoziierter Indexwert, wie es in der Operation 208 gezeigt ist, zu jedem Knoten assoziiert. In einer Ausführungsform mag eine Mehrzahl von Indexwerten für jeden Knoten durch Berechnen einer Fähigkeit der bestimmten von diesem Knoten repräsentierten Parametervariation, ein vorbestimmtes Softwareelement bei einer vorbestimmten Framerate auszuführen, bestimmt werden. In einer weiteren Ausführungsform mag ein Indexwert für einen Knoten basierend auf der Position des Knotens innerhalb des DAG bestimmt werden. Zum Beispiel mögen höhere indexwerte zu stärkeren Knoten in dem DAG zugeordnet werden.
-
Optimale Voreinstellungen werden auch, wie es in der Operation 210 gezeigt ist, für jede der Mehrzahl von Parametervariationen unter Verwendung der Populationswerte und der Indexwerte bestimmt. In einer Ausführungsform mögen die optimalen Voreinstellungen einen monotonen Satz von Voreinstellungen für die Vorrichtung enthalten. In einer weiteren Ausführungsform mag der monotone Satz von Voreinstellungen in Bezug auf ein oder mehrere Softwareelemente bestimmt werden, die auf der Vorrichtung installiert sind. Der monotone Satz von Voreinstellungen mag zum Beispiel für eine Instanz einer Anwendung (zum Beispiel einer Videospiel-Software, Media-Wiedergabesoftware etc.), die auf der Vorrichtung installiert ist, bestimmt werden. In noch einer weiteren Ausführungsform mag der monotone Satz von Voreinstellungen in Bezug auf ein oder mehrere Softwareelemente bestimmt werden, die auf der Vorrichtung installiert werden sollen (die zum Beispiel noch nicht auf der Vorrichtung installiert sind etc.).
-
In einer noch weiteren Ausführungsform mag der monotone Satz von Voreinstellungen (sowohl abhängige als auch unabhängige) Vorrichtungseinstellungen repräsentieren, die die Art und Weise beeinflussen, in welcher die Vorrichtung das eine oder mehrere Softwareelemente ausführt. Jeder der monotonen Sätze von Voreinstellungen mag zum Beispiel eine Farbtiefe von angezeigter Grafik, die von der Vorrichtung bereitgestellt wird, einen Texturmapping-Level von angezeigter Grafik, die von der Vorrichtung bereitgestellt wird, eine Texturkompression von angezeigter Grafik, die von der Vorrichtung bereitgestellt wird, ein Lighting-Modell, das von der Vorrichtung während der Anzeige von Grafik verwendet wird, etc. vorgeben (engl. „dictate”).
-
In einer Ausführungsform mag das Bestimmen der optimalen Voreinstellungen zusätzlich ein Bestimmen einer Mehrzahl von Performancelevels für die Vorrichtung aufweisen. Zum Beispiel mag eine Mehrzahl von absteigenden Performancelevels (zum Beispiel von einem Maximum-Performancelevel zu einem Minimum-Performancelevel etc.) für die Vorrichtung (zum Beispiel unter Verwendung einer oder mehrerer Benchmarks etc.) bestimmt werden, wobei jeder sukzessive Performancelevel indiziert, dass die Vorrichtung bei einer langsameren Rate, weniger effizient oder in einer sonst weniger erstrebenswerten Art und Weise performt (zum Beispiel ausführt, berechnet etc.), wenn mit dem vorhergehenden Level verglichen wird. In einer anderen Ausführungsform mag der Performancelevel mit einem Level von Ressourcen, die von der Vorrichtung verwendet werden, assoziiert werden. Der Performancelevel mag zum Beispiel eine Menge von Verarbeitungsressourcen, die von der Vorrichtung verwendet werden, eine Menge von Softwareressourcen, die von der Vorrichtung verwendet werden, eine Menge von Netzwerkressourcen, die von der Vorrichtung verwendet werden, eine von der Vorrichtung bereitgestellte Framerate etc. angeben.
-
Das Bestimmen der optimalen Voreinstellungen mag ferner in einer Ausführungsform ein Bestimmen einer Mehrzahl von Bildqualitätslevels für die Vorrichtung aufweisen. Eine Mehrzahl von ansteigenden Bildqualitätslevels (zum Beispiel von einem Minimum-Bildqualitätslevel zu einem Maximum-Bildqualitätslevel etc.) mag zum Beispiel für die Vorrichtung bestimmt werden, wobei jeder sukzessive Bildqualitätslevel angibt, dass die von der Vorrichtung angezeigte Bildqualität (zum Beispiel eine oder mehrere von Auflösung, Farbe, Detail etc.) sich erhöht, wenn mit dem vorhergehenden Level verglichen wird.
-
Noch ferner mag in einer Ausführungsform jeder der Mehrzahl von Performancelevels mit einem der Mehrzahl von Bildqualitätslevels für die Vorrichtung assoziiert sein. Jeder sukzessiv absteigende Performancelevel mag zum Beispiel mit einem sukzessiv ansteigenden Bildqualitätslevel assoziiert sein, so dass die von der Vorrichtung produzierte Bildqualität erhöht wird, während der Performance der Vorrichtung fällt ab. In einer weiteren Ausführungsform mag das Bildqualitätslevel für jeden der Mehrzahl von Performancelevels maximiert werden, basierend auf der Mehrzahl von Parametervariationen der Vorrichtung.
-
Für jeden bestimmten Performancelevel mag zum Beispiel eine Maximum-Bildqualität, die von der Vorrichtung bereitgestellt werden kann, bestimmt werden basierend auf der Mehrzahl von Parametervariationen der Vorrichtung. In einer Ausführungsform mag die Maximum-Bildqualität unter Verwendung eines Greedy-Algorithmus berechnet werden. In einer weiteren Ausführungsform mag die Maximum-Bildqualität unter Verwendung eines Exhaustionsalgorithmus berechnet werden. Die Maximum-Bildqualität für jeden Performancelevel mag aber selbstverständlich in jeglicher Art und Weise berechnet werden. In dieser Weise mögen die Voreinstellungen in Bezug auf Bildqualität monoton ansteigend und in Bezug auf Performance monoton absteigend sein.
-
In einer Ausführungsform mag die Maximum-Bildqualität auch unter Verwendung einer analogen Methode bestimmt werden. Eine Mehrzahl von Justierelementen, ein „Mehr-für-das-Geld”-Indikator (engl. „„bang-for-buck” indicator”) und ein „Fehler”-Indikator mögen bereitgestellt werden. In einem weiteren Beispiel mag jedes Justierelement eine Eigenschaft in der Anwendung repräsentieren. In einem noch weiteren Beispiel mag jedes Justierelement in diskreten Schritten justiert werden. In einer weiteren Ausführungsform mag der „Mehr-für-das-Geld”-Indikator einen Gesamtwert (zum Beispiel eine Bildqualität mal eine Framerate) für eine gegenwärtige Voreinstellung retournieren. In noch einer weiteren Ausführungsform mag der „Fehler”-Indikator nur und nur dann aktiviert werden, wenn die Voreinstellung ungültig ist. Dies mag erforderlich sein, wenn es abhängige Variable gibt und einige Voreinstellungen in der Tat ungültig sind.
-
Zwei Justierelemente A und B mögen zum Beispiel die Stufen (engl. „stops”) falsch und wahr haben, aber das Justierelement B mag dann und nur dann auf wahr gesetzt werden, wenn das Justierelement A auch auf wahr gesetzt ist. In einem solchen Falle mag der „Fehler”-Indikator nur dann aktiviert werden, wenn das Justierelement Element A auf falsch gesetzt ist und das Justierelement B auf wahr gesetzt ist. In einer weiteren Ausführungsform mag es angenommen werden, dass die Stufen so geordnet sind, dass ein Justieren eines Justierelements eine Stufe nach oben immer gleiche/bessere Bildqualität und gleiche/schlechtere Performance ergibt.
-
In einer Ausführungsform mag ein Monotoner-Satz-Bestimmungsalgorithmus des Weiteren, in einer simultanen Art und Weise für jede der Parametervariationen, damit starten, dass alle Justierelemente ganz nach unten auf ihre Minimum-Levels (das heißt, „Minset”-Werte) gedreht sind. Jetzt mag jedes Justierelement eins nach dem anderen temporär schrittweise genau eine Stufe nach oben auf seinen Maximum-Wert gedreht werden (zum Beispiel, wenn das Justierelement den ganzen Weg zu 10 von 10 gedreht ist, wird es nicht auf 11 drehen). Wenn der „Fehler”-Indikator nicht aktiviert wird, mag der Wert des „Mehr-für-das-Geld”-Indikators aufgezeichnet werden, bevor dieses Justierelement zurück auf seine ursprüngliche Position eingestellt wird. Wenn alle Justierelemente schrittweise aufgedreht worden sind, wird das Element, das den höchsten Wert des „Mehr-für-das-Geld”-Indikators erzeugte (und noch gültig war), permanent um eine Stufe justiert. Dieses Verfahren mag in dieser Art und Weise wiederholt werden, bis alle Justierelemente auf ihre Maximum-Einstellung (das heißt, ihre „Maxset”-Werte) sind. Die Sequenz von (# Stufen – # Justierelemente + 1) Voreinstellungen, die ausgewählt wurden, mag optimale monotone Voreinstellungen repräsentieren.
-
In einer weiteren Ausführungsform mag ein monotoner-Satz-Bestimmungsalgorithmus des Weiteren, in einer simultanen Art und Weise für jede der Parametervariationen, damit starten, dass alle Justierelemente ganz nach oben auf ihre Maximum-Levels (das heißt, „Maxset”-Werte) gedreht sind. Jetzt mag jedes Justierelement eins nach dem anderen temporär schrittweise genau eine Stufe nach unten gedreht werden. Wenn der „Fehler”-Indikator nicht aktiviert wird, mag der Wert des „Mehr-für-das-Geld”-Indikators aufgezeichnet werden, bevor dieses Justierelement zurück auf seine ursprüngliche Position eingestellt wird. Wenn alle Justierelemente schrittweise abgedreht worden sind, wird das Element, das den höchsten Wert des „Mehr-für-das-Geld”-Indikators erzeugte (und noch gültig war), permanent um eine Stufe justiert. Dieses Verfahren mag in dieser Art und Weise wiederholt werden, bis alle Justierelemente auf ihre Maximum-Einstellung (das heißt, ihre „Maxset”-Werte) sind.
-
Noch ferner mögen ein oder mehrere von den monotoner-Satz-Bestimmungsalgorithmen, in einer simultanen Art und Weise für jede der Parametervariationen, damit starten, dass alle Justierelemente ganz nach unten auf ihre Minimum-Levels gedreht sind, und ein oder mehrere von den monotoner-Satz-Bestimmungsalgorithmen mögen damit starten, dass alle Justierelemente ganz nach oben auf ihre Maximum-Levels gedreht sind. Schrittweise Justierungen mögen zusätzlich von jedem der Algorithmen gemacht werden, bis die Justierungen konvergieren. In dieser Art und Weise mögen optimale Voreinstellungen in einer beschleunigten Art und Weise bestimmt werden. Schnellere Konfigurationen mögen zusätzlich Voreinstellungen beeinflussen, die für sie wichtig sind, und mögen Voreinstellungen vermeiden, die mit langsameren Konfigurationen assoziiert sind.
-
In einer Ausführungsform mag jeder der Mehrzahl von Knoten in dem DAG auch darüber abstimmen, welches Justierelement manipuliert (zum Beispiel erhöht oder vermindert etc.) werden soll. Jeder der Mehrzahl von Knoten in dem DAG mag eine Stimme abgeben in Bezug darauf, welches Justierelement temporär schrittweise nach oben oder unten um genau eine Stufe gedreht werden soll, für jede der Parametervariationen, die den Knoten in dem DAG entsprechen. In einer weiteren Ausführungsform mag das Justierelement, dass die höchste Anzahl von Stimmen erhält, dafür ausgewählt werden, schrittweise nach oben oder nach unten für jeden Knoten gedreht zu werden.
-
In einer weiteren Ausführungsform mag die Stimme jedes Knotens gemäß dem Populationswert und Indexwert, die mit diesem Knoten assoziiert sind, justiert werden. Zum Beispiel mag die Stimme jedes Knotens proportional zu seinem Populationswert erhöht und gemäß seinem Indexwert erhöht oder vermindert werden. In dieser Art und Weise mögen populärere und relevantere Knoten in dem DAG eine größere Bedeutung während der Abstimmung erhalten.
-
Zusätzlich mögen optimale Voreinstellungen für jede der Mehrzahl von Parametervariationen simultan bestimmt werden, wobei solche Voreinstellungen von einer niedrigsten Einstellung (zum Beispiel „Minset” etc.) bis zu der höchsten Einstellung (zum Beispiel „Maxset” etc.) reichen und „Mehr-für-das-Geld” (zum Beispiel Bildqualität pro Performanceeinheit etc.) in jedem Schritt entlang des Weges maximieren mögen. Ferner mag die Ordnung der monotonen Mehrzahl von Voreinstellungen aufrechterhalten werden, so dass Monotonie der Performance und Bildqualität sichergestellt werden mag, wenn Parameter-Enumeranten (engl. „parameter enumerants”) jeweils in den gleichen geordnet sind. Ferner mögen optimale Voreinstellungen für die Mehrzahl von Parametervariationen bestimmt werden, so dass Bildqualität in Bezug auf Performancekosten für jede der optimalen Voreinstellungen maximiert werden mag.
-
3 zeigt einen beispielhaften Parameter-DAG 300, gemäß einer weiteren Ausführungsform. Der beispielhafte Parameter-DAG 300 mag, als eine Option, im Kontext der Funktionalität von den 1–2 ausgeführt werden. Der Parameter-DAG 300 mag aber selbstverständlich in jeglicher gewünschter Umgebung implementiert werden. Es sollte auch beachtet werden, dass die oben erwähnten Definitionen im Laufe der folgenden Beschreibung Anwendung finden mögen.
-
Der beispielhafte Parameter-DAG 300 weist, wie gezeigt, eine Mehrzahl von Knoten 302A–I auf, die jeweils einer eindeutigen Kombination von einem ersten Satz 304 von Variationen 306A–C eines ersten Bauelements (zum Beispiel von einem CPU-Typ, etc.) eines persönlichen Computers und einem zweiten Satz 308 von Variationen 310A–C eines zweiten Bauelements (zum Beispiel von einem GPU-Typ) des persönlichen Computers aufweist. In einer Ausführungsform mag der DAG 300 einen gerichteten Grafen aufweisen, der keine gerichteten Zyklen aufweist, die durch die Sammlung von Knoten 302A–I (zum Beispiel Eckpunkte (engl. „vertices”) etc.) und eine Mehrzahl von gerichteten Kanten 312 gebildet werden, so dass es nicht möglich ist, bei einem beliebigen Knoten in dem DAG 300 zu starten und eine Sequenz von Kanten zu folgen, die letztendlich eine Schleife zurück zu diesem Startknoten bildet.
-
Die Knoten in sowohl dem ersten Satz 304 von Variationen 306A–C des ersten Bauelements als auch in dem zweiten Satz 308 von Variationen 310A–C des zweiten Bauelements sind des Weiteren basierend auf Verarbeitungsgeschwindigkeit gerichtet, wobei langsamere Knoten auf schnellere Knoten zeigen. Von daher ist der erste Knoten 306A der langsamste Knoten in dem ersten Satz 304, der zweite Knoten 306B ist schneller als der erste Knoten 306A aber langsamer als der dritte Knoten 306C in dem ersten Satz 304, und der dritte Knoten 306C ist der schnellste Knoten in dem ersten Satz 304.
-
In einer Ausführungsform mag die Geschwindigkeit von jedem der Knoten 302A–I unter Verwendung von einem oder mehreren Algorithmen, Benchmark-Tests, Herstelleroffenbarungen (engl. „manufacturer disclosures”) etc. bestimmt werden. In einer weiteren Ausführungsform mag die Position der Knoten 302A–I innerhalb des DAG 300 (einschließlich welcher Knoten auf welche Knoten zeigen) durch Analysieren von Bauelement-Eigenschaften in jedem Knoten und Vergleichen der gesamten Verarbeitungsgeschwindigkeit von jedem der Knoten 302A–I bestimmt werden.
-
Die gerichteten Kanten 312 zeigen des Weiteren, wie gezeigt, von Knoten, die langsameren eindeutigen Kombinationen von Parametervariationen des persönlichen Computers entsprechen, auf Knoten, die eindeutig schnelleren eindeutigen Kombinationen von Parametervariationen des persönlichen Computers entsprechen. In dieser Art und Weise entspricht der untere Knoten 302I der schnellsten Kombination von Parametervariationen des persönlichen Computers, wobei der obere Knoten 302A der langsamsten eindeutigen Kombination von Parametervariation des persönlichen Computers entspricht.
-
4 stellt ein beispielhaftes System 400 dar, in welchem die verschiedenen Architektur und/oder Funktionalität der verschiedenen vorhergehenden Ausführungsformen implementiert werden mögen. Wie gezeigt, wird ein System 400 bereitgestellt, das zumindest einen Hostprozessor 401 aufweist, der mit einem Kommunikationsbus 402 verbunden ist. Das System 400 weist auch einen Hauptspeicher 404 auf. Steuerungslogik (Software) und Daten sind in dem Hauptspeicher 404 gespeichert, der die Form eines Speichers mit direktem Zugriff (RAM) annehmen mag.
-
Das System 400 weist auch einen Grafikprozessor 406 und ein Display 408, das heißt einen Computermonitor, auf. In einer Ausführungsform mag der Grafikprozessor 406 eine Mehrzahl von Shadermodulen (engl. „shader modules”), ein Rasterisierungsmodul (engl. „rasterization module”) etc. aufweisen. Jedes der vorhergehenden Module mag sich sogar auf einer einzigen Halbleiterplattform befinden, um eine Grafikverarbeitungseinheit (GPU) zu bilden.
-
In der vorliegenden Beschreibung mag eine einzige Halbleiterplattform auf einen alleinigen einheitlichen halbleiterbasierten integrierten Schaltkreis oder Chip verweisen. Es sollte beachtet werden, dass der Begriff einzige Halbleiterplattform auch auf Mehrchipmodule mit erhöhter Konnektivität, die Auf-dem-Chip-Operation (engl. „on-chip operation”) simuliert, verweisen mag und erhebliche Verbesserungen gegenüber der Verwendung einer konventionellen Implementierung mit zentralem Verarbeitungseinheit (CPU) und Bus erzielen mag. Die verschiedenen Module mögen selbstverständlich auch separat oder in verschiedenen Kombinationen von Halbleiterplattformen gemäß den Wünschen des Benutzers angeordnet werden.
-
Das System 400 mag auch einen sekundären Speicher 410 aufweisen. Der Sekundäre Speicher 410 weist zum Beispiel einen Festplattenlaufwerk und/oder einen entfernbaren Speicherlaufwerk (engl. „removable storage drive”), darstellend einen Floppy-Disk-Laufwerk, einen Magnetbandlaufwerk, einen Compact-Disk-Laufwerk etc. auf. Der entfernbare Speicherlaufwerk liest von und/oder schreibt zu einer entfernbaren Speichereinheit in einer wohlbekannten Art und Weise.
-
Computerprogramme oder Computersteuerungsalgorithmen mögen in dem Hauptspeicher 404 und/oder in dem sekundären Speicher 410 gespeichert werden. Solche Programme machen es, wenn sie ausgeführt werden, für das System 400 möglich, verschiedene Funktionen durchzuführen. Speicher 404, Speicher 410 und/oder jeglicher andere Speicher sind mögliche Beispiele von computerlesbaren Medien.
-
In einer Ausführungsform mag die Architektur und/oder Funktionalität der verschiedenen vorhergehenden Figuren im Kontext des Hostprozessors 401, des Grafikprozessors 406, eines integrierten Schaltkreises (nicht gezeigt), der zu zumindest einen Teil der Fähigkeiten von sowohl dem Hostprozessor 401 als auch dem Grafikprozessor 406 aufweist, eines Chipsatzes (das heißt, eine Gruppe von integrierten Schaltkreisen, die zum arbeiten konzipiert sind und als eine Einheit zum Ausführen verwandter Funktionen verkauft werden) und/oder übrigens auch irgendeines anderen integrierten Schaltkreises.
-
Die Architektur und/oder Funktionalität der verschiedenen vorhergehenden Figuren mögen aber auch in dem Kontext eines generellen bzw. allgemeinen Computersystems, eines Leiterplattensystems, eines Spielkonsolsystems, das für Unterhaltungszwecke dediziert ist, eines anwendungsspezifischen Systems und/oder jegliches anderen gewünschten Systems implementiert werden. Zum Beispiel, mag das System 400 die Form eines Desktopcomputers, eines Laptopcomputers und/oder jeglicher anderen Art von Logik annehmen. Das System 400 mag aber auch die Form verschiedener anderen Vorrichtungen annehmen, einschließlich einer persönlichen digitalen Assistenten-Vorrichtung (PDA), einer Mobiltelefon-Vorrichtung, eines Fernsehers etc., ohne auf diese begrenzt zu sein.
-
Das System 400 mag ferner, obwohl dies nicht gezeigt ist, an ein Netzwerk (zum Beispiel ein Telekommunikationsnetzwerk, ein lokales Netzwerk (LAN), ein drahtloses Netzwerk, ein Weitverkehrsnetz (WAN), wie das Internetz, ein Peer-to-Peer-Netzwerk, ein Kabelnetzwerk etc.) zu Kommunikationszwecken gekoppelt sein.
-
Während verschiedene Ausführungsformen oben beschrieben worden sind, sollte es verstanden werden, dass diese nur beispielhaft und nicht einschränkend dargestellt worden sind. Folglich sollte die Weite und der Umfang einer bevorzugten Ausführungsform nicht von einer jeglichen der oben beschriebenen Ausführungsformen begrenzt werden, sondern nur in Übereinstimmung mit den nachfolgenden Ansprüchen und deren Äquivalenten definiert werden.