【手続補正書】
【提出日】平成29年8月14日(2017.8.14)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
少なくとも１つのプログラム可能なマルチスレッドＳＩＭＤプロセッサによって実施される方法であって、
複数のワープの各ワープについて、発散バリア命令のブール式のアーギュメントが各ワープの対応するスレッドについて真であるかどうかを決定することと、
前記ブール式のアーギュメントが真である前記対応するスレッドを有する各ワープの実行を休止することと、
前記ブール式のアーギュメントが真である前記複数のワープの各々について、アクティブなスレッドの数を決定することと、ここにおいて、前記アクティブなスレッドが、同じ分岐をとっている、
複数のソートされたワープを生成するために、前記複数のワープの各々の中のアクティブなスレッドの前記数に基づいて、前記ブール式のアーギュメントが真である前記複数のワープをソートすることと、
より少ないアクティブなスレッドを有する前記複数のワープの第１のワープのアクティブなスレッドの前記データを、より多い数のアクティブなスレッドを有する前記複数のワープの第２のワープの非アクティブなスレッドの前記データとスワップすることと、
より多い数のアクティブなスレッドを有する、前記ブール式のアーギュメントが真である前記複数のスレッドのうちの１つを有する前記複数のソートされたワープのうちの１つの実行を再開することと
を備える方法。
【請求項２】
前記方法が、
前記複数のソートされたワープのうちの前記少なくとも１つの実行を再開する前に、前記ブール式のアーギュメントが真である前記複数のスレッドの各スレッドについて、コンテキストデータをスワップすること
をさらに備える、請求項１に記載の方法。
【請求項３】
前記複数のワープをソートすることが、挿入ソート法を使用して、前記複数のワープをソートすることを備える、請求項１に記載の方法。
【請求項４】
前記ブール式のアーギュメントが真である前記複数のワープの各ワープについて、複数の発散バリアの関連する発散バリアを決定することと、
各ワープの前記関連する発散バリアに基づいて、前記複数のワープの各ワープを複数の圧縮プールへとグループ化することと、
をさらに備え、
ここにおいて、前記複数のワープをソートすることが、前記複数の圧縮プールのうちの同じものに属する前記複数のワープをソートすることを備え、
ここにおいて、前記第１のワープおよび前記第２のワープが、前記複数の圧縮プールのうちの前記同じものに属するワープを備え、
ここにおいて、前記ブール式のアーギュメントが真である前記複数のワープのうちの前記少なくとも１つの実行を再開させることが、前記同じ１つの圧縮プールの少なくとも１つのワープの実行を再開することを備える、請求項１に記載の方法。
【請求項５】
前記複数のワープの各々に関連する前記発散バリアに基づいて、前記複数のワープの各々にプレフィックスを割り当てること
をさらに備え、
ここにおいて、前記複数のワープを前記少なくとも１つの圧縮プールへとグループ化することが、前記割り当てられたプレフィックスに基づいて、前記複数のワープを少なくとも１つの圧縮プールへとグループ化することを備える、請求項４に記載の方法。
【請求項６】
アクティブなスレッドの前記スレッドデータを、非アクティブなスレッドのスレッド前記データと前記スワップすることが、休止されたワープが形成され得なくなるまで継続する、請求項１に記載の方法。
【請求項７】
前記複数のワープがすべてアクティブなスレッドを有するワープを含むことを決定することと、すべてアクティブなスレッドを有する前記ワープの実行を再開することと
をさらに備える、請求項１に記載の方法。
【請求項８】
前記ブール式のアーギュメントが真である前記複数のワープをソートすることが、
前記複数のワープを待ち行列の中に記憶することと、
前記ブール式のアーギュメントが真である前記待ち行列の中の前記複数のワープを、アクティブなスレッドの前記数に基づいてソートすることと、
前記ソートされた複数のワープを前記待ち行列の中に記憶することと
を備える、請求項１に記載の方法。
【請求項９】
発散が生じる可能性がある位置、および複数のワープ上で実行するカーネル内で著しく性能に影響を及ぼす位置のうちの少なくとも１つを決定することと、
前記少なくとも１つの位置において、発散バリア命令を前記カーネルへと挿入することと
をさらに備え、
ここにおいて、前記ブール式が前記発散バリア命令に関連する、請求項１に記載の方法。
【請求項１０】
プログラム可能なマルチスレッドＳＩＭＤプロセッサを備える装置であって、
複数のワープの各ワープについて、発散バリア命令のブール式のアーギュメントが各ワープの対応するスレッドについて真であるかどうかを決定するための手段と、
前記ブール式のアーギュメントが真である前記対応するスレッドを有する各ワープの実行を休止するための手段と、
前記ブール式のアーギュメントが真である前記複数のワープの各々について、アクティブなスレッドの数を決定するための手段と、ここにおいて、前記アクティブなスレッドが、同じ分岐をとっている、
複数のソートされたワープを生成するために、前記複数のワープの各々の中のアクティブなスレッドの前記数に基づいて、前記ブール式のアーギュメントが真である前記複数のワープをソートするための手段と、
より少ないアクティブなスレッドを有する前記複数のワープの第１のワープのアクティブなスレッドのスレッドデータを、より多い数のアクティブなスレッドを有する前記複数のワープの第２のワープの非アクティブなスレッドのスレッドデータとスワップするための手段と、
より多い数のアクティブなスレッドを有する、前記ブール式のアーギュメントが真である前記複数のスレッドのうちの１つを有する前記複数のソートされたワープのうちの１つの実行を再開するための手段と
を備える装置。
【請求項１１】
前記装置が、グラフィックス処理ユニット（ＧＰＵ）を備える、請求項１０に記載の装置。
【請求項１２】
前記ブール式のアーギュメントが真である前記複数のワープの各ワープについて、複数の発散バリアの関連する発散バリアを決定するための手段と、
各ワープの前記関連する発散バリアに基づいて、前記複数のワープの各ワープを複数の圧縮プールへとグループ化するための手段と
をさらに備え、
ここにおいて、前記複数のワープをソートするための前記手段が、前記複数の圧縮プールのうちの同じものに属する前記複数のワープをソートするための手段を備え、
ここにおいて、前記第１のワープおよび前記第２のワープが、前記複数の圧縮プールのうちの前記同じものに属するワープを備え、
ここにおいて、前記ブール式のアーギュメントが真である前記複数のワープのうちの前記少なくとも１つの実行を再開させるための前記手段が、前記同じ１つの圧縮プールの少なくとも１つのワープの実行を再開するための手段を備える、請求項１０に記載の装置。
【請求項１３】
前記複数のワープがすべてアクティブなスレッドを有するワープを含むことを決定するための手段と、
すべてアクティブなスレッドを有する前記ワープの実行を再開するための手段と
をさらに備える、請求項１０に記載の装置。
【請求項１４】
発散が生じる可能性がある位置、および複数のワープ上で実行するカーネル内で著しく性能に影響を及ぼす位置のうちの少なくとも１つを決定するための手段と、
前記少なくとも１つの位置において、発散バリア命令を前記カーネルへと挿入するための手段と
をさらに備え、
ここにおいて、前記ブール式が前記発散バリア命令に関連する、請求項１０に記載の装置。
【請求項１５】
実行されると、少なくとも１つのプログラム可能なプロセッサに、請求項１乃至９のうちのいずれか一項に記載の方法を行わせる命令を備える、非一時的コンピュータ可読記憶媒体。