Skip to content

Commit e32f038

Browse files
authored
Merge branch 'master' into feature/non-newtonian-viscosity
2 parents cc6373c + 7da6212 commit e32f038

File tree

13 files changed

+286
-56
lines changed

13 files changed

+286
-56
lines changed

.github/workflows/test.yml

Lines changed: 110 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ jobs:
149149
continue-on-error: true
150150

151151
github:
152-
name: Github
152+
name: ${{ matrix.nvhpc && format('NVHPC {0} ({1})', matrix.nvhpc, matrix.target) || format('Github ({0}, {1}, {2}, intel={3})', matrix.os, matrix.mpi, matrix.debug, matrix.intel) }}
153153
needs: [lint-gate, file-changes, rebuild-cache]
154154
if: >-
155155
!cancelled() &&
@@ -162,8 +162,10 @@ jobs:
162162
os: ['ubuntu', 'macos']
163163
mpi: ['mpi']
164164
precision: ['']
165-
debug: ['debug', 'no-debug']
165+
debug: ['reldebug', 'no-debug']
166166
intel: [true, false]
167+
nvhpc: ['']
168+
target: ['']
167169
exclude:
168170
- os: macos
169171
intel: true
@@ -175,11 +177,62 @@ jobs:
175177
debug: no-debug
176178
intel: false
177179

180+
# NVHPC compiler matrix: cpu (build+test), gpu (build-only, acc then omp)
181+
# Every release from 23.11 through 26.3 (current)
182+
- { nvhpc: '23.11', target: cpu }
183+
- { nvhpc: '23.11', target: gpu }
184+
- { nvhpc: '24.1', target: cpu }
185+
- { nvhpc: '24.1', target: gpu }
186+
- { nvhpc: '24.3', target: cpu }
187+
- { nvhpc: '24.3', target: gpu }
188+
- { nvhpc: '24.5', target: cpu }
189+
- { nvhpc: '24.5', target: gpu }
190+
- { nvhpc: '24.7', target: cpu }
191+
- { nvhpc: '24.7', target: gpu }
192+
- { nvhpc: '24.9', target: cpu }
193+
- { nvhpc: '24.9', target: gpu }
194+
- { nvhpc: '24.11', target: cpu }
195+
- { nvhpc: '24.11', target: gpu }
196+
- { nvhpc: '25.1', target: cpu }
197+
- { nvhpc: '25.1', target: gpu }
198+
- { nvhpc: '25.3', target: cpu }
199+
- { nvhpc: '25.3', target: gpu }
200+
- { nvhpc: '25.5', target: cpu }
201+
- { nvhpc: '25.5', target: gpu }
202+
- { nvhpc: '25.7', target: cpu }
203+
- { nvhpc: '25.7', target: gpu }
204+
- { nvhpc: '25.9', target: cpu }
205+
- { nvhpc: '25.9', target: gpu }
206+
- { nvhpc: '25.11', target: cpu }
207+
- { nvhpc: '25.11', target: gpu }
208+
- { nvhpc: '26.1', target: cpu }
209+
- { nvhpc: '26.1', target: gpu }
210+
- { nvhpc: '26.3', target: cpu }
211+
- { nvhpc: '26.3', target: gpu }
212+
178213
fail-fast: false
179214
continue-on-error: true
180-
runs-on: ${{ matrix.os }}-latest
215+
runs-on: ${{ matrix.nvhpc && 'ubuntu-22.04' || format('{0}-latest', matrix.os) }}
216+
container:
217+
image: ${{ matrix.nvhpc && format('nvcr.io/nvidia/nvhpc:{0}-devel-cuda_multi-ubuntu22.04', matrix.nvhpc) || '' }}
218+
options: ${{ matrix.nvhpc && '--security-opt seccomp=unconfined' || '' }}
219+
env:
220+
CC: ${{ matrix.nvhpc && 'nvc' || '' }}
221+
CXX: ${{ matrix.nvhpc && 'nvc++' || '' }}
222+
FC: ${{ matrix.nvhpc && 'nvfortran' || '' }}
223+
OMPI_ALLOW_RUN_AS_ROOT: ${{ matrix.nvhpc && '1' || '' }}
224+
OMPI_ALLOW_RUN_AS_ROOT_CONFIRM: ${{ matrix.nvhpc && '1' || '' }}
225+
PMIX_MCA_gds: ${{ matrix.nvhpc && 'hash' || '' }}
226+
OMPI_MCA_hwloc_base_binding_policy: ${{ matrix.nvhpc && 'none' || '' }}
227+
FFLAGS: ${{ matrix.nvhpc && '-tp=px -Kieee -noswitcherror' || '' }}
228+
CFLAGS: ${{ matrix.nvhpc && '-tp=px' || '' }}
229+
CXXFLAGS: ${{ matrix.nvhpc && '-tp=px' || '' }}
181230

182231
steps:
232+
- name: Git safe directory
233+
if: matrix.nvhpc
234+
run: git config --global --add safe.directory /__w/MFC/MFC
235+
183236
- name: Clone
184237
uses: actions/checkout@v4
185238

@@ -222,7 +275,7 @@ jobs:
222275
fi
223276
224277
- name: Setup MacOS
225-
if: matrix.os == 'macos'
278+
if: matrix.os == 'macos' && !matrix.nvhpc
226279
run: |
227280
brew update
228281
brew upgrade || true
@@ -231,7 +284,7 @@ jobs:
231284
echo "BOOST_INCLUDE=/opt/homebrew/include/" >> $GITHUB_ENV
232285
233286
- name: Setup Ubuntu
234-
if: matrix.os == 'ubuntu' && matrix.intel == false
287+
if: matrix.os == 'ubuntu' && matrix.intel == false && !matrix.nvhpc
235288
run: |
236289
sudo apt update -y
237290
sudo apt install -y cmake gcc g++ python3 python3-dev hdf5-tools \
@@ -245,30 +298,79 @@ jobs:
245298
sudo apt-key add GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB
246299
sudo add-apt-repository "deb https://apt.repos.intel.com/oneapi all main"
247300
sudo apt-get update
248-
sudo apt-get install -y intel-oneapi-compiler-fortran intel-oneapi-mpi intel-oneapi-mpi-devel
301+
sudo apt-get install -y intel-oneapi-compiler-fortran intel-oneapi-compiler-dpcpp-cpp intel-oneapi-mpi intel-oneapi-mpi-devel
249302
# Export only new/changed env vars from setvars.sh.
250303
# `printenv >> $GITHUB_ENV` dumps all vars including shell internals
251304
# with special characters that corrupt GITHUB_ENV parsing.
252305
printenv | sort > /tmp/env_before
253306
source /opt/intel/oneapi/setvars.sh
254307
printenv | sort > /tmp/env_after
255308
diff /tmp/env_before /tmp/env_after | grep '^>' | sed 's/^> //' >> $GITHUB_ENV
256-
309+
echo "FC=ifx" >> $GITHUB_ENV
310+
echo "CC=icx" >> $GITHUB_ENV
311+
echo "CXX=icpx" >> $GITHUB_ENV
312+
echo "MPIFC=mpiifx" >> $GITHUB_ENV
313+
echo "MPICC=mpiicx" >> $GITHUB_ENV
314+
echo "MPICXX=mpiicpx" >> $GITHUB_ENV
315+
316+
# --- NVHPC container setup ---
317+
- name: Setup NVHPC
318+
if: matrix.nvhpc
319+
run: |
320+
apt-get update -y
321+
apt-get install -y cmake python3 python3-venv python3-pip \
322+
libfftw3-dev libhdf5-dev hdf5-tools git
323+
# Set up NVHPC HPC-X MPI runtime paths
324+
HPCX_DIR=$(dirname "$(find /opt/nvidia/hpc_sdk -path "*/hpcx/hpcx-*/ompi/bin/mpirun" | head -1)")/../..
325+
MPI_LIB=$(mpifort --showme:link | grep -oP '(?<=-L)\S+' | head -1)
326+
echo "LD_LIBRARY_PATH=${MPI_LIB}:${HPCX_DIR}/ucx/lib:${HPCX_DIR}/ucc/lib:${LD_LIBRARY_PATH}" >> $GITHUB_ENV
327+
# Container MPI fixes: PMIx shared-memory, hwloc binding
328+
echo "PMIX_MCA_gds=hash" >> $GITHUB_ENV
329+
echo "OMPI_MCA_hwloc_base_binding_policy=none" >> $GITHUB_ENV
330+
echo "OMPI_MCA_rmaps_base_oversubscribe=1" >> $GITHUB_ENV
331+
# Debug: confirm compiler flags are set
332+
echo "=== NVHPC Environment ==="
333+
echo "FFLAGS=$FFLAGS"
334+
echo "CFLAGS=$CFLAGS"
335+
echo "CXXFLAGS=$CXXFLAGS"
336+
nvfortran --version
337+
cat /proc/cpuinfo | grep "model name" | head -1
338+
339+
# --- Standard build + test ---
257340
- name: Build
341+
if: '!matrix.nvhpc'
258342
run: |
259343
/bin/bash mfc.sh test -v --dry-run -j $(nproc) --${{ matrix.debug }} --${{ matrix.mpi }} $PRECISION $TEST_ALL
260344
env:
261345
TEST_ALL: ${{ matrix.mpi == 'mpi' && '--test-all' || '' }}
262346
PRECISION: ${{ matrix.precision != '' && format('--{0}', matrix.precision) || '' }}
263347

264348
- name: Test
349+
if: '!matrix.nvhpc'
265350
run: |
266351
/bin/bash mfc.sh test -v --max-attempts 3 -j $(nproc) $ONLY_CHANGES $TEST_ALL $TEST_PCT
267352
env:
268353
TEST_ALL: ${{ matrix.mpi == 'mpi' && '--test-all' || '' }}
269-
TEST_PCT: ${{ matrix.debug == 'debug' && '-% 20' || '' }}
354+
TEST_PCT: ${{ matrix.debug == 'reldebug' && '-% 20' || '' }}
270355
ONLY_CHANGES: ${{ github.event_name == 'pull_request' && '--only-changes' || '' }}
271356

357+
# --- NVHPC build + test ---
358+
- name: Build (NVHPC)
359+
if: matrix.nvhpc && matrix.target == 'cpu'
360+
run: /bin/bash mfc.sh test -v --dry-run -j $(nproc) --test-all
361+
362+
- name: Build (NVHPC GPU)
363+
if: matrix.nvhpc && matrix.target == 'gpu'
364+
run: |
365+
/bin/bash mfc.sh test -v --dry-run -j 2 --test-all --gpu acc
366+
/bin/bash mfc.sh test -v --dry-run -j 2 --test-all --gpu mp
367+
368+
- name: Test (NVHPC)
369+
if: matrix.nvhpc && matrix.target == 'cpu'
370+
run: |
371+
ulimit -s unlimited || ulimit -s 65536 || true
372+
/bin/bash mfc.sh test -v --max-attempts 3 -j $(nproc) --test-all
373+
272374
self:
273375
name: "${{ matrix.cluster_name }} (${{ matrix.device }}${{ matrix.interface != 'none' && format('-{0}', matrix.interface) || '' }}${{ matrix.shard != '' && format(' [{0}]', matrix.shard) || '' }})"
274376
needs: [lint-gate, file-changes, rebuild-cache]

CMakeLists.txt

Lines changed: 73 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
# SPDX-License-Identifier: MIT
22

3+
# Intel ifx/icx CI support
34
# Developer's note:
45
# CMake has extensive documentation available online. Searching "cmake <variable>"
56
# or "cmake <function_name>" will return a cmake.org page with more information
@@ -38,6 +39,18 @@ if (MFC_ALL)
3839
set(MFC_DOCUMENTATION ON FORCE)
3940
endif()
4041

42+
# Validate CMAKE_BUILD_TYPE to catch typos (CMake is case-sensitive).
43+
set(_VALID_BUILD_TYPES "Debug" "Release" "RelDebug" "")
44+
if (NOT CMAKE_BUILD_TYPE IN_LIST _VALID_BUILD_TYPES)
45+
message(FATAL_ERROR "Unknown CMAKE_BUILD_TYPE '${CMAKE_BUILD_TYPE}'. Valid: Debug, RelDebug, Release")
46+
endif()
47+
48+
# RelDebug: a lighter debug mode for CI. Compiler-specific blocks below add the
49+
# actual flags; these defaults just tell CMake it is a recognised build type.
50+
set(CMAKE_C_FLAGS_RELDEBUG "-g" CACHE STRING "")
51+
set(CMAKE_CXX_FLAGS_RELDEBUG "-g" CACHE STRING "")
52+
set(CMAKE_Fortran_FLAGS_RELDEBUG "-g" CACHE STRING "")
53+
4154
if (MFC_SINGLE_PRECISION)
4255
add_compile_definitions(MFC_SINGLE_PRECISION)
4356
else()
@@ -83,7 +96,7 @@ elseif ((CMAKE_Fortran_COMPILER_ID STREQUAL "NVHPC") OR (CMAKE_Fortran_COMPILER_
8396
message(FATAL_ERROR "ERROR: When using NVHPC, v21.7 or newer is required to build MFC.\n${__err_msg}")
8497
endif()
8598

86-
if ((CMAKE_Fortran_COMPILER_VERSION VERSION_LESS 24.5) AND (CMAKE_BUILD_TYPE STREQUAL "Debug") AND MFC_OpenACC)
99+
if ((CMAKE_Fortran_COMPILER_VERSION VERSION_LESS 24.5) AND (CMAKE_BUILD_TYPE STREQUAL "Debug" OR CMAKE_BUILD_TYPE STREQUAL "RelDebug") AND MFC_OpenACC)
87100
message(FATAL_ERROR "ERROR: When using NVHPC, MFC with Debug and GPU options requires NVHPC v24.5 or newer.\n${__err_msg}")
88101
endif()
89102
elseif (CMAKE_Fortran_COMPILER_ID STREQUAL "AppleClang" OR CMAKE_C_COMPILER_ID STREQUAL "AppleClang")
@@ -165,13 +178,29 @@ if (CMAKE_Fortran_COMPILER_ID STREQUAL "GNU")
165178
-Wrealloc-lhs
166179
-Wsurprising
167180
)
181+
elseif (CMAKE_BUILD_TYPE STREQUAL "RelDebug")
182+
add_compile_options(
183+
-Og
184+
-Wall
185+
-Wextra
186+
-fcheck=bounds,pointer
187+
-fbacktrace
188+
-fimplicit-none
189+
-fsignaling-nans
190+
-finit-real=snan
191+
-finit-integer=-99999999
192+
-Wconversion
193+
-Wintrinsic-shadow
194+
-Wunderflow
195+
-Wrealloc-lhs
196+
-Wsurprising
197+
)
168198
endif()
169199

170200
if (CMAKE_Fortran_COMPILER_VERSION VERSION_GREATER 10)
171201
add_compile_options(
172202
$<$<COMPILE_LANGUAGE:Fortran>:-fallow-invalid-boz>
173203
$<$<COMPILE_LANGUAGE:Fortran>:-fallow-argument-mismatch>
174-
$<$<COMPILE_LANGUAGE:Fortran>:-fcheck=bounds>
175204
)
176205
endif()
177206
elseif (CMAKE_Fortran_COMPILER_ID STREQUAL "Cray")
@@ -193,6 +222,13 @@ elseif (CMAKE_Fortran_COMPILER_ID STREQUAL "Cray")
193222
"SHELL: -K trap=fp" "SHELL: -g" "SHELL: -O0"
194223
)
195224
add_link_options("SHELL: -K trap=fp" "SHELL: -g" "SHELL: -O0")
225+
elseif (CMAKE_BUILD_TYPE STREQUAL "RelDebug")
226+
add_compile_options(
227+
"SHELL:-h acc_model=auto_async_none"
228+
"SHELL: -h acc_model=no_fast_addr"
229+
"SHELL: -K trap=fp" "SHELL: -g" "SHELL: -O1"
230+
)
231+
add_link_options("SHELL: -K trap=fp" "SHELL: -g" "SHELL: -O1")
196232
endif()
197233

198234
elseif (CMAKE_Fortran_COMPILER_ID STREQUAL "Flang")
@@ -201,11 +237,17 @@ elseif (CMAKE_Fortran_COMPILER_ID STREQUAL "Flang")
201237
$<$<COMPILE_LANGUAGE:Fortran>:-Mpreprocess>
202238
$<$<COMPILE_LANGUAGE:Fortran>:-fdefault-real-8>
203239
)
240+
241+
if (CMAKE_BUILD_TYPE STREQUAL "Debug" OR CMAKE_BUILD_TYPE STREQUAL "RelDebug")
242+
add_compile_options($<$<COMPILE_LANGUAGE:Fortran>:-O1> $<$<COMPILE_LANGUAGE:Fortran>:-g>)
243+
endif()
204244
elseif (CMAKE_Fortran_COMPILER_ID STREQUAL "Intel")
205245
add_compile_options($<$<COMPILE_LANGUAGE:Fortran>:-free>)
206246

207247
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
208-
add_compile_options(-g -Og -traceback -debug)
248+
add_compile_options(-g -Og -traceback -debug -check all)
249+
elseif (CMAKE_BUILD_TYPE STREQUAL "RelDebug")
250+
add_compile_options(-g -Og -traceback -check bounds)
209251
endif()
210252
elseif ((CMAKE_Fortran_COMPILER_ID STREQUAL "NVHPC") OR (CMAKE_Fortran_COMPILER_ID STREQUAL "PGI"))
211253
add_compile_options(
@@ -224,6 +266,13 @@ elseif ((CMAKE_Fortran_COMPILER_ID STREQUAL "NVHPC") OR (CMAKE_Fortran_COMPILER_
224266
$<$<COMPILE_LANGUAGE:Fortran>:-Minform=inform>
225267
$<$<COMPILE_LANGUAGE:Fortran>:-Mbounds>
226268
)
269+
elseif (CMAKE_BUILD_TYPE STREQUAL "RelDebug")
270+
add_compile_options(
271+
$<$<COMPILE_LANGUAGE:Fortran>:-O1>
272+
$<$<COMPILE_LANGUAGE:Fortran>:-g>
273+
$<$<COMPILE_LANGUAGE:Fortran>:-traceback>
274+
$<$<COMPILE_LANGUAGE:Fortran>:-Mbounds>
275+
)
227276
endif()
228277

229278
if (DEFINED ENV{MFC_CUDA_CC})
@@ -262,11 +311,6 @@ if (CMAKE_BUILD_TYPE STREQUAL "Release")
262311
elseif (CMAKE_Fortran_COMPILER_ID STREQUAL "NVHPC")
263312
if (MFC_Unified)
264313
message(STATUS "LTO/IPO is not available with NVHPC using Unified Memory")
265-
elseif (CMAKE_Fortran_COMPILER_VERSION VERSION_GREATER "24.11" AND CMAKE_Fortran_COMPILER_VERSION VERSION_LESS "25.9")
266-
message(STATUS "LTO/IPO is not supported in NVHPC Version 24.11 to 25.9. Use >=25.9 or (<=24.11 && > 23.11) Performance will be degraded.")
267-
set(NVHPC_USE_TWO_PASS_IPO FALSE)
268-
elseif(CMAKE_Fortran_COMPILER_VERSION VERSION_LESS "23.11")
269-
message(STATUS "LTO/IPO is not supported in NVHPC Version < 23.11. Use a newer version of NVHPC for best performance.")
270314
else()
271315
message(STATUS "Performing IPO using -Mextract followed by -Minline")
272316
set(NVHPC_USE_TWO_PASS_IPO TRUE)
@@ -282,7 +326,7 @@ if (CMAKE_BUILD_TYPE STREQUAL "Release")
282326
endif()
283327
endif()
284328

285-
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
329+
if (CMAKE_BUILD_TYPE STREQUAL "Debug" OR CMAKE_BUILD_TYPE STREQUAL "RelDebug")
286330
add_compile_definitions(MFC_DEBUG)
287331
endif()
288332

@@ -453,7 +497,20 @@ function(MFC_SETUP_TARGET)
453497
$<$<COMPILE_LANGUAGE:Fortran>:-Minline>
454498
)
455499
add_dependencies(${ARGS_TARGET} ${ARGS_TARGET}_lib)
456-
target_compile_options(${ARGS_TARGET} PRIVATE -Minline=lib:${ARGS_TARGET}_lib)
500+
target_compile_options(${ARGS_TARGET} PRIVATE -Minline=lib:${ARGS_TARGET}_lib,except:f_is_default,except:s_compute_dt,except:my_inquire,except:s_mpi_abort,except:s_mpi_barrier,except:s_prohibit_abort,except:s_int_to_str,except:s_associate_cbc_coefficients_pointers)
501+
502+
# Exclude m_start_up and m_cbc from cross-file inlining: these are
503+
# initialization/boundary code that trigger NVHPC 25.x fort2 ICE when
504+
# too many functions are cross-inlined into them. GPU hot-path files
505+
# (m_rhs, m_riemann_solvers, m_viscous, m_weno, etc.) keep full IPO.
506+
foreach(_no_inline_file m_start_up m_cbc)
507+
set_source_files_properties(
508+
"${CMAKE_BINARY_DIR}/fypp/${ARGS_TARGET}/${_no_inline_file}.fpp.f90"
509+
TARGET_DIRECTORY ${ARGS_TARGET}
510+
PROPERTIES COMPILE_OPTIONS "-Mnoinline"
511+
)
512+
endforeach()
513+
457514
list(PREPEND IPO_TARGETS ${ARGS_TARGET}_lib)
458515
endif()
459516

@@ -596,7 +653,7 @@ function(MFC_SETUP_TARGET)
596653
)
597654
endif()
598655

599-
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
656+
if (CMAKE_BUILD_TYPE STREQUAL "Debug" OR CMAKE_BUILD_TYPE STREQUAL "RelDebug")
600657
target_compile_options(${a_target}
601658
PRIVATE -gpu=debug
602659
)
@@ -659,15 +716,13 @@ if (MFC_SIMULATION)
659716
MFC_SETUP_TARGET(TARGET simulation
660717
SOURCES "${simulation_SRCs}"
661718
MPI FFTW OpenACC OpenMP)
662-
# CCE 19.0.0 IPA workaround: two files trigger IPA crashes:
719+
# CCE 19.0.0 IPA workaround: disable interprocedural analysis for files
720+
# that trigger compiler crashes during IPA:
663721
# m_bubbles_EL: castIsValid assertion (InstCombine/foldIntegerTypedPHI)
664722
# m_phase_change: bring_routine_resident SIGSEGV
665-
# Disabling IPA per-file avoids the crashes while preserving IPA for
666-
# the rest of simulation (needed for thermochem INLINEALWAYS inlining).
667-
# Applied to Cray+OpenACC and Cray CPU, but NOT Cray+OpenMP: on OpenMP,
668-
# CCE 19.0.0 IPA workaround: disable interprocedural analysis for files
669-
# that trigger compiler SIGSEGV during IPA (Bug 3: m_phase_change,
670-
# Bug 4: m_bubbles_EL). See PR #1286.
723+
# Not applied to Cray+OpenMP because thermochem uses !DIR$ INLINEALWAYS,
724+
# which requires IPA to inline device calls. On OpenACC the pyrometheus
725+
# patch emits !$acc routine seq instead (no IPA needed). See PR #1286.
671726
if (CMAKE_Fortran_COMPILER_ID STREQUAL "Cray" AND NOT MFC_OpenMP)
672727
set_source_files_properties(
673728
"${CMAKE_BINARY_DIR}/fypp/simulation/m_bubbles_EL.fpp.f90"

docs/documentation/getting-started.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,8 @@ MFC can be built with support for various (compile-time) features:
144144
| :----------------: | :---------: | :------------: | :-----: | --------------------------------------------------------------- |
145145
| **MPI** | `--mpi` | `--no-mpi` | On | Allows MFC to run on multiple processors (and nodes). |
146146
| **GPU** | `--gpu` | `--no-gpu` | Off | Enables GPU acceleration via OpenACC or OpenMP offload. |
147-
| **Debug** | `--debug` | `--no-debug` | Off | Requests the compiler build MFC in debug mode. |
147+
| **Debug** | `--debug` | `--no-debug` | Off | Full debug mode: all runtime checks, minimal optimization. |
148+
| **RelDebug** | `--reldebug`| `--no-reldebug`| Off | Lightweight debug: key runtime checks, `-Og`/`-O1`. Used by CI.|
148149
| **GCov** | `--gcov` | `--no-gcov` | Off | Build MFC with coverage flags on. |
149150
| **Unified Memory** | `--unified` | `--no-unified` | Off | Build MFC with unified CPU/GPU memory (GH200 superchip only) |
150151
| **Single** | `--single` | `--no-single` | Off | Build MFC in single precision |

0 commit comments

Comments
 (0)