'clinfo'
]
+# Extra packages needed to build Intel Compute Runtime
+_intel_compute_runtime_extra_packages = ['pkg-config',
+ 'libxml2',
+ 'libxml2-dev',
+ 'libigc',
+ 'libigc-dev',
+ 'libigdgmm11',
+ 'libigdgmm-dev',
+ 'libze-loader',
+ 'libze-loader-dev',
+ 'ocl-icd-libopencl1',
+ 'ocl-icd-opencl-dev',
+ 'opencl-headers']
+
# Extra packages needed to build Python installations from source.
_python_extra_packages = ['build-essential',
'ca-certificates',
cmake_opts=['-DCMAKE_BUILD_TYPE=Release', *cmake_opts],
postinstall=postinstall)
+def get_intel_compute_runtime(args):
+ # The only reason we need to build Compute Runtime ourselves is because Intel packages have no DG1 support
+ # Otherwise, we could have just installed DEB packages from GitHub or Intel PPA
+ if args.intel_compute_runtime is None:
+ return None
+
+ cmake_opts = ['-DCMAKE_BUILD_TYPE=Release',
+ '-DSKIP_UNIT_TESTS=TRUE',
+ '-DSUPPORT_GEN8=0', '-DSUPPORT_GEN9=1', '-DSUPPORT_GEN11=1', '-DSUPPORT_GEN12LP=1', '-DSUPPORT_DG1=1',
+ '-DBUILD_WITH_L0=1']
+
+ return hpccm.building_blocks.generic_cmake(
+ repository='https://github.com/intel/compute-runtime.git',
+ directory='compute-runtime',
+ prefix='/usr/local', recursive=True, branch=args.intel_compute_runtime,
+ cmake_opts=cmake_opts,
+ postinstall=['ldconfig'])
+
def add_tsan_compiler_build_stage(input_args, output_stages: typing.Mapping[str, hpccm.Stage]):
"""Isolate the expensive TSAN preparation stage.
os_packages += ['lsb-release']
if args.hipsycl is not None:
os_packages += ['libboost-fiber-dev']
+ if args.intel_compute_runtime is not None:
+ os_packages += _intel_compute_runtime_extra_packages
building_blocks['extra_packages'] = hpccm.building_blocks.packages(
ospackages=os_packages,
apt_ppas=['ppa:intel-opencl/intel-opencl'],
building_blocks['hipSYCL'] = get_hipsycl(args)
+ building_blocks['intel-compute-runtime'] = get_intel_compute_runtime(args)
+
# Add Python environments to MPI images, only, so we don't have to worry
# about whether to install mpi4py.
if args.mpi is not None and len(args.venvs) > 0:
parser.add_argument('--hipsycl', type=str, nargs='?', default=None,
help='Select hipSYCL repository tag/commit/branch.')
+parser.add_argument('--intel-compute-runtime', type=str, nargs='?', default=None,
+ help='Select Intel Compute Runtime version.')
+
parser.add_argument('--clfft', type=str, nargs='?', const='master', default=None,
help='Add external clFFT libraries to the build image')
elements.append(gpusdk + '-' + version)
if configuration.oneapi is not None:
elements.append('oneapi-' + configuration.oneapi)
+ if configuration.intel_compute_runtime is not None:
+ elements.append('intel-' + configuration.intel_compute_runtime)
# Check for special cases
# The following attribute keys indicate the image is built for the named
--- /dev/null
+# Test goal: Newest ICPX build with SYCL with tests on Intel GPUs
+# Test intents (should change rarely and conservatively):
+# OS: Ubuntu newest supported
+# Compiler: ICPX newest supported
+# FFT: MKL
+# GPU: SYCL
+# Scope: configure, build, unit tests, regression tests
+# Test implementation choices (free to change as needed):
+# OS: Ubuntu 20.04
+# Build type: RelWithAssert
+# Compiler: ICPX 2021.2
+# MPI: thread_MPI
+# SIMD: AVX2_256
+# Parallelism nt/ntomp: 2/1
+
+gromacs:oneapi-2021.2.0-sycl-nightly:configure:
+ extends:
+ - .gromacs:base:configure
+ - .use-oneapi:base
+ - .use-sycl
+ - .rules:nightly-not-for-release
+ image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-20.04-gcc-7-oneapi-2021.2.0-intel-21.21.19914:latest
+ variables:
+ CMAKE: /usr/local/cmake-3.18.4/bin/cmake
+ COMPILER_MAJOR_VERSION: 2021
+
+gromacs:oneapi-2021.2.0-sycl-nightly:build:
+ extends:
+ - .variables:default
+ - .gromacs:base:build
+ - .use-ccache
+ - .use-oneapi:base
+ - .rules:nightly-not-for-release
+ image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-20.04-gcc-7-oneapi-2021.2.0-intel-21.21.19914:latest
+ variables:
+ CMAKE: /usr/local/cmake-3.18.4/bin/cmake
+ needs:
+ - job: gromacs:oneapi-2021.2.0-sycl-nightly:configure
+
+gromacs:oneapi-2021.2.0-sycl-nightly:test-opencl:
+ extends:
+ - .gromacs:base:test
+ - .use-oneapi:base
+ - .rules:nightly-not-for-release
+ tags:
+ - intel-gpu-dg1
+ image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-20.04-gcc-7-oneapi-2021.2.0-intel-21.21.19914:latest
+ variables:
+ CMAKE: /usr/local/cmake-3.18.4/bin/cmake
+ SYCL_DEVICE_FILTER: "opencl:gpu"
+ # The following two variables are not used by k8s, since this job runs on a separate host
+ # But it's easier to set them up and use the existing scripts for job preparation that rely on them
+ KUBERNETES_EXTENDED_RESOURCE_NAME: "intel.com/gpu"
+ KUBERNETES_EXTENDED_RESOURCE_LIMIT: 2
+ # Except we now don't request any GPUs, so we must set this one up manually until !1585 is merged
+ GMX_TEST_REQUIRED_NUMBER_OF_DEVICES: 2
+ needs:
+ - job: gromacs:oneapi-2021.2.0-sycl-nightly:build
+
+gromacs:oneapi-2021.2.0-sycl-nightly:regressiontest-opencl:
+ extends:
+ - .gromacs:base:regressiontest
+ - .use-oneapi:base
+ - .rules:nightly-not-for-release
+ tags:
+ - intel-gpu-dg1
+ image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-20.04-gcc-7-oneapi-2021.2.0-intel-21.21.19914:latest
+ variables:
+ CMAKE: /usr/local/cmake-3.18.4/bin/cmake
+ SYCL_DEVICE_FILTER: "opencl:gpu"
+ # Default not working, see #2980
+ REGRESSIONTEST_TOTAL_RANK_NUMBER: 2
+ REGRESSIONTEST_OMP_RANK_NUMBER: 1
+ # The following two variables are not used by k8s, since this job runs on a separate host
+ # But it's easier to set them up and use the existing scripts for job preparation that rely on them
+ KUBERNETES_EXTENDED_RESOURCE_NAME: "intel.com/gpu"
+ KUBERNETES_EXTENDED_RESOURCE_LIMIT: 2
+ # Except we now don't request any GPUs, so we must set this one up manually until !1585 is merged
+ GMX_TEST_REQUIRED_NUMBER_OF_DEVICES: 2
+ needs:
+ - job: gromacs:oneapi-2021.2.0-sycl-nightly:build
+ - job: regressiontests:prepare
+
+# We have to disable LevelZero tests until https://github.com/intel/llvm/pull/3045 makes it into
+# the OneAPI release. Without this patch, some of the tests deadlock.
+
+#gromacs:oneapi-2021.2.0-sycl-nightly:test-levelzero:
+# extends:
+# - .gromacs:base:test
+# - .use-oneapi:base
+# - .rules:nightly-not-for-release
+# tags:
+# - intel-gpu-dg1
+# image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-20.04-gcc-7-oneapi-2021.2.0-intel-21.21.19914:latest
+# variables:
+# CMAKE: /usr/local/cmake-3.18.4/bin/cmake
+# SYCL_DEVICE_FILTER: "level_zero:gpu"
+# # The following two variables are not used by k8s, since this job runs on a separate host
+# # But it's easier to set them up and use the existing scripts for job preparation that rely on them
+# KUBERNETES_EXTENDED_RESOURCE_NAME: "intel.com/gpu"
+# KUBERNETES_EXTENDED_RESOURCE_LIMIT: 2
+# # Except we now don't request any GPUs, so we must set this one up manually until !1585 is merged
+# GMX_TEST_REQUIRED_NUMBER_OF_DEVICES: 2
+# needs:
+# - job: gromacs:oneapi-2021.2.0-sycl-nightly:build
+#
+#gromacs:oneapi-2021.2.0-sycl-nightly:regressiontest-levelzero:
+# extends:
+# - .gromacs:base:regressiontest
+# - .use-oneapi:base
+# - .rules:nightly-not-for-release
+# tags:
+# - intel-gpu-dg1
+# image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-20.04-gcc-7-oneapi-2021.2.0-intel-21.21.19914:latest
+# variables:
+# CMAKE: /usr/local/cmake-3.18.4/bin/cmake
+# SYCL_DEVICE_FILTER: "level_zero:gpu"
+# # Default not working, see #2980
+# REGRESSIONTEST_TOTAL_RANK_NUMBER: 2
+# REGRESSIONTEST_OMP_RANK_NUMBER: 1
+# # The following two variables are not used by k8s, since this job runs on a separate host
+# # But it's easier to set them up and use the existing scripts for job preparation that rely on them
+# KUBERNETES_EXTENDED_RESOURCE_NAME: "intel.com/gpu"
+# KUBERNETES_EXTENDED_RESOURCE_LIMIT: 2
+# # Except we now don't request any GPUs, so we must set this one up manually until !1585 is merged
+# GMX_TEST_REQUIRED_NUMBER_OF_DEVICES: 2
+# needs:
+# - job: gromacs:oneapi-2021.2.0-sycl-nightly:build
+# - job: regressiontests:prepare