Skip to content

Commit f3621d2

Browse files
authored
Merge pull request #2652 from devitocodes/top-comment
compiler: add top description to generated file
2 parents 9fa537f + 3e77abb commit f3621d2

File tree

9 files changed

+89
-34
lines changed

9 files changed

+89
-34
lines changed

devito/ir/iet/visitors.py

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -671,6 +671,17 @@ def visit_KernelLaunch(self, o):
671671
return c.Statement(f'{o.name}{templates}<<<{launch_config}>>>({arguments})')
672672

673673
# Operator-handle machinery
674+
def _operator_description(self, o):
675+
"""
676+
Generate cgen description from an iterable of symbols and expressions.
677+
"""
678+
if o.description:
679+
if isinstance(o.description, str):
680+
return [c.Comment(o.description), blankline]
681+
elif isinstance(o.description, Iterable):
682+
return [c.MultilineComment(o.description), blankline]
683+
else:
684+
return [c.Comment("Devito generated operator"), blankline]
674685

675686
def _operator_includes(self, o):
676687
"""
@@ -752,6 +763,9 @@ def visit_Operator(self, o, mode='all'):
752763
esigns.append(self._gen_signature(i, is_declaration=True))
753764
efuncs.extend([self._visit(i), blankline])
754765

766+
# Top description
767+
description = self._operator_description(o)
768+
755769
# Definitions
756770
headers = self._operator_headers(o)
757771

@@ -772,8 +786,8 @@ def visit_Operator(self, o, mode='all'):
772786
if globs:
773787
globs.append(blankline)
774788

775-
return c.Module(headers + includes + namespaces + typedecls + globs +
776-
esigns + [blankline, kernel] + efuncs)
789+
return c.Module(description + headers + includes + namespaces + typedecls
790+
+ globs + esigns + [blankline, kernel] + efuncs)
777791

778792

779793
class CInterface(CGen):

devito/operator/operator.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -768,6 +768,10 @@ def _soname(self):
768768
def _printer(self):
769769
return self._Target.Printer
770770

771+
@cached_property
772+
def description(self):
773+
return f"Devito generated code for Operator `{self.name}`"
774+
771775
@cached_property
772776
def headers(self):
773777
return OrderedSet(*self._printer._headers).union(self._headers)

examples/cfd/01_convection.ipynb

Lines changed: 10 additions & 7 deletions
Large diffs are not rendered by default.

examples/cfd/01_convection_revisited.ipynb

Lines changed: 10 additions & 7 deletions
Large diffs are not rendered by default.

examples/compiler/01_data_regions.ipynb

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,8 @@
9393
"name": "stdout",
9494
"output_type": "stream",
9595
"text": [
96+
"/* Devito generated code for Operator `Kernel` */\n",
97+
"\n",
9698
"#define _POSIX_C_SOURCE 200809L\n",
9799
"#define START(S) struct timeval start_ ## S , end_ ## S ; gettimeofday(&start_ ## S , NULL);\n",
98100
"#define STOP(S,T) gettimeofday(&end_ ## S, NULL); T->S += (double)(end_ ## S .tv_sec-start_ ## S.tv_sec)+(double)(end_ ## S .tv_usec-start_ ## S .tv_usec)/1000000;\n",
@@ -323,6 +325,8 @@
323325
"name": "stdout",
324326
"output_type": "stream",
325327
"text": [
328+
"/* Devito generated code for Operator `Kernel` */\n",
329+
"\n",
326330
"#define _POSIX_C_SOURCE 200809L\n",
327331
"#define START(S) struct timeval start_ ## S , end_ ## S ; gettimeofday(&start_ ## S , NULL);\n",
328332
"#define STOP(S,T) gettimeofday(&end_ ## S, NULL); T->S += (double)(end_ ## S .tv_sec-start_ ## S.tv_sec)+(double)(end_ ## S .tv_usec-start_ ## S .tv_usec)/1000000;\n",
@@ -442,6 +446,8 @@
442446
"name": "stdout",
443447
"output_type": "stream",
444448
"text": [
449+
"/* Devito generated code for Operator `Kernel` */\n",
450+
"\n",
445451
"#define _POSIX_C_SOURCE 200809L\n",
446452
"#define START(S) struct timeval start_ ## S , end_ ## S ; gettimeofday(&start_ ## S , NULL);\n",
447453
"#define STOP(S,T) gettimeofday(&end_ ## S, NULL); T->S += (double)(end_ ## S .tv_sec-start_ ## S.tv_sec)+(double)(end_ ## S .tv_usec-start_ ## S .tv_usec)/1000000;\n",
@@ -568,7 +574,7 @@
568574
"name": "python",
569575
"nbconvert_exporter": "python",
570576
"pygments_lexer": "ipython3",
571-
"version": "3.6.8"
577+
"version": "3.13.5"
572578
}
573579
},
574580
"nbformat": 4,

examples/compiler/03_iet-A.ipynb

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,8 @@
124124
"name": "stdout",
125125
"output_type": "stream",
126126
"text": [
127+
"/* Devito generated code for Operator `Kernel` */\n",
128+
"\n",
127129
"#define _POSIX_C_SOURCE 200809L\n",
128130
"#define START(S) struct timeval start_ ## S , end_ ## S ; gettimeofday(&start_ ## S , NULL);\n",
129131
"#define STOP(S,T) gettimeofday(&end_ ## S, NULL); T->S += (double)(end_ ## S .tv_sec-start_ ## S.tv_sec)+(double)(end_ ## S .tv_usec-start_ ## S .tv_usec)/1000000;\n",
@@ -475,7 +477,7 @@
475477
"name": "python",
476478
"nbconvert_exporter": "python",
477479
"pygments_lexer": "ipython3",
478-
"version": "3.12.9"
480+
"version": "3.13.5"
479481
}
480482
},
481483
"nbformat": 4,

examples/mpi/overview.ipynb

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -314,7 +314,9 @@
314314
{
315315
"data": {
316316
"text/plain": [
317-
"[stdout:0] #define _POSIX_C_SOURCE 200809L\n",
317+
"[stdout:0] /* Devito generated code for Operator `Kernel` */\n",
318+
"\n",
319+
"#define _POSIX_C_SOURCE 200809L\n",
318320
"#define START(S) struct timeval start_ ## S , end_ ## S ; gettimeofday(&start_ ## S , NULL);\n",
319321
"#define STOP(S,T) gettimeofday(&end_ ## S, NULL); T->S += (double)(end_ ## S .tv_sec-start_ ## S.tv_sec)+(double)(end_ ## S .tv_usec-start_ ## S .tv_usec)/1000000;\n",
320322
"\n",
@@ -407,7 +409,9 @@
407409
{
408410
"data": {
409411
"text/plain": [
410-
"[stdout:0] #define _POSIX_C_SOURCE 200809L\n",
412+
"[stdout:0] /* Devito generated code for Operator `Kernel` */\n",
413+
"\n",
414+
"#define _POSIX_C_SOURCE 200809L\n",
411415
"#define START(S) struct timeval start_ ## S , end_ ## S ; gettimeofday(&start_ ## S , NULL);\n",
412416
"#define STOP(S,T) gettimeofday(&end_ ## S, NULL); T->S += (double)(end_ ## S .tv_sec-start_ ## S.tv_sec)+(double)(end_ ## S .tv_usec-start_ ## S .tv_usec)/1000000;\n",
413417
"\n",

examples/performance/00_overview.ipynb

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -563,7 +563,7 @@
563563
"text": [
564564
"--- \n",
565565
"+++ \n",
566-
"@@ -43,7 +43,8 @@\n",
566+
"@@ -45,7 +45,8 @@\n",
567567
" {\n",
568568
" for (int z = z_m; z <= z_M; z += 1)\n",
569569
" {\n",
@@ -600,7 +600,7 @@
600600
"text": [
601601
"--- \n",
602602
"+++ \n",
603-
"@@ -44,7 +44,7 @@\n",
603+
"@@ -46,7 +46,7 @@\n",
604604
" for (int z = z_m; z <= z_M; z += 1)\n",
605605
" {\n",
606606
" float r0 = 1.0F/h_y;\n",
@@ -636,7 +636,7 @@
636636
"text": [
637637
"--- \n",
638638
"+++ \n",
639-
"@@ -44,7 +44,7 @@\n",
639+
"@@ -46,7 +46,7 @@\n",
640640
" for (int z = z_m; z <= z_M; z += 1)\n",
641641
" {\n",
642642
" float r0 = 1.0F/h_y;\n",
@@ -1155,6 +1155,8 @@
11551155
"name": "stdout",
11561156
"output_type": "stream",
11571157
"text": [
1158+
"/* Devito generated code for Operator `Kernel` */\n",
1159+
"\n",
11581160
"#define _POSIX_C_SOURCE 200809L\n",
11591161
"#define START(S) struct timeval start_ ## S , end_ ## S ; gettimeofday(&start_ ## S , NULL);\n",
11601162
"#define STOP(S,T) gettimeofday(&end_ ## S, NULL); T->S += (double)(end_ ## S .tv_sec-start_ ## S.tv_sec)+(double)(end_ ## S .tv_usec-start_ ## S .tv_usec)/1000000;\n",
@@ -1445,6 +1447,8 @@
14451447
"name": "stdout",
14461448
"output_type": "stream",
14471449
"text": [
1450+
"/* Devito generated code for Operator `Kernel` */\n",
1451+
"\n",
14481452
"#define _POSIX_C_SOURCE 200809L\n",
14491453
"#define START(S) struct timeval start_ ## S , end_ ## S ; gettimeofday(&start_ ## S , NULL);\n",
14501454
"#define STOP(S,T) gettimeofday(&end_ ## S, NULL); T->S += (double)(end_ ## S .tv_sec-start_ ## S.tv_sec)+(double)(end_ ## S .tv_usec-start_ ## S .tv_usec)/1000000;\n",
@@ -1585,6 +1589,8 @@
15851589
"name": "stdout",
15861590
"output_type": "stream",
15871591
"text": [
1592+
"/* Devito generated code for Operator `Kernel` */\n",
1593+
"\n",
15881594
"#define _POSIX_C_SOURCE 200809L\n",
15891595
"#define START(S) struct timeval start_ ## S , end_ ## S ; gettimeofday(&start_ ## S , NULL);\n",
15901596
"#define STOP(S,T) gettimeofday(&end_ ## S, NULL); T->S += (double)(end_ ## S .tv_sec-start_ ## S.tv_sec)+(double)(end_ ## S .tv_usec-start_ ## S .tv_usec)/1000000;\n",
@@ -1748,7 +1754,7 @@
17481754
"name": "python",
17491755
"nbconvert_exporter": "python",
17501756
"pygments_lexer": "ipython3",
1751-
"version": "3.12.8"
1757+
"version": "3.13.5"
17521758
}
17531759
},
17541760
"nbformat": 4,

examples/performance/01_gpu.ipynb

Lines changed: 23 additions & 10 deletions
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)