@@ -1115,6 +1115,7 @@ function compile_mlir!(
1115
1115
assert_nonallocating:: Bool = false ,
1116
1116
backend= " gpu" ,
1117
1117
raise:: Union{Bool,String} = false ,
1118
+ raise_first:: Bool = false ,
1118
1119
# TODO : allow more fine-grained options to control the donation of specific arguments
1119
1120
donated_args:: Symbol = :auto , # :auto | :none
1120
1121
optimize_then_pad:: Bool = true ,
@@ -1267,6 +1268,21 @@ function compile_mlir!(
1267
1268
run_pass_pipeline! (
1268
1269
mod,
1269
1270
join (
1271
+ raise_first ?
1272
+ [
1273
+ opt_passes,
1274
+ kern,
1275
+ raise_passes,
1276
+ " enzyme-batch" ,
1277
+ opt_passes2,
1278
+ enzyme_pass,
1279
+ opt_passes2,
1280
+ " canonicalize" ,
1281
+ " remove-unnecessary-enzyme-ops" ,
1282
+ " enzyme-simplify-math" ,
1283
+ opt_passes2,
1284
+ jit,
1285
+ ] :
1270
1286
[
1271
1287
opt_passes,
1272
1288
" enzyme-batch" ,
@@ -1289,6 +1305,10 @@ function compile_mlir!(
1289
1305
run_pass_pipeline! (
1290
1306
mod,
1291
1307
join (
1308
+ raise_first ?
1309
+ [
1310
+ opt_passes,
1311
+ ] :
1292
1312
[
1293
1313
opt_passes,
1294
1314
" enzyme-batch" ,
@@ -1308,6 +1328,20 @@ function compile_mlir!(
1308
1328
run_pass_pipeline! (
1309
1329
mod,
1310
1330
join (
1331
+ raise_first ?
1332
+ [
1333
+ opt_passes,
1334
+ kern,
1335
+ raise_passes,
1336
+ " enzyme-batch" ,
1337
+ opt_passes2,
1338
+ enzyme_pass,
1339
+ opt_passes2,
1340
+ " canonicalize" ,
1341
+ " remove-unnecessary-enzyme-ops" ,
1342
+ " enzyme-simplify-math" ,
1343
+ opt_passes2,
1344
+ ] :
1311
1345
[
1312
1346
opt_passes,
1313
1347
" enzyme-batch" ,
@@ -1329,7 +1363,9 @@ function compile_mlir!(
1329
1363
run_pass_pipeline! (
1330
1364
mod,
1331
1365
join (
1332
- [
1366
+ raise_first ? [
1367
+ opt_passes
1368
+ ] : [
1333
1369
opt_passes,
1334
1370
" enzyme-batch" ,
1335
1371
opt_passes2,
@@ -1383,7 +1419,18 @@ function compile_mlir!(
1383
1419
run_pass_pipeline! (
1384
1420
mod,
1385
1421
join (
1422
+ raise_first ?
1386
1423
[
1424
+ kern,
1425
+ raise_passes,
1426
+ " enzyme-batch" ,
1427
+ enzyme_pass,
1428
+ " canonicalize" ,
1429
+ " remove-unnecessary-enzyme-ops" ,
1430
+ " enzyme-simplify-math" ,
1431
+ opt_passes2,
1432
+ jit,
1433
+ ] : [
1387
1434
" enzyme-batch" ,
1388
1435
enzyme_pass,
1389
1436
" canonicalize" ,
@@ -1401,7 +1448,17 @@ function compile_mlir!(
1401
1448
elseif optimize === :before_enzyme
1402
1449
run_pass_pipeline! (
1403
1450
mod,
1404
- join (
1451
+ join ( raise_first ?
1452
+ [
1453
+ opt_passes,
1454
+ kern,
1455
+ raise_passes,
1456
+ " enzyme-batch" ,
1457
+ opt_passes2,
1458
+ enzyme_pass,
1459
+ " canonicalize,remove-unnecessary-enzyme-ops,enzyme-simplify-math" ,
1460
+ jit,
1461
+ ] :
1405
1462
[
1406
1463
opt_passes,
1407
1464
" enzyme-batch" ,
@@ -1823,6 +1880,7 @@ macro code_hlo(args...)
1823
1880
:no_nan => false ,
1824
1881
:client => nothing ,
1825
1882
:raise => false ,
1883
+ :raise_first => false ,
1826
1884
:shardy_passes => :(:to_mhlo_shardings ),
1827
1885
:assert_nonallocating => false ,
1828
1886
:donated_args => :(:auto ),
@@ -1857,6 +1915,7 @@ macro code_mhlo(args...)
1857
1915
:no_nan => false ,
1858
1916
:client => nothing ,
1859
1917
:raise => false ,
1918
+ :raise_first => false ,
1860
1919
:shardy_passes => :(:to_mhlo_shardings ),
1861
1920
:assert_nonallocating => false ,
1862
1921
:donated_args => :(:auto ),
@@ -1891,6 +1950,7 @@ macro code_xla(args...)
1891
1950
:no_nan => false ,
1892
1951
:client => nothing ,
1893
1952
:raise => false ,
1953
+ :raise_first => false ,
1894
1954
:shardy_passes => :(:to_mhlo_shardings ),
1895
1955
:assert_nonallocating => false ,
1896
1956
:donated_args => :(:auto ),
@@ -1924,6 +1984,7 @@ macro compile(args...)
1924
1984
:no_nan => false ,
1925
1985
:client => nothing ,
1926
1986
:raise => false ,
1987
+ :raise_first => false ,
1927
1988
:shardy_passes => :(:to_mhlo_shardings ),
1928
1989
:assert_nonallocating => false ,
1929
1990
:serializable => false ,
@@ -1948,6 +2009,7 @@ macro jit(args...)
1948
2009
:no_nan => false ,
1949
2010
:client => nothing ,
1950
2011
:raise => false ,
2012
+ :raise_first => false ,
1951
2013
:shardy_passes => :(:to_mhlo_shardings ),
1952
2014
:assert_nonallocating => false ,
1953
2015
:donated_args => :(:auto ),
0 commit comments