Rechtsprechung / BPatG / 2023
BPatG Beschluss vom 02.03.2023 – 17 W (pat) 5/20
17. Senat · ECLI:DE:BPatG:2023:020323B17Wpat5.20.0
BUNDESPATENTGERICHT
17 W (pat) 5/20 _______________________
(Aktenzeichen)
B E S C H L U S S
In der Beschwerdesache
betreffend die Patentanmeldung 10 2017 213 160.8
…
hat der 17. Senat (Technischer Beschwerdesenat) des Bundespatentgerichts am
2. März 2023
unter Mitwirkung des Vorsitzenden Richters Dipl.-Phys.
Dr. Morawek, des Richters Dipl. Ing. Baumgardt, des Richters Dipl.-Ing. Hoffmann
und der Richterin Akintche
ECLI:DE:BPatG:2023:020323B17Wpat5.20.0
beschlossen:
Auf die Beschwerde der Anmelderin wird der Beschluss der
Prüfungsstelle für Klasse G 06 F des Deutschen Patent- und
Markenamts vom 20. Februar 2018 aufgehoben und das Patent mit
folgenden Unterlagen erteilt:
Patentansprüche 1 bis 14,
Beschreibung Seiten 1 bis 65 (mit Korrektur eines offensichtlichen Schreibfehlers auf Seite 1, vorletzte Zeile), und
22 Blatt Zeichnungen mit Figuren 1 bis 13,
jeweils wie eingereicht am 28. Februar 2023.
G r ü n d e
I.
Die vorliegende Patentanmeldung, welche die Prioritäten dreier Voranmeldungen
in den USA vom 25. August 2016, vom 14. September 2016 und vom
1. Februar 2017 in Anspruch nimmt, wurde am 31. Juli 2017 beim Deutschen
Patent- und Markenamt in englischer Sprache eingereicht. In der nachgereichten
deutschen Übersetzung trägt sie die Bezeichnung:
„ Kompilierung für knotenvorrichtungs-GPU-basierte Parallelverarbeitung “.
Die Anmeldung war in der Anhörung vom 20. Februar 2018 durch Beschluss der
Prüfungsstelle für Klasse G 06 F des Deutschen Patent- und Markenamts mit der
Begründung zurückgewiesen worden, dass die Gegenstände der
jeweiligen
Patentansprüche 1 nach dem (damals geltenden) Hauptantrag sowie den
Hilfsanträgen 2 bis 5 nicht auf einer erfinderischen Tätigkeit des Fachmanns
beruhten, soweit sie ein technisches Problem mit technischen Mitteln lösten und
damit eine Erfindung auf Gebieten der Technik beträfen; Patentanspruch 1 nach
dem Hilfsantrag 1 sei zurückzuweisen gewesen, da er den Gegenstand der
Anmeldung unzulässig erweitere.
Gegen diesen Beschluss ist die Beschwerde der Anmelderin gerichtet. Auf einen
Zwischenbescheid des Senats vom 5. April 2022 hin hat sie eine überarbeitete
Fassung der Patentansprüche eingereicht, um die unter Schutz zu stellende
Erfindung klar und deutlich zu umschreiben und um sich gegen den bekannten
Stand der Technik abzugrenzen; die Beschreibung und die Zeichnungen wurden
daran angepasst. Mit der Eingabe vom 28. Februar 2023 stellt die Anmelderin den
Antrag,
den Zurückweisungsbeschluss der Prüfungsstelle aufzuheben und
ein Patent zu erteilen auf Basis der folgenden Unterlagen:
Patentansprüche 1 bis 14,
Beschreibung Seiten 1 bis 65, und
22 Blatt Zeichnungen mit Figuren 1 bis 13,
jeweils wie eingereicht am 28. Februar 2023.
Das geltende Patentbegehren, hier bezüglich des Hauptanspruchs mit einer
möglichen Gliederung versehen, lautet:
V0
1. Computerimplementiertes Verfahren zur wenigstens teilweise parallelen Durchführung von Aufgaben von Analyseroutinen mittels einer Mehrzahl von Knotenvorrichtungen
(1500), umfassend:
V1
Empfangen einer Analyseroutine, die ausführbare Anweisungen für eine oder mehrere Aufgaben in Form von
Taskroutinen zur Ausführung durch wenigstens eine zentrale
Verarbeitungseinheit (Central Processing Unit, CPU) einer
Knotenvorrichtung umfasst, die mit wenigstens einem Datensatz durchgeführt werden sollen,
V2
Analysieren eines aktuellen Status von Ressourcen von
wenigstens einer Knotenvorrichtung der Mehrzahl von
Knotenvorrichtungen, um eine Verfügbarkeit von wenigstens
einer Grafikverarbeitungseinheit (Graphics Processing Unit,
GPU) der wenigstens einen Knotenvorrichtung
zu
bestimmen,
V2.1
wobei die genannten Ressourcen zumindest eine CPU und
zumindest eine GPU umfassen, und
V3
wenn das Bestimmen ergibt, dass wenigstens eine GPU der
wenigstens einen Knotenvorrichtung für die Zuweisung einer
ersten Aufgabe der Analyseroutine in Form einer ersten
Taskroutine verfügbar ist,
V3.1
Analysieren der ersten Taskroutine, ob diese in eine GPU-
Taskroutine zur Ausführung durch die wenigstens eine GPU
kompiliert werden kann, so dass die wenigstens eine GPU
mehrere Instanzen der ersten Aufgabe der Analyseroutine
wenigstens teilweise parallel durchführen kann,
V3.1.1 wobei das Analysieren umfasst, ob die erste Taskroutine
eine Anweisung umfasst, die eine Kompilierung zur
Erzeugung einer GPU-Taskroutine verhindert,
V3.1.2 und ob Eingaben und Ausgaben der ersten Taskroutine
Abhängigkeiten aufweisen, die eine Kompilierung zur
Erzeugung einer GPU-Taskroutine verhindern,
V3.2
wenn das Analysieren ergibt, dass die erste Taskroutine in
eine GPU-Taskroutine zur Ausführung durch die wenigstens
eine GPU kompiliert werden kann,
V3.2.1 Verwenden einer Umwandlungsregel, um wenigstens eine
Anweisung der ersten Taskroutine in wenigstens eine entsprechende Anweisung der GPU-Taskroutine umzuwandeln;
V3.2.2 Kompilieren
der wenigstens
einen
entsprechenden
Anweisung der GPU-Taskroutine zur Ausführung durch die
wenigstens eine GPU;
V3.2.3 Zuweisen einer Datensatzpartition des Datensatzes an die
wenigstens eine Knotenvorrichtung, um Zugriff auf die
Datensatzpartition durch die wenigstens eine GPU zu ermöglichen, und
V3.2.4 Zuweisen einer Durchführung der GPU-Taskroutine an die
wenigstens eine Knotenvorrichtung, um die Durchführung
der mehreren Instanzen der ersten Aufgabe mit der Datensatzpartition durch die wenigstens eine GPU mittels der
GPU-Taskroutine zu ermöglichen.
2. Computerimplementiertes Verfahren nach Anspruch 1, wobei
die genannten Ressourcen Speicherplatz innerhalb wenigstens eines Speichers der wenigstens einen Knotenvorrichtung umfassen.
3. Computerimplementiertes Verfahren nach Anspruch 1 oder
2, wobei das Analysieren der ersten Taskroutine, ob diese in
eine GPU-Taskroutine zur Ausführung durch die wenigstens
eine GPU kompiliert werden kann, umfasst:
Bestimmen, ob die Anweisung der ersten Taskroutine in
einem Satz von Anweisungen eingeschlossen ist, die nicht in
wenigstens eine Anweisung umgewandelt werden können,
die von der wenigstens einen GPU ausgeführt werden kann;
und
in Reaktion auf das Bestimmen, dass die Anweisung der
ersten Taskroutine nicht im Satz von Anweisungen eingeschlossen ist, Bestimmen, ob die Anweisung der ersten
Taskroutine in der ersten Taskroutine in einer Weise verwendet wird, die eine Umwandlung in wenigstens eine
Anweisung verhindert, die von der wenigstens einen GPU
ausgeführt werden kann.
4. Computerimplementiertes Verfahren nach Anspruch 1 oder
2, wobei das Umwandeln der wenigstens einen Anweisung
der ersten Taskroutine in die wenigstens eine entsprechende
Anweisung der GPU-Taskroutine umfasst,
die wenigstens eine Anweisung der ersten Taskroutine von
einer ersten Programmiersprache in die wenigstens eine
entsprechende Anweisung in einer zweiten Programmiersprache gemäß der verwendeten Umwandlungsregel umzuwandeln.
5. Computerimplementiertes Verfahren nach Anspruch 2,
wobei:
der wenigstens eine Speicher der wenigstens einen Knotenvorrichtung einen ersten flüchtigen Speicher, der kommunikativ mit der wenigstens einen CPU gekoppelt ist, und einen
zweiten flüchtigen Speicher, der kommunikativ mit der
wenigstens einen GPU gekoppelt ist, umfasst;
das Zuweisen der Datensatzpartition des Datensatzes an die
wenigstens eine Knotenvorrichtung, um Zugriff auf die
Datensatzpartition durch die wenigstens eine GPU zu ermöglichen, umfasst, dass veranlasst wird, dass die Datensatzpartition innerhalb des zweiten flüchtigen Speichers gespeichert wird.
6. Computerimplementiertes Verfahren nach Anspruch 5,
wobei:
wenn das Bestimmen ergibt, dass keine GPU der wenigstens
einen Knotenvorrichtung für die Zuweisung einer ersten Aufgabe der Analyseroutine in Form einer ersten Taskroutine
verfügbar ist, das Verfahren umfasst:
Unterlassen des Analysierens der ersten Taskroutine, ob
diese in eine GPU-Taskroutine zur Ausführung durch die
wenigstens eine GPU kompiliert werden kann;
Zuweisen der Datensatzpartition des Datensatzes an die
wenigstens eine Knotenvorrichtung, um eine Speicherung
der Datensatzpartition
innerhalb des ersten
flüchtigen
Speichers zu veranlassen und um Zugriff auf die Datensatzpartition durch die wenigstens eine CPU zu ermöglichen;
Kompilieren der ersten Taskroutine zur Ausführung durch die
wenigstens eine CPU; und
Zuweisen einer Durchführung der ersten Aufgabe der Analyseroutine mit der Datensatzpartition an die wenigstens eine
Knotenvorrichtung, um die Durchführung der ersten Aufgabe
mit der Datensatzpartition durch die wenigstens eine CPU zu
ermöglichen.
7. Computerimplementiertes Verfahren nach Anspruch 1, 2
oder 6, wobei:
eine Koordinierungsvorrichtung den Betrieb der Mehrzahl
von Knotenvorrichtungen koordiniert;
die Koordinierungsvorrichtung wiederkehrend Aktualisierungen für den aktuellen Status von jeder Knotenvorrichtung der
Mehrzahl von Knotenvorrichtungen empfängt; und
das Analysieren eines aktuellen Status von Ressourcen, um
eine Verfügbarkeit von wenigstens einer GPU der wenigstens einen Knotenvorrichtung zu bestimmen, umfasst:
das Identifizieren, durch die Koordinierungsvorrichtung, einer
Knotenvorrichtung der Mehrzahl von Knotenvorrichtungen,
die eine GPU umfasst, die im aktuellen Status als verfügbar
angezeigt wird.
8. Computerimplementiertes Verfahren nach Anspruch 7, wobei
das Zuweisen einer Datensatzpartition des Datensatzes an
die wenigstens eine Knotenvorrichtung umfasst:
Analysieren, durch die Koordinierungsvorrichtung, von Metadaten, die indikativ für strukturelle Merkmale des Datensatzes sind, um eine Beschränkung der Art und Weise zu
identifizieren, wie der Datensatz in die Mehrzahl von Datensatzpartitionen aufgeteilt werden kann,
wobei die Beschränkung in einer Angabe einer kleinsten
atomaren Einheit von Daten innerhalb des Datensatzes
und/oder
in einer Spezifikation eines Partitionierungsschemas besteht; und
Ableiten einer Aufteilung des Datensatzes in die Mehrzahl
von Datensatzpartitionen wenigstens teilweise basierend auf
der Beschränkung.
9. Computerimplementiertes Verfahren nach Anspruch 8,
umfassend:
Abrufen der Metadaten aus wenigstens einer Speichervorrichtung, in welcher der Datensatz gespeichert ist; und
Übertragen, an die wenigstens eine Knotenvorrichtung oder
die wenigstens eine Speichervorrichtung, einer Anzeige über
die Zuweisung der Datensatzpartition, um eine Übertragung
der Datensatzpartition von der wenigstens einen Speichervorrichtung an die wenigstens eine Knotenvorrichtung zu
veranlassen.
10. Computerimplementiertes Verfahren nach Anspruch 1 oder
2, umfassend:
Analysieren einer zweiten Taskroutine der Analyseroutine,
ob diese in eine GPU-Taskroutine zur Ausführung durch die
wenigstens eine GPU kompiliert werden kann, so dass die
wenigstens eine GPU mehrere Instanzen einer zweiten Aufgabe der Analyseroutine wenigstens teilweise parallel durchführen kann,
wobei das Analysieren der zweiten Taskroutine umfasst, ob
eine Abhängigkeit zwischen Eingaben und Ausgaben der
mehreren Instanzen der zweiten Aufgabe vorhanden ist, die
eine Kompilierung zur Erzeugung einer GPU-Taskroutine
verhindert,
wobei die zweite Taskroutine zur Ausführung durch die
wenigstens eine CPU erzeugt wurde, um eine zweite Aufgabe der Analyseroutine durchzuführen; und
wenn das Analysieren ergibt, dass die zweite Taskroutine
nicht kompiliert werden kann, um die GPU-Taskroutine zu
erzeugen:
Kompilieren der zweiten Taskroutine zur Ausführung durch
die wenigstens eine CPU; und
Zuweisen einer Durchführung der zweiten Aufgabe der Analyseroutine mit der Datensatzpartition an die wenigstens eine
Knotenvorrichtung, um die Durchführung der zweiten Aufgabe mit den Datensatzpartitionen durch die wenigstens eine
CPU zu ermöglichen.
11. Computerimplementiertes Verfahren nach Anspruch 10,
umfassend Analysieren der Analyseroutine, um eine
Reihenfolge von Aufgaben der Analyseroutine zu bestimmen, wobei die Reihenfolge der Aufgaben eine relative
Reihenfolge der ersten und zweiten Aufgaben umfasst.
12. Computerprogrammprodukt, das in einem nicht-flüchtigen
maschinenlesbaren Speichermedium ausgeführt ist, wobei
das Computerprogrammprodukt Anweisungen umfasst, die
in der Lage sind, einen Prozessor zu veranlassen, Operationen gemäß einem Verfahren nach einem der Ansprüche 1
bis 11 durchzuführen.
13. Vorrichtung,
umfassend
einen Prozessor und einen
Speicher, um Anweisungen zu speichern, die, wenn sie
durch den Prozessor ausgeführt werden, den Prozessor veranlassen, Operationen gemäß einem Verfahren nach einem
der Ansprüche 1 bis 11 durchzuführen.
14. Vorrichtung nach Anspruch 13, wobei:
das Analysieren des aktuellen Status von Ressourcen der
wenigstens einen Knotenvorrichtung, um eine Verfügbarkeit
von wenigstens einer GPU der wenigstens einen Knotenvorrichtung zu bestimmen, das Analysieren durch eine CPU
dieser Knotenvorrichtung umfasst, ob wenigstens eine GPU
dieser Knotenvorrichtung aktuell verfügbar ist.
Eine konkrete Aufgabe ist in der Anmeldung nicht angegeben.
Im Zurückweisungsbeschluss (Seite 10 oben / Mitte) war festgestellt worden, die
Anmeldung beschäftige sich mit der effektiven Nutzung der verteilten Rechenressourcen eines heterogenen Grids zur Ausführung von Algorithmen zur Analyse
großer Datenmengen. Das objektive technische Problem beim Gegenstand des
Anspruchs 1 des Hauptantrags sei es, eine Vorrichtung zu schaffen, die für die
Ausführung einer Analyseroutine eine möglichst performante Hard- und Softwarearchitektur zur Verfügung stellt.
In der Beschwerdebegründung (Seite 2 Absatz 3) wurde vorgetragen, die Erfinder
hätten eine sehr spezielle Art und Weise ersonnen, wie die Arbeitsverteilung
zwischen CPUs und GPUs möglichst effizient zur Parallelverarbeitung strukturiert
werden könne.
II.
Die Beschwerde wurde rechtzeitig eingelegt und ist auch sonst zulässig. Sie hat
Erfolg, da das nunmehr geltende Patentbegehren durch den bekannt gewordenen
Stand der Technik nicht vorweggenommen oder nahegelegt ist und auch die übrigen Kriterien für eine Patenterteilung erfüllt sind (PatG §§ 1 bis 5, § 34).
1.
Die vorliegende Patentanmeldung betrifft die Nutzung verteilter Rechenressourcen eines heterogenen Grids (Netz von Rechenknoten),
in welchem
sowohl Zentralprozessoren (Central Processing Unit, CPU) als auch Grafik-Prozessoren (Graphics Processing Unit, GPU) zur Durchführung von Berechnungen
verfügbar sind.
1.1
In der Beschreibungseinleitung (Abs. [0002] – diese und die folgenden
Absatzangaben beziehen sich auf die deutsche Übersetzung gemäß Offenlegungsschrift) ist zunächst ausgeführt, dass es für die Analyse von großen
Datensätzen üblich geworden sei, Datennetze (Grids) mit zahlreichen Rechenknoten einzusetzen, wobei die einzelnen „Aufgaben“ von Analyseroutinen soweit
wie möglich parallel über die Knoten verteilt würden. Für diese Verteilung wird
eine Koordination benötigt, wobei es gilt, konkurrierende Ziele wie eine möglichst
stetige Nutzung der einzelnen Ressourcen eines Knotens oder eine möglichst
effektive Nutzung von Rechenleistung, Speicherkapazität und Netz-Bandbreite
aufeinander abzustimmen.
Gemäß Abs. [0064] ist die Anmeldung auf Techniken gerichtet, welche die effektive Verwendung von Verarbeitungs-, Speicher- und Netzbandbreitenressourcen
innerhalb eines Gitters von Knotenvorrichtungen verbessern, um zu ermöglichen,
dass einzelne Analyseroutinen in kürzerer Zeit abgeschlossen werden.
Der neue Patentanspruch 1 betrifft ein „Computerimplementiertes Verfahren“,
welches ausgeht von vorhandenen „Analyseroutinen“ (1210 – dieses und die
folgenden Bezugszeichen sind zur Erläuterung des Patentanspruchs aus der
Beschreibung entnommen) zur Datenanalyse großer Datensätze, z.B. statistische
Analysen, Auswertungen von Hypothesen o.ä. (siehe z.B. Abs. [0181]), wobei die
Analyseroutinen in mehrere „Aufgaben“ gegliedert sind, zu welchen „Taskroutinen“
(1211) existieren (vgl. etwa Abs. [0065]: „Die Koordinierungsvorrichtung kann auch
eine Analyseroutine empfangen, die ausführbare Anweisungen für mehrere
Taskroutinen für mehrere Aufgaben umfasst, die mit wenigstens einem Datensatz
durchgeführt werden sollen…“; Abs. [0209]; und Anspruchs-Merkmale V1, V3).
Für diese Analyseroutinen gibt die Anmeldung keine näheren Spezifikationen.
Generell wird davon ausgegangen, dass die Analyseroutinen
in einer
Programmiersprache geschrieben sind, die nicht speziell auf die Besonderheiten
der verfügbaren CPUs und GPUs abgestimmt ist (vgl. etwa Abs. [0071]); sie liegen
jedoch „in Form von Taskroutinen zur Ausführung durch wenigstens eine zentrale
Verarbeitungseinheit (Central Processing Unit, CPU)“ vor (Merkmal V1).
Zur Bearbeitung steht ein Netzwerk von Rechenknoten zur Verfügung, wobei die
einzelnen Knoten grundsätzlich unterschiedliche „Ressourcen“ wie CPU, GPU und
Speicherplatz bereitstellen (vgl. Merkmale V2, V2.1, Unteranspruch 2). So können
die Rechenknoten eine oder mehrere CPUs (1550) und teilweise zusätzlich eine
oder mehrere GPUs (1650) enthalten (vgl. Abs. [0064], [0066] / [0067]; Abs. [0075]
mit Bezug auf eine unterschiedliche Speicherausstattung).
Dem Fachmann war bekannt, dass CPUs und GPUs bezüglich der Abarbeitung
von Programm-Routinen unterschiedliche Eigenschaften aufweisen. So sind CPUs
i.d.R besser geeignet für die serielle Verarbeitung von Taskroutinen, die verschiedene Eingabe-/Ausgabeoperationen und/oder Verzweigungsoperationen enthalten; im Gegensatz dazu sind GPUs i.d.R besser geeignet für die parallele Verarbeitung von Taskroutinen, die einen relativ begrenzten Satz von Anweisungen
für mathematische und/oder bitweise Operationen umfassen und insbesondere
unabhängig voneinander ausgeführt werden können (vgl. Abs. [0066], [0213]); mit
„hochgradig parallel“ („embarrassingly parallel“) sind Aufgaben bezeichnet, bei
denen keine Abhängigkeiten zwischen Instanzen der Aufgabe bestehen, so dass
eine parallele Verarbeitung einer relativ großen Menge von Instanzen der Aufgabe
leicht möglich ist.
Um nun die Analyseroutinen möglichst optimal abarbeiten zu lassen, ist eine
Koordinierungsvorrichtung (1300) vorgesehen, welche die Taskroutinen (1211)
nach bestimmten Kriterien an die Rechenknoten verteilt (vgl. Abs. [0076]). Gemäß
Abs. [0183] kann jeder Rechenknoten (1500) eine oder mehrere CPUs (1550) und
zugeordneten Speicher (1560) insbes. für CPU-Taskroutinen (1571) enthalten.
Ferner kann „wenigstens eine Teilmenge“ der Rechenknoten zusätzlich einen
Grafikcontroller 1600 besitzen, der eine oder mehrere GPUs (1650) und Speicher
(1660) insbes. für GPU-Taskroutinen (1671) enthält (siehe Abs. [0184] sowie Fig.
11A / 11B). Die genannten Rechenknoten werden in den Patentansprüchen
durchgängig und
in der Beschreibung meistens als „Knotenvorrichtungen“
bezeichnet.
1.2
Der geltende Patentanspruch 1 gibt eine Lehre für die Arbeit einer solchen
Koordinierungsvorrichtung, genauer: für die Koordinierung des Betriebs mehrerer
Knotenvorrichtungen, um wenigstens teilweise eine parallele Durchführung von
Aufgaben von Analyseroutinen zu verwirklichen (Merkmal V0), die mit wenigstens
einem Datensatz durchgeführt werden sollen. Dazu umfassen die vorgegebenen
Analyseroutinen ausführbare Anweisungen in Form von Taskroutinen, welche zur
Ausführung durch wenigstens eine zentrale Verarbeitungseinheit
(Central
Processing Unit, CPU) einer Knotenvorrichtung vorgesehen sind (Merkmal V1).
Ein erster Arbeitsschritt (V2 / V2.1) betrifft das Analysieren eines aktuellen Status
von Ressourcen (CPU, GPU) von wenigstens einer Knotenvorrichtung, insbesondere ob dort eine Grafikverarbeitungseinheit (Graphics Processing Unit, GPU)
verfügbar ist.
Wenn sich für eine der Knotenvorrichtungen ergibt, dass dort wenigstens eine
GPU für die Zuweisung einer ersten Aufgabe der Analyseroutine in Form einer
ersten Taskroutine verfügbar ist (Merkmal V3), werden folgende Schritte unternommen:
Die erste Taskroutine, welche in einer Form zur Ausführung durch eine CPU
vorliegt (Merkmal V1), wird analysiert, ob sie in eine GPU-Taskroutine (d.h. zur
Ausführung durch eine GPU) kompiliert werden kann, so dass dort mehrere
Instanzen der ersten Aufgabe der Analyseroutine wenigstens teilweise parallel
durchgeführt werden können (Merkmal V3.1). Die Analyse umfasst zwei Kriterien:
–
enthält die erste (CPU-) Taskroutine eine Anweisung, die eine Kompilierung
in eine GPU-Taskroutine verhindert? (Merkmal V3.1.1 – siehe dazu z.B.
Abs. [0069], Abs. [0216] der Offenlegungsschrift)
– weisen Eingaben und Ausgaben der ersten Taskroutine Abhängigkeiten
auf, die eine Kompilierung in eine GPU-Taskroutine verhindern? (Merkmal
V3.1.2 – siehe dazu z.B. Abs. [0209] / Abs. [0210])
Wenn diese Analyse ergibt, dass die vorliegende CPU-Taskroutine in eine GPU-
Taskroutine kompiliert werden kann (Merkmal V3.2), dann wird die GPU mit der
Durchführung der Aufgabe beauftragt (vgl. z.B. Figur 20). Konkret löst ein
positives Analyse-Ergebnis folgende Schritte aus (vgl. auch Figur 11A / 11B, Figur
12, Figur 15A / 15B):
Merkmal V3.2.1 / V3.2.2: Mittels einer Umwandlungsregel sollen bestimmte
Anweisungen der CPU-Taskroutine in entsprechende GPU-Anweisungen umgewandelt und zu einer GPU-Taskroutine kompiliert werden (vgl. z.B. Abs. [0070],
Abs. [0212]);
Merkmal V3.2.3: Der (in Merkmal V3 bestimmten) Knotenvorrichtung wird eine
Datensatzpartition (1131) des zu verarbeitenden Datensatzes (1130) zugewiesen,
um der GPU den Zugriff darauf zu ermöglichen (vgl. z.B. Abs. [0236]);
Merkmal V3.2.4: Der Knotenvorrichtung wird die Durchführung der kompilierten
GPU-Taskroutine zugewiesen, so dass die GPU diese in mehreren Instanzen
parallel abarbeiten kann (vgl. z.B. Abs. [0198] / [0199] und Fig. 13 bis 15, Fig. 19 /
20).
Im Ergebnis ermöglicht die beanspruchte Lehre eine automatische Prüfung, inwieweit die vorgegebene Analyseroutine durch Parallelverarbeitung mittels GPUs
bearbeitet werden kann, und ggf. eine automatische Kompilierung in GPU-Code.
Durch die Kompilierung in einen GPU-Code wird erreicht, dass die Analyseroutine
deutlich schneller und effizienter ausgeführt werden kann (vgl. Abs. [0221] / [0222]
mit Tabelle der Laufzeiten), ohne dass das Programmier-Personal die Fähigkeiten
oder Schulung benötigt, um die Taskroutinen selbst in einer GPU-Programmiersprache zu schreiben (siehe Abs. [0223]). Die Umwandlung in GPU-Code kann
eine Übersetzung in eine andere Programmiersprache bedeuten, aber auch „nur“
eine Anpassung des Codes in derselben Programmiersprache speziell für den
Ablauf auf der verwendeten GPU (vgl. z.B. Abs. [0218]).
Daraus ergibt sich als das gelöste Problem, einen vorgegebenen Programm-Ablauf (für aufwändige Analyseprogramme) bei einer Verteilung auf mehrere unterschiedliche Rechenknoten automatisch für die einzelnen Rechenknoten in einen
Programm-Code zu übersetzen, welcher jeweils die vorhandenen Ressourcen des
Rechenknotens bestmöglich ausnutzt.
Als Fachmann, der mit einer solchen Aufgabe betraut wird, sieht der Senat – in
weitgehender Übereinstimmung mit den Überlegungen der Prüfungsstelle, siehe
Zurückweisungsbeschluss Seite 10 oben – einen Informatiker mit Hochschulabschluss an, der über eine mehrjährige Berufserfahrung auf dem Gebiet der Programmierung für verteilte Rechen-Netze, insbesondere unter Nutzung von Grafik-
Prozessoren zur Parallelverarbeitung, verfügt.
2.
Das geltende Patentbegehren ist zulässig. Die Patentansprüche und die
überarbeitete Beschreibung bleiben innerhalb des Rahmens der ursprünglichen
Offenbarung. Auch andere Mängel liegen nicht vor.
2.1
Der Senat hat die von der Anmelderin zusammen mit der Beschwerdebegründung als (damaligen) Hauptantrag eingereichte Anspruchsfassung (Ansprüche 1 bis 30), die mit der Übersetzung der Ansprüche gemäß Offenlegungsschrift übereinstimmt, im Zwischenbescheid vom 5. April 2022 als mängelbehaftet
bezeichnet, weil die unter Schutz zu stellende Erfindung diesen Patentansprüchen
nicht klar und deutlich entnehmbar war. Er hat festgestellt, dass die Lehre der
Anmeldung und insbesondere der damals geltenden Patentansprüche an vielen
Stellen ungenau, mehrdeutig oder teilweise auch gar nicht im Detail nachvollziehbar ist. Im Zwischenbescheid wurden zahlreiche Fragen dazu gestellt, wobei auf
konkrete Unklarheiten und Widersprüche hingewiesen wurde.
Denn im Patent-Erteilungsverfahren ist für Patentansprüche zu sorgen, die die
unter Schutz gestellte Erfindung klar und deutlich umschreiben (BGH GRUR 1988,
757 – Düngerstreuer, Abschnitt V Absatz 3) und geeignet sind, den Anmeldungsgegenstand eindeutig zu kennzeichnen und vom Stand der Technik abzugrenzen
(BGH GRUR 1979, 461 – Farbbildröhre, II. 2d). Der Schutzbereich muss, ggf.
unter Auslegung mittels der Beschreibung, so klar und eindeutig definiert sein,
dass er „für Außenstehende hinreichend sicher vorhersehbar ist” (BGH GRUR
1989, 903 – Batteriekastenschnur, III.2.). Die Beseitigung vermeidbarer Unklarheiten hat im Prüfungsverfahren zu erfolgen (BGH GRUR 2013, 1210 – Dipeptidyl-
Peptidase-Inhibitoren, III. 1a)).
Die Anmelderin hat daraufhin die Patentansprüche überarbeitet und eine neue
Anspruchsfassung vorgelegt.
2.2
Den mit der Anmeldung ursprünglich formulierten Patentansprüchen kommt
im Rahmen des Erteilungsverfahrens keine eine weitergehende Offenbarung in
der Beschreibung einschränkende Bedeutung zu (BGH GRUR 2005, 1023 –
Einkaufswagen II). Vielmehr ist es (lediglich) erforderlich, dass der Fachmann die
im Anspruch bezeichnete technische Lehre den Ursprungsunterlagen unmittelbar
und eindeutig als mögliche Ausführungsform der Erfindung entnehmen kann;
dabei ist eine unangemessene Beschränkung des Anmelders bei der Ausschöpfung des Offenbarungsgehalts der Anmeldung zu vermeiden (BGH GRUR 2015,
976 – Einspritzventil, Rn 45)
Die vorliegende Patentanmeldung erfolgte in englischer Sprache. Als Ursprungsunterlagen sind die am Anmeldetag eingereichten englischsprachigen Unterlagen
anzusehen. Eine nachträgliche Korrektur von Übersetzungsfehlern ist im Patenterteilungsverfahren jederzeit zulässig (vgl. Schulte, PatG, 11. Auflage (2022),
§ 35a Rdnr. 21).
Zum Beleg der ursprünglichen Offenbarung wird nachfolgend auf die am Anmeldetag eingereichten englischsprachigen Patentansprüche (Claims 1-30
vom
31. Juli 2017) und die englischsprachige Beschreibung (Seiten 1 bis 99 vom
31. Juli 2017) Bezug genommen.
2.3
Zum Hauptanspruch
Der geltende Hauptanspruch geht zurück auf den ursprünglichen Claim 21. Die
Unterschiede der einzelnen Merkmale des neuen Hauptanspruchs zum jeweils
entsprechenden Merkmal des ursprünglichen Claims 21 sind im Folgenden
markiert.
Merkmal V0: Computerimplementiertes Verfahren zur wenigstens
teilweise
parallelen Durchführung von Aufgaben von Analyseroutinen mittels einer Mehrzahl
von Knotenvorrichtungen (1500), umfassend:
– Bezüglich der eingefügten Zweckangabe siehe z.B. Claim 21 „operation of
the plurality of node devices is coordinated to perform tasks of analysis
routines at least partially in parallel“.
Merkmal V1: Empfangen einer Analyseroutine, die ausführbare Anweisungen
für eine oder mehrere Aufgaben in Form von Taskroutinen zur Ausführung durch
wenigstens eine zentrale Verarbeitungseinheit (Central Processing Unit, CPU)
einer Knotenvorrichtung umfasst, die mit wenigstens einem Datensatz durchgeführt werden sollen,
– neues Merkmal, basierend z.B. auf Beschreibung Abs. [0065] „The coordinating device may also receive an analysis routine that includes executable
instructions for multiple task routines for multiple tasks to be performed with
at least one data set“, i.V.m. Claim 21 „the analysis routine is generated for
execution by at least one central processing unit (CPU) of the at least one
node“ / „the first task routine is generated for execution by the at least one
CPU to perform the first task of the analysis routine“.
Merkmal V2: Analysieren eines aktuellen Status von Ressourcen von
wenigstens einer Knotenvorrichtung einer der Mehrzahl von Knotenvorrichtungen,
um eine Verfügbarkeit von wenigstens einer Grafikverarbeitungseinheit (Graphics
Processing Unit, GPU) der wenigstens einen Knotenvorrichtung zu bestimmen,
die zugewiesen werden soll, um eine erste Aufgabe einer Analyseroutine
durchzuführen, wobei:
der Betrieb der Mehrzahl von Knotenvorrichtungen koordiniert ist, um Aufgaben
von Analyseroutinen wenigstens teilweise parallel durchzuführen;
die Analyseroutine
zur Ausführung durch wenigstens eine
zentrale
Verarbeitungseinheit (Central Processing Unit, CPU) des wenigstens einen
Knotens erzeugt wird; und
– redaktionelle Anpassung / Streichungen (die hier gestrichene Lehre findet
sich nun z.T. im neuen Merkmal V1)
Merkmal V2.1: wobei die genannten Ressourcen der wenigstens einen Knotenvorrichtung aus einer Gruppe bestehend aus der wenigstens zumindest einen
CPU der wenigstens einen GPU und Speicherplatz innerhalb wenigstens eines
Speichers der wenigstens einen Knotenvorrichtung ausgewählt werden und
zumindest eine GPU umfassen, und
– Vereinfachung / Reduzierung des ursprünglichen „selected from a group consisting of“ auf das hier Notwendige (zum „Speicherplatz“ siehe neuen Unteranspruch 2)
Merkmal V3:
in Reaktion auf eine Bestimmung, dass die wenigstens eine GPU
verfügbar ist, um zugewiesen zu werden, die erste Aufgabe der Analyseroutine
durchzuführen: wenn das Bestimmen ergibt, dass wenigstens eine GPU der
wenigstens einen Knotenvorrichtung für die Zuweisung einer ersten Aufgabe der
Analyseroutine in Form einer ersten Taskroutine verfügbar ist,
– klarstellende Umformulierung des ursprünglichen Merkmals, siehe Claim 21:
„in response to a determination that the at least one GPU is available to be
assigned to perform the first task of the analysis routine“; vgl. auch
Beschreibung Abs.
[00260] „At 2120,
the processor of the coordinating
device may check whether there are any GPUs indicated in the node
statuses as being sufficiently available within any of the node devices such
that a task could be assigned to those node devices to be performed by such
available GPUs.“
Merkmal V3.1: Analysieren einer der ersten Taskroutine der Analyseroutine, um
zu bestimmen, ob diese in erste Taskroutine kompiliert werden kann, um eine
GPU-Taskroutine zur Ausführung durch die wenigstens eine GPU zu erzeugen,
um zu veranlassen, dass die wenigstens eine GPU mehrere Instanzen der ersten
Aufgabe der Analyseroutine wenigstens teilweise parallel ohne eine Abhängigkeit
zwischen Eingaben und Ausgaben der mehreren Instanzen der ersten Aufgabe
durchführt, wobei: kompiliert werden kann, so dass die wenigstens eine GPU
mehrere Instanzen der ersten Aufgabe der Analyseroutine wenigstens teilweise
parallel durchführen kann,
die erste Taskroutine zur Ausführung durch die wenigstens eine CPU erzeugt
wird, um die erste Aufgabe der Analyseroutine durchzuführen; und
– klarstellende Umformulierung des ursprünglichen Merkmals, siehe Claim 21:
„analyzing a first task routine of the analysis routine to determine whether the
first task routine is able to be compiled to generate a GPU task routine for
execution by the at least one GPU to cause the at least one GPU to perform
multiple instances of the first task of the analysis routine at least partially in
parallel“.
Merkmal V3.1.1: wobei die Bestimmung, ob die erste Taskroutine kompiliert
werden kann, um die GPU-Taskroutine zu erzeugen, eine Bestimmung, das
Analysieren umfasst, ob die erste Taskroutine eine Anweisung umfasst, die die
eine Kompilierung zur Erzeugung einer GPU-Taskroutine verhindert, um die GPU-
Taskroutine zu erzeugen,
– klarstellende Vereinfachung des ursprünglichen Merkmals, siehe Claim 21:
„the determination of whether the first task routine is able to be compiled to
generate the GPU task routine comprises a determination of whether the first
task routine includes an instruction that prevents the compilation to generate
the GPU task routine“.
Merkmal V3.1.2:
und eine Bestimmung, ob Eingaben und Ausgaben der ersten
Taskroutine definiert sind, um die Abhängigkeit nicht zu erfordern, umfasst; und
Abhängigkeiten aufweisen, die eine Kompilierung zur Erzeugung einer GPU-
Taskroutine verhindern,
– klarstellende Vereinfachung des ursprünglichen Merkmals, siehe Claim 21:
„and a determination of whether inputs and outputs of the first task routine
are defined to not require the dependency“ i.V.m. dem ursprünglichen Wortlaut des Merkmals V3.1.1.
Merkmal V3.2: in Reaktion auf eine Bestimmung, dass die erste Taskroutine
kompiliert werden kann, um die GPU-Taskroutine zu erzeugen: wenn das Analysieren ergibt, dass die erste Taskroutine in eine GPU-Taskroutine zur Ausführung durch die wenigstens eine GPU kompiliert werden kann,
– klarstellende Umformulierung des ursprünglichen Merkmals, siehe Claim 21:
„in response to a determination that the first task routine is able to be
compiled to generate the GPU task routine“.
Merkmale V3.2.1 bis V3.2.4:
V3.2.3 Zuweisen einer Datensatzpartition einer Mehrzahl von Datensatzpartitionen eines Datensatzes an die wenigstens eine
Knotenvorrichtung, um Zugriff auf die Datensatzpartition durch
die wenigstens eine GPU zu ermöglichen
[Merkmal wurde um zwei Absätze nach hinten verschoben]
V3.2.1 Verwenden einer Umwandlungsregel, um wenigstens eine
Anweisung der ersten Taskroutine in wenigstens eine entsprechende Anweisung der GPU-Taskroutine umzuwandeln;
V3.2.2 Kompilieren der wenigstens einen entsprechenden Anweisung
der GPU-Taskroutine zur Ausführung durch die wenigstens
eine GPU; und
V3.2.3 Zuweisen einer Datensatzpartition einer Mehrzahl von Datensatzpartitionen eines des Datensatzes an die wenigstens eine
Knotenvorrichtung, um Zugriff auf die Datensatzpartition durch
die wenigstens eine GPU zu ermöglichen, und
V3.2.4 Zuweisen einer Durchführung der ersten Aufgabe der Analyseroutine mit der Datensatzpartition der GPU-Taskroutine an
die wenigstens eine Knotenvorrichtung, um die Durchführung
der mehreren Instanzen der ersten Aufgabe mit der Datensatzpartition durch die wenigstens eine GPU mittels der GPU-
Taskroutine zu ermöglichen.
– kleinere Korrekturen zur Klarstellung; die Verschiebung des Merkmals V3.2.3
nach hinten bedeutet keine Änderung der Reihenfolge, sondern macht
lediglich den Zusammenhang mit der Durchführung der GPU-Taskroutine
(Merkmal V3.2.4) deutlicher.
Zusammenfassend behebt die geltende Fassung des Anspruchs 1 Unstimmigkeiten und Ungenauigkeiten der ursprünglichen Fassung, stellt letztlich aber nur
eine etwas andere Übersetzung der englischen Anspruchsfassung dar, ohne den
Schutzbereich inhaltlich zu verändern. Die ursprüngliche Offenbarung lässt sich,
wie ausgeführt, nachvollziehbar belegen.
2.4
Zu den Unteransprüchen 2 bis 11
Der Anspruch 2 ist neu, er entspricht der dritten Alternative des ursprünglichen
Claims 21: „wherein … the resources of the at least one node device are selected
from a group consisting of the at least one CPU, the at least one GPU, and
storage space within at least one storage of the at least one node device“. In den
folgenden Unteransprüchen wurden die Rückbeziehungen entsprechend angepasst.
Die Ansprüche 3 bis 5 entsprechen den ursprünglichen Claims 22, 23 und den
ersten zwei Absätzen des Claim 24, wobei lediglich Klarstellungen in der Übersetzung vorgenommen wurden und der Bezug auf Teilmerkmale des Anspruchs 1
genauer an diesen angepasst wurde.
Der neue Anspruch 6 greift den zweiten Teil des ursprünglichen Claims 24 auf,
welcher sich mit der zum Merkmal V3 des Anspruchs 1 entgegengesetzten
Alternative befasst, dass nämlich keine GPU für die Zuweisung einer ersten
Aufgabe verfügbar ist. Die dafür beanspruchten Maßnahmen, unter Klarstellung
der dafür vorgesehenen Bedingung, entsprechen dem ursprünglichen Claim 24,
lediglich mit kleineren Anpassungen.
Die Ansprüche 7 bis 11 entsprechen den ursprünglichen Claims 25 bis 27 und
29, 30. Im Anspruch 8 wurde der Ausdruck „in a manner in which“ des Claims 26
genauer übersetzt („um eine Beschränkung der Art und Weise zu identifizieren,
wie…“ / zur Offenbarung siehe Beschreibung Absatz [00208]: „indications of various restrictions on the manner in which the data set 1130 may be divided“), und im
Anspruch 10 ebenso der Ausdruck „wherein the second task routine is generated
for execution by the at least one CPU“ des Claims 29 („wobei die zweite Taskroutine zur Ausführung durch die wenigstens eine CPU erzeugt wurde“ / zur Offenbarung vgl. Beschreibung Absatz [00212] „compiling instructions of task routines
1211 originally generated for execution by the CPUs 1550 into instructions
generated for execution by the GPUs 1650“, und den geltenden Anspruch 1 Merkmal V1 „in Form von Taskroutinen zur Ausführung durch wenigstens eine zentrale
Verarbeitungseinheit (Central Processing Unit, CPU)“). Darüber hinaus wurden
(lediglich) kleinere sprachliche Anpassungen vorgenommen.
Damit ist auch für diese Patentansprüche die ursprüngliche Offenbarung gegeben.
2.5
Zu den Nebenansprüchen 12 und 13 sowie Unteranspruch 14
Der formal nebengeordnete Anspruch 12 ist auf ein „Computerprogrammprodukt“
gerichtet, welches Anweisungen umfasst, die in der Lage sind, einen Prozessor zu
veranlassen, Operationen gemäß einem Verfahren nach einem der Ansprüche 1
bis 11 durchzuführen. Er kann sich grundsätzlich auf den ursprünglichen Claim 11
stützen, ist aber nunmehr als abhängiger Anspruch formuliert.
Ebenso ist der formal nebengeordnete Anspruch 13 auf eine „Vorrichtung“
gerichtet, umfassend einen Prozessor und einen Speicher, um Anweisungen zu
speichern, die, wenn sie durch den Prozessor ausgeführt werden, den Prozessor
veranlassen, Operationen gemäß einem Verfahren nach einem der Ansprüche 1
bis 11 durchzuführen. Dies entspricht dem Oberbegriff des ursprünglichen
Claims 1, wobei die dortigen Verfahrensmerkmale sich jetzt durch den Rückbezug
auf die Verfahrensansprüche ergeben.
Der neue Anspruch 14 bezieht sich zurück auf den Vorrichtungsanspruch 13. Er
basiert auf dem ursprünglichen Claim 8, insbesondere dessen letztem Teilmerkmal „to analyze …“, wurde aber sprachlich angepasst und präzisiert.
Daher bestehen auch hier an der ursprünglichen Offenbarung keine Zweifel.
2.6
Die Beschreibung wurde unter Berücksichtigung des entgegengehaltenen
Standes der Technik in zulässiger Weise daran angepasst. Insbesondere wurden
die ursprünglichen Figuren 1 bis 10 und die zugehörige Beschreibung gestrichen,
weil sie sich auf andere Aspekte der Datenverarbeitung mit einem Netz von
Rechenknoten beziehen,
jedoch nichts zu der anspruchsgemäßen Lehre
beitragen. Ferner wurden Ungenauigkeiten in der Übersetzung und offensichtliche
Fehler wie z.B. falsche Bezugszeichen korrigiert. Ein offensichtlicher Schreibfehler
auf Seite 1 der geltenden Beschreibung (vorletzte Zeile: „behandle twerden“ »
„behandelt werden“) wurde in Abstimmung mit der Anmelderin nachträglich noch
korrigiert.
3.
Der Gegenstand des geltenden Patentanspruchs 1 ist durch den bekannt
gewordenen Stand der Technik weder vorweggenommen noch nahegelegt.
3.1
Im Prüfungsverfahren wurden entgegengehalten:
D1
Suchard, M.A. et al.: Understanding GPU Programming for
Statistical Computation: studies
in Massively Parallel
Massive
Mixtures.
PMCID:
PMC2945379
in
<https://www.ncbi.nlm.nih.gov/pmc/> am 25.9.2010
D2
Hong, C. et al.: MapCG: Writing Parallel Program Portable
between CPU and GPU. In: Proceedings of the PACT'10,
September 11 – 15, Vienna, Austria, 2010, pp. 217 - 226
Die Druckschrift D1 befasst sich mit der Frage, wie Graphische Prozessoren
(GPUs) für die Berechnung von Statistik-Programmen (welche als die „Analyseroutinen“ der Anmeldung verstanden werden können) zur Parallelverarbeitung
eingesetzt werden können. Die Prüfungsstelle verweist insbesondere auf die
Abschnitte 3.1.2 und 3.1.3. Dort wird die Benutzung von Rechner-Clustern, GPUs
und Mehrkern-CPUs (auch in einem „embarrassingly parallel“-Modus) beschrieben. Ausgehend von den besonderen Eigenschaften von GPUs (siehe z.B. Abschnitt 3.2.4) wird eine spezielle Kodierung und Kompilierung für diese speziellen
Prozessoren empfohlen (insbesondere mittels des CUDA-System Development
Kit von NVIDIA, siehe Abschnitt 3.2). Eine beispielhafte Vorgehensweise (Seite 8
Mitte „… the following basic steps:“) schließt das Zuweisen von Speicher, auf den
eine CPU und eine GPU gemeinsam zugreifen können, mit ein. Jedoch findet sich
nirgendwo eine Anregung, „gleichzeitig“ mit unterschiedlichen Rechenknoten mit
oder ohne GPU zu arbeiten und zunächst zu prüfen, ob eine GPU verfügbar ist,
um dann ggf. den Programmcode der Analyseroutine automatisch in einen GPU-
Code umzusetzen (vgl. insbes. Anspruchsmerkmale V2 bis V3.2.2).
Die Druckschrift D2 greift den offensichtlichen Nachteil auf, dass Prozessorspezifischer Programmcode für spezielle GPUs wartungsintensiv ist und für jeden
Prozessor-Typ individuell geschrieben und gepflegt werden muss. Als Verbesserung wird ein „Framework“ beschrieben (Seite 218 linke Spalte unten: „MapCG, a
framework which offers source code level portability“), das dem Programmierer
eine C-ähnliche Hochsprache anbietet, die dann mit Hilfe von runtime-Vorgaben
automatisch
für unterschiedliche Prozessoren übersetzt werden kann.
Im
Abschnitt 5.2 auf Seite 225 wird ausgeführt, dass drei Übersetzungsarten für das
Hochsprache-Programm angeboten werden: CPU+GPU co-processing, CPU-only
und GPU-only. Dabei habe es sich aber gezeigt, dass der CPU+GPU coprocessing Modus aus verschiedenen angegebenen Gründen nachteilig sei. Zwar
verweist die Prüfungsstelle auf Seite 217 linke Spalte Absatz 2: „We believe it is
desired to have a programming model which provides source code portability
between CPUs and GPUs, and different GPUs“. Irgendeine Anregung, die Verfügbarkeit von GPUs zu prüfen (Anspruchsmerkmal V2) und daraufhin ggf. die Übersetzung des Programm-Codes automatisch an eine gerade verfügbare GPU
anzupassen, wenn der Programm-Code dies zulässt (Anspruchsmerkmale V3 bis
V3.2), gibt diese Druckschrift aber nicht.
3.2 Mit dem Zwischenbescheid vom 5. April 2022 hat der Senat nachträglich
noch die folgende Druckschrift ins Verfahren eingeführt, die aus dem parallelen
britischen Prüfungsverfahren bekannt geworden ist:
D3
US 2011 / 252 411 A1
Die Druckschrift D3 geht aus von einem Netz von Rechenknoten, die unterschiedliche Ressourcen zur Bearbeitung von Programmen bereitstellen (Abs. [0018] /
Figur 1: client 110, server 120 mit GPU 130 und/oder CPU 140, verbunden über
Netzwerk 150). Gemäß Abs. [0020] empfängt (oder erzeugt) der Client 110 irgendeinen „technischen“ Computerprogramm-Code (TCE-Code 530, siehe Abs. [0047]
– der Ausdruck TCE steht für „Technical Computing Environment“, vgl. insbesondere Abs. [0016], Abs. [0033] bis [0035], Abs. [0040]). Insoweit entspricht die
Ausgangssituation derjenigen der Anmeldung.
Der TCE-Code 530 kann Abschnitte enthalten, die effizienter von einer CPU ausgeführt werden, und Abschnitte, die effizienter von einer GPU ausgeführt werden
(siehe Abs. [0047] Satz 2). Ein „code type determiner 500“ ist vorgesehen, um
eine entsprechende Entscheidung zu treffen und den TCE-Code 530 in entsprechende Abschnitte aufzuteilen, die dann entweder einem GPU-Compiler 510 oder
einem CPU-Compiler 520 zur Übersetzung zugewiesen werden; der Code wird
dann entweder einer GPU 130 oder einer CPU 140 zur Bearbeitung zugewiesen
(Figur 5, Abs. [0049] bis [0054] – vgl. auch Figur 8 und zugeh. Beschreibung).
Im Unterschied zur Anmeldung wird nach der Lehre der Druckschrift D3 nicht
überprüft, ob eine Kompilierung
in GPU-Code „möglich“
ist
(vgl.
insbes.
Anspruchsmerkmale V3.1 bis V3.2), sondern es steht gleich die Frage nach der
Effizienz im Vordergrund; dafür sind andere Kriterien vorgesehen als in der
Anmeldung (vgl. Abs. [0047] / [0048]:
input size/type information 540; size
threshold, degree of parallelism). Ferner ist in D3 keine Analyse der Verfügbarkeit
beschrieben (Anspruchsmerkmal V2).
3.3
Demnach nimmt keine der in Betracht gezogenen Druckschriften die Lehre
des geltenden Patentanspruchs 1 vorweg, und es sind auch keine Anregungen
erkennbar, die in naheliegender Weise zu seiner Lehre führen würden.
4.
Der geltende Patentanspruch 1 ist sonach gewährbar. Seine Unteransprüche 2 bis 11, die formal nebengeordneten, jedoch auf ein Verfahren nach
einem der Ansprüche 1 bis 11 zurückbezogenen Patentansprüche 12 und 13
sowie der auf Anspruch 13 bezogene Unteranspruch 14 sind in Verbindung mit
Anspruch 1 ebenfalls gewährbar.
Das Patent war daher so wie nunmehr beantragt zu erteilen.
Dr. Morawek
Baumgardt
Hoffmann
Akintche