JP6141365B2 - 逐次コンピュータプログラムコードを並列処理する方法及びシステム - Google Patents
逐次コンピュータプログラムコードを並列処理する方法及びシステム Download PDFInfo
- Publication number
- JP6141365B2 JP6141365B2 JP2015154050A JP2015154050A JP6141365B2 JP 6141365 B2 JP6141365 B2 JP 6141365B2 JP 2015154050 A JP2015154050 A JP 2015154050A JP 2015154050 A JP2015154050 A JP 2015154050A JP 6141365 B2 JP6141365 B2 JP 6141365B2
- Authority
- JP
- Japan
- Prior art keywords
- computer program
- program code
- sequential
- sequential computer
- code
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
- G06F8/456—Parallelism detection
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
- G06F8/314—Parallel programming languages
Description
F1は時間(t−T1min)において実行することができる。
F2は逐次処理における時間t1=(t+F1がF2を呼び出すのに必要な時間)で呼び出される。
しかし、F2は(t1−T2min)=t2で実行することができる。
1番目はマスター=プロセッサ番号0
2番目にF1を実行=プロセッサ番号1
3番目にF2を実行=プロセッサ番号2
4番目にF3を実行=プロセッサ番号3、である。
データ依存関係に関してコードを解析すると、事前実行を開始できるライン番号を判定し得る。以下のような構造を定義し得る:
Execute_on_priority_currentprocess_linestart_lineend_wait_linenumberEnd_nextprocess
execute_on_priority_P2_350_380_wait_349_P1
と構築される。P1は現在のプロセスであり、ここから第2プロセスP2にジャンプする(この場合にはFORループ)。
if-else文を見つける場合にはいつでも、コードを解析して実際の実行前に変数の依存関係を見つけるが、これはこのライン番号又は位置以降if-else文内で使用される変数が更新されていないことを意味する。多くの場合、if及びelseブロック内で使用される変数は、実際のif及びelseが始まるかなり前に最終更新された可能性がある。しかしif-elseの実際の実行を決める条件チェックは最新の変数で行われない。本発明では、if及びelse両方を実行して、条件文が準備できていれば、if又はelseのいずれかの結果を、条件文の結果に基づいて選択する。以下に示すコードセグメントでは、if-else依存関係はライン番号5で終了するため、ライン番号6からのif及びelseの実行を開始することができる。ライン番号7以降にのみif_condが見られるため、コアの1つでif部分(ライン9)の実行を開始し、他のものでelse部分(ライン11)の実行を開始する。メインコアはライン6−7の実行を続ける。ライン7が実行され、if_condの値がわかれば、関連するコアからの結果が採用され、他の結果は破棄される。
2. variables if_var, else_var,a,b, if_cond
3. if_var = prime()
4. else_var_prime1()
5. comment: No dependency after this line
6. Factorial(a,b)
7. If_cond = mod3()
8. If(if_cond) then
9. comment: if_var used here
10. else
11. comment: else_var used here
12. end if
13. module main end
同様の方法をスイッチケース分に対して使用できる。スイッチケース文の依存関係が終了する位置において、異なるケースの実行を異なるコアに対してスケジューリングすることができる。ケース文に対する条件変数がわかれば、関連する結果を保持することができるため、その他の結果は破棄すべきである。
時間前にループを実行するために、メインコアが現行コードを実行している間に、別のプロセッサコアでループの終了部分で使用される変数の依存関係をチェックし、ループ全体を実行する。例えば、ループがライン番号100において変数を使用し、その変数がライン番号30で最後に更新されたものであれば、ライン番号31から先は事前にループを実行することができる。よって、ライン番号31から99を1つのプロセッサで実行し、それと同時にライン100において始まるループを別のプロセッサで実行する。
前掲の例のうちの一つで述べたモジュールF3について検討する。T3minは、変数の依存関係がない間のF3の実行時間とする。モジュールF1及びモジュールF2がプロセッサ及び利用可能性に基づいてスケジューリングされるとT3minがT3min’に変わる。ここでT3min<T3min’である。
以下に示す擬似コードの例は、図4に示すようにマスクを使用したエッジ検出アルゴリズムの一例のコードである。想定実行−事前実行の基礎を、以下の例で説明する。なお、以下の例は多数の変数を考慮したものではないため、例としては完全なものではない。
2. datastructs originalImage, edgeImage, filterImage
3. variables X, Y, I, J, sumX, nColors, p, q, vectorSize
4. variables fileSize, mask, row, col, origcols, origrows
5. variables coeffhighpass, coefflowpass, Filttype, sum
6. q='0'
7. mask =(-1,0,1,-2,0,2,-1,0,1)
8. bmpInput = fileopen(mode, “in“)
9. bmpOutput = fileopen(mode, “out“)
10. fileSize = getImagelnfo()
11. originalImage.cols = getImagelnfo()
12. originalImage.rows = getImagelnfo()
13. edgeImage.rows = originalImage.rows
14. edgeImage.cols = originalImage.cols
15. loop from row =0 to row <= originalImage.rows-1
16. loop from col =0 to col <= originalImage.cols -1
17. pchar = read each pixel from bmpInput
18. originalImage.data = pChar
19. emd loop
20. end loop
21. nColors = getImagelnfo()
22. vectorSize = fileSize -(14+40+4*nColors)
23. copyImagelnfo (bmpInput, bmpOutput)
24. loop from Y=0 to Y<= originalImage.rows-1
25. loop from X=0 to X<= originalImage.cols-1
26. sumX =0
27. loop from I=-l to I<=1
28. loop from J=-l to J<=1
29. sumX = sumX + originalImage.data +X+I+
30. (Y+J)*originalImage.cols))*mask[I+1][J+1]
31. end loop
32. end loop
33. if sumX >255 then
34. sumX =255
35. Filttype = low
36. endif
37. if sumX <0 then
38. sumX =0
39. Filttype = high
40. endif
41. edgeImage.data +X+Y*originalImage.cols = 255 - sumX
42. end loop
43. end loop
44. if (Filetpe = low) then
45. filterImage = ApplyHighPassFilter(originalImage)
46. Else
47. filterImage = ApplyLowPassFilter(originalImage)
48. endif
49. loop from Y=0 to Y<=originalImage.rows-1
50. loop from X=0 to X<=originalImage.cols-1
51. resultImage.data = filterImage.data + EdgeImage.data
52. end loop
53. end loop
54. module main ends
55. function getImagelnfo start
56. variables numberOfChars ,value, dummy, i
57. dummy ='0'
58. loop form i=l to i<= numberOfChars
59. value = read value from file
60. end loop
61. module getImagelnfo end
62. module copyImagelnfo
63. variables numberOfChars ,value, dummy, i
64. dummy ='0'
65. loop from i=0 to i<=50
66. value = read value from file
67. bmpOutput = write 'value'
68. end loop
69. module copyImagelnfo end
70. module ApplyHighPassFilter
71. loop from ht =0 to row
72. loop form wd =0 to col
73. sum =0
74. loop from c =0 to coeffhighpass
75. sum = sum + coeffliighpass * originalImage.data
76. end loop
77. filterImage.data = sum
78. end loop
79. end loop
80. funciton ApplyHighPassFilter end
81. module ApplyLowPassFilter
82. loop from ht =0 to row
83. loop form wd =0 to col
84. sum =0
85. loop from c =0 to coefflowpass
86. sum = sum + coefflowpass * originalImage.data
87. end loop
88. filterImage.data = sum
89. end loop
90. end loop
91. funciton ApplyLowPassFilter end
変数‘Original Image rows’について検討すると、上記コードを解析することにより、この変数はライン番号12で更新されており、その後ライン番号13、15、24、50で使用されている。ライン番号24におけるループで使用される変数はいずれも、ライン13から23までで更新された変数を使用しない。そのため、上記コードがライン13から23を実行している間、ライン24から32におけるループを別のプロセッサで並列実行する。よって、ライン番号25から31におけるループの実行開始は、事前実行されることになる。
Claims (5)
- 実行速度を高めるために逐次コンピュータプログラムコードを並列処理する方法であって、
前記逐次コンピュータプログラムコードを自動並列処理システムに入力するステップと、
前記逐次コンピュータプログラムコードの構造を解析して、機能性に影響を与えることなく前記逐次コンピュータプログラムコードに特別プログラム命令(SPI)を挿入する位置を識別するステップと、
前記逐次コンピュータプログラムコードの各ラインと前記逐次コンピュータプログラムコードの各関数の実行に必要な時間との依存関係を判定するため、関数又はモジュールのコールグラフ、時間測定、及び時間表を作成することによって、前記逐次コンピュータプログラムコードをプロファイリングするステップと、
前記逐次コンピュータプログラムコードを解析及びプロファイリングすることによって得た情報により前記逐次コンピュータプログラムコードの並列処理可能性を判定するステップと、
並列処理可能性が判定されると、前記逐次コンピュータプログラムコードにSPIを挿入して、並列実行可能なコンピュータプログラムコードを得るステップと、
前記並列実行可能なコンピュータプログラムコードを実行するために並列計算環境に送るステップと、
を含んでおり、
前記逐次コンピュータプログラムコードが、逐次実行されるソースコードの形態の関数を複数含み、
前記逐次コンピュータプログラムコードを少なくとも一度実行することにより、前記逐次コンピュータプログラムコードをオフラインで解析し、解析及びプロファイリングのプロセスを通して並列可能なコードを判定し、学習モードにおいて前記ソースコードの形態の関数に含まれる変数を観測し、
前記逐次コンピュータプログラムコードが、少なくとも、制御フロー文及びループ文をさらに含み、
前記逐次コンピュータプログラムコードにおけるループを並列処理する方法は、
前記ループ文中のデータ変数を識別するステップと、
前記文同士の依存関係をチェックするステップと、
前記逐次コンピュータプログラムコード内の前記データ変数が最後に更新されたライン番号を識別するステップと、
前記識別したライン番号をメモリに記憶するステップと、
前記記憶したデータを使用して、前記データ変数の更新に関するライン依存関係を示すグラフをプロットするステップと、
前記ライン依存関係の統計を使用して、コードの特定のセグメントを識別して異なるプロセッサに送り、逐次コンピュータプログラムコードの並列処理を行うステップとを含むことを特徴とする方法。 - 前記逐次コンピュータプログラムコードを実行する実際のタイムスケールにおいて、異なる関数又はモジュールを実行するシーケンスをグラフで示した、前記逐次コンピュータプログラムコードの変数対時間、変数対ライン番号、及び関数対時間のグラフを、コールグラフが含み、
実行に必要と識別した時間をコールグラフに重ねることによって、前記逐次コンピュータプログラムコードの各関数の無駄時間を判定する、請求項1に記載の方法。 - 前記並列実行可能なコンピュータプログラムコードを用いることで、逐次コンピュータプログラムコードの実行パターンによって実行を開始する実際の時間より前に、前記コンピュータプログラムコードを実行できる、請求項1に記載の方法。
- 前記方法が、逐次コンピュータプログラムコード内の特定の関数若しくはモジュール、又はその一部の実行を開始するため、絶対最短待機時間(AMWT)を評価する反復プロセスを提供する、請求項1に記載の方法。
- 複数のコードを並列処理する代替的方法が、逐次コンピュータプログラムコードをクラスタインデックスによってクラスタに分別することによるものであり、
データ依存関係、オリジナルコードによる実行の時間表、及び実行の時間測定を含む複数のパラメータから、前記クラスタインデックスを得る、請求項1に記載の方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
IN2513MU2008 | 2008-12-01 | ||
IN2513/MUM/2008 | 2008-12-01 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011538103A Division JP2012510661A (ja) | 2008-12-01 | 2009-12-01 | 逐次コンピュータプログラムコードを並列処理する方法及びシステム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2015207318A JP2015207318A (ja) | 2015-11-19 |
JP6141365B2 true JP6141365B2 (ja) | 2017-06-07 |
Family
ID=42232941
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011538103A Pending JP2012510661A (ja) | 2008-12-01 | 2009-12-01 | 逐次コンピュータプログラムコードを並列処理する方法及びシステム |
JP2015154050A Expired - Fee Related JP6141365B2 (ja) | 2008-12-01 | 2015-08-04 | 逐次コンピュータプログラムコードを並列処理する方法及びシステム |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011538103A Pending JP2012510661A (ja) | 2008-12-01 | 2009-12-01 | 逐次コンピュータプログラムコードを並列処理する方法及びシステム |
Country Status (4)
Country | Link |
---|---|
US (2) | US8949786B2 (ja) |
EP (1) | EP2361408A4 (ja) |
JP (2) | JP2012510661A (ja) |
WO (1) | WO2010064260A1 (ja) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8495342B2 (en) * | 2008-12-16 | 2013-07-23 | International Business Machines Corporation | Configuring plural cores to perform an instruction having a multi-core characteristic |
US9003383B2 (en) * | 2011-09-15 | 2015-04-07 | You Know Solutions, LLC | Analytic engine to parallelize serial code |
US20130263139A1 (en) * | 2012-03-28 | 2013-10-03 | Lior Schejter | Managing execution of applications in a runtime environment |
DE102012015897A1 (de) * | 2012-08-10 | 2014-02-13 | Giesecke & Devrient Gmbh | Verfahren zum Ausführen vom Programmcode |
US9015673B2 (en) * | 2012-08-17 | 2015-04-21 | Ge Aviation Systems, Llc | Method for developing software in a parallel computing environment |
US10725897B2 (en) | 2012-10-09 | 2020-07-28 | Securboration, Inc. | Systems and methods for automatically parallelizing sequential code |
WO2014058854A1 (en) * | 2012-10-09 | 2014-04-17 | Securboration, Inc. | Systems and methods for automatically parallelizing sequential code |
US10466988B2 (en) * | 2017-06-14 | 2019-11-05 | ManyCore Corporation | Systems and methods for automatic computer code parallelization |
JP7259380B2 (ja) * | 2019-02-12 | 2023-04-18 | 日本電気株式会社 | 情報処理実行制御装置、情報処理実行制御システム、情報処理実行制御方法、及び、情報処理実行制御プログラム |
CN110780897B (zh) * | 2019-08-26 | 2022-05-10 | 华为云计算技术有限公司 | 一种代码变更方法以及装置 |
US11841982B2 (en) | 2021-10-20 | 2023-12-12 | International Business Machines Corporation | Partitioning circuits for execution of sequential secure computation code on multiple processors |
CN114461198A (zh) * | 2021-12-27 | 2022-05-10 | 上海交通大学四川研究院 | 基于可视化低代码的程序生成方法、装置、设备及介质 |
Family Cites Families (46)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3601341B2 (ja) | 1999-02-09 | 2004-12-15 | 株式会社日立製作所 | 並列プログラム生成方法 |
JPH02199541A (ja) * | 1989-01-30 | 1990-08-07 | Fujitsu Ltd | 最適化制御行自動生成方式 |
JP3039953B2 (ja) * | 1989-04-28 | 2000-05-08 | 株式会社日立製作所 | 並列化装置 |
JPH03282826A (ja) * | 1990-03-30 | 1991-12-13 | Nec Corp | 並列化翻訳方式 |
JPH0444181A (ja) * | 1990-06-12 | 1992-02-13 | Hitachi Ltd | 並列変換処理方法 |
GB9023633D0 (en) * | 1990-10-31 | 1990-12-12 | Int Computers Ltd | Predicting the performance of a computer system |
US5765011A (en) * | 1990-11-13 | 1998-06-09 | International Business Machines Corporation | Parallel processing system having a synchronous SIMD processing with processing elements emulating SIMD operation using individual instruction streams |
JPH05257709A (ja) * | 1992-03-16 | 1993-10-08 | Hitachi Ltd | 並列化判別方法およびそれを用いた並列化支援方法 |
JPH0675786A (ja) * | 1992-08-26 | 1994-03-18 | Hitachi Ltd | タスクスケジュリング方法 |
JP3208870B2 (ja) * | 1992-10-30 | 2001-09-17 | 株式会社日立製作所 | データ分割パタンの評価方法 |
JPH0736680A (ja) * | 1993-07-23 | 1995-02-07 | Omron Corp | 並列化プログラム開発支援装置 |
US5860009A (en) * | 1994-04-28 | 1999-01-12 | Kabushiki Kaisha Toshiba | Programming method for concurrent programs and program supporting apparatus thereof |
JPH0916436A (ja) * | 1995-06-30 | 1997-01-17 | Hitachi Ltd | 並列プログラム最適化支援方法 |
JP3305949B2 (ja) * | 1996-02-08 | 2002-07-24 | 富士通株式会社 | プログラム解析装置 |
US6339840B1 (en) | 1997-06-02 | 2002-01-15 | Iowa State University Research Foundation, Inc. | Apparatus and method for parallelizing legacy computer code |
JP2000122877A (ja) * | 1998-10-19 | 2000-04-28 | Nec Corp | プログラムのコード配置方法 |
JP2001167060A (ja) | 1999-12-07 | 2001-06-22 | Hitachi Ltd | タスク並列化方法 |
US6742083B1 (en) | 1999-12-14 | 2004-05-25 | Genesis Microchip Inc. | Method and apparatus for multi-part processing of program code by a single processor |
JP2002032229A (ja) * | 2000-07-14 | 2002-01-31 | Mitsubishi Electric Corp | 並列処理プログラム作成方法、並列処理プログラム作成装置及び並列処理プログラム作成方法を記録した記録媒体 |
JP4019361B2 (ja) * | 2002-06-24 | 2007-12-12 | 株式会社日立製作所 | 並列化変換システムと並列化変換方法およびプログラムならびにコンパイラ |
US7159211B2 (en) * | 2002-08-29 | 2007-01-02 | Indian Institute Of Information Technology | Method for executing a sequential program in parallel with automatic fault tolerance |
JP4042604B2 (ja) * | 2003-03-31 | 2008-02-06 | 日本電気株式会社 | プログラム並列化装置,プログラム並列化方法およびプログラム並列化プログラム |
JP2004310651A (ja) * | 2003-04-10 | 2004-11-04 | Fujitsu Ltd | コスト解析に基づいてループの自動並列化処理を行う情報処理装置 |
US7793276B2 (en) * | 2003-11-14 | 2010-09-07 | Intel Corporation | Apparatus and method for automatically parallelizing network applications through pipelining transformation |
US7730460B1 (en) * | 2004-06-18 | 2010-06-01 | Apple Inc. | Code execution visualization using software fingerprinting |
US20060123401A1 (en) * | 2004-12-02 | 2006-06-08 | International Business Machines Corporation | Method and system for exploiting parallelism on a heterogeneous multiprocessor computer system |
JP2006243838A (ja) | 2005-02-28 | 2006-09-14 | Toshiba Corp | プログラム開発装置 |
US7627864B2 (en) * | 2005-06-27 | 2009-12-01 | Intel Corporation | Mechanism to optimize speculative parallel threading |
US7757222B2 (en) * | 2005-09-30 | 2010-07-13 | Intel Corporation | Generating efficient parallel code using partitioning, coalescing, and degenerative loop and guard removal |
DE102005050561A1 (de) | 2005-10-17 | 2007-04-19 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Element zur flächigen Beleuchtung |
DE102005056186B4 (de) | 2005-11-21 | 2010-07-01 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Steuerung von Rechenprozessen |
KR100806274B1 (ko) * | 2005-12-06 | 2008-02-22 | 한국전자통신연구원 | 멀티 쓰레디드 프로세서 기반의 병렬 시스템을 위한 적응형실행 방법 |
US20070192766A1 (en) | 2006-02-13 | 2007-08-16 | Ketan Padalia | Apparatus and methods for parallelizing integrated circuit computer-aided design software |
DE602007006467D1 (de) | 2006-03-27 | 2010-06-24 | Coherent Logix Inc | Programmierung eines multiprozessorsystems |
US7571301B2 (en) | 2006-03-31 | 2009-08-04 | Intel Corporation | Fast lock-free post-wait synchronization for exploiting parallelism on multi-core processors |
JP4784827B2 (ja) * | 2006-06-06 | 2011-10-05 | 学校法人早稲田大学 | ヘテロジニアスマルチプロセッサ向けグローバルコンパイラ |
US7779230B2 (en) * | 2006-10-18 | 2010-08-17 | Wisconsin Alumni Research Foundation | Data flow execution of methods in sequential programs |
US8307337B2 (en) * | 2006-12-01 | 2012-11-06 | Murex S.A.S. | Parallelization and instrumentation in a producer graph oriented programming framework |
JP4957729B2 (ja) * | 2007-01-25 | 2012-06-20 | 日本電気株式会社 | プログラム並列化方法、プログラム並列化装置及びプログラム |
JP4962564B2 (ja) * | 2007-03-29 | 2012-06-27 | 富士通株式会社 | 並列化プログラム生成方法、並列化プログラム生成装置、及び並列化プログラム生成プログラム |
US7983890B2 (en) * | 2007-06-18 | 2011-07-19 | Massachusetts Institute Of Technology | Method and apparatus performing automatic mapping for a multi-processor system |
JP2009048252A (ja) * | 2007-08-14 | 2009-03-05 | Oki Electric Ind Co Ltd | プログラム変換装置及びコンパイラプログラム |
JP2009129179A (ja) * | 2007-11-22 | 2009-06-11 | Toshiba Corp | プログラム並列化支援装置およびプログラム並列化支援方法 |
US8645933B2 (en) * | 2008-08-01 | 2014-02-04 | Leon Schwartz | Method and apparatus for detection and optimization of presumably parallel program regions |
US8291408B1 (en) * | 2010-03-10 | 2012-10-16 | Google Inc. | Visual programming environment for mobile device applications |
US20130159892A1 (en) * | 2011-08-17 | 2013-06-20 | Weejot Ltd. | Non-technical creation of mobile web applications |
-
2009
- 2009-12-01 JP JP2011538103A patent/JP2012510661A/ja active Pending
- 2009-12-01 WO PCT/IN2009/000697 patent/WO2010064260A1/en active Application Filing
- 2009-12-01 EP EP20090830102 patent/EP2361408A4/en not_active Ceased
- 2009-12-01 US US13/132,189 patent/US8949786B2/en not_active Expired - Fee Related
-
2015
- 2015-01-27 US US14/606,924 patent/US9880822B2/en not_active Expired - Fee Related
- 2015-08-04 JP JP2015154050A patent/JP6141365B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2015207318A (ja) | 2015-11-19 |
JP2012510661A (ja) | 2012-05-10 |
WO2010064260A1 (en) | 2010-06-10 |
US20150317140A1 (en) | 2015-11-05 |
US9880822B2 (en) | 2018-01-30 |
EP2361408A1 (en) | 2011-08-31 |
US8949786B2 (en) | 2015-02-03 |
EP2361408A4 (en) | 2012-05-23 |
US20110239201A1 (en) | 2011-09-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6141365B2 (ja) | 逐次コンピュータプログラムコードを並列処理する方法及びシステム | |
JP4042604B2 (ja) | プログラム並列化装置,プログラム並列化方法およびプログラム並列化プログラム | |
Abadi et al. | Tensorflow: Large-scale machine learning on heterogeneous distributed systems | |
KR101279179B1 (ko) | 병렬 프로그램 생성 방법 | |
US20110119660A1 (en) | Program conversion apparatus and program conversion method | |
JP2020518881A (ja) | コンピュータに実装する方法、コンピュータ可読媒体および異種計算システム | |
US20120054722A1 (en) | Trace generating unit, system, and program of the same | |
KR20080093108A (ko) | 프로그램 병렬 실행 시스템 및 방법 | |
Lutz et al. | Helium: a transparent inter-kernel optimizer for opencl | |
Bahmann et al. | Perfect reconstructability of control flow from demand dependence graphs | |
Falch et al. | ImageCL: An image processing language for performance portability on heterogeneous systems | |
Bertolacci et al. | Identifying and scheduling loop chains using directives | |
Olabi et al. | A compiler framework for optimizing dynamic parallelism on GPUs | |
CN111124415B (zh) | 一种开发循环代码中潜在可向量化循环的方法 | |
JP2008250838A (ja) | ソフトウェア生成装置、方法、およびプログラム | |
Custers | Algorithmic species: Classifying program code for parallel computing | |
Bridges | The velocity compiler: Extracting efficient multicore execution from legacy sequential codes | |
Kandiah et al. | Parsimony: Enabling SIMD/Vector Programming in Standard Compiler Flows | |
Matz et al. | Automated partitioning of data-parallel kernels using polyhedral compilation | |
Shao et al. | Map-reduce inspired loop parallelization on CGRA | |
Süß et al. | And now for something completely different: running Lisp on GPUs | |
JP3551352B2 (ja) | ループ分割方法 | |
JP2007108838A (ja) | コンパイル方法及びコンパイル装置 | |
KR20230053509A (ko) | 딥러닝 프로그램 실행 방법 및 장치 | |
Almghawish et al. | An automatic parallelizing model for sequential code using Python |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20150826 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20160727 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20160817 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20161115 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20170117 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20170327 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20170411 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20170502 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6141365 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |