CMAKE_PRECISION_OPTIONS: "-DGMX_DOUBLE=OFF"
CMAKE_GPU_OPTIONS: -DGMX_GPU=OpenCL
+.use-sycl:
+ variables:
+ CMAKE_PRECISION_OPTIONS: "-DGMX_DOUBLE=OFF"
+ CMAKE_GPU_OPTIONS: -DGMX_GPU=SYCL
+
# Base definition for using gcc.
.use-gcc:base:
variables:
variables:
COMPILER_MAJOR_VERSION: 2021
+gromacs:oneapi-2021.1-beta09-sycl:configure:
+ extends:
+ - .gromacs:base:configure
+ - .use-oneapi:base
+ - .use-sycl
+ - .rules:merge-and-post-merge-acceptance
+ image: gromacs/cmake-3.17.2-oneapi-2021.1-beta09-master
+ variables:
+ COMPILER_MAJOR_VERSION: 2021
+
gromacs:clang-UBSAN:configure:
extends:
- .gromacs:base:configure
needs:
- job: gromacs:oneapi-2021.1-beta09-opencl:configure
+gromacs:oneapi-2021.1-beta09-sycl:build:
+ extends:
+ - .variables:default
+ - .gromacs:base:build
+ - .use-ccache
+ - .use-oneapi:base
+ - .rules:merge-and-post-merge-acceptance
+ image: gromacs/cmake-3.17.2-oneapi-2021.1-beta09-master
+ needs:
+ - job: gromacs:oneapi-2021.1-beta09-sycl:configure
+
gromacs:clang-9-mpi:build:
extends:
- .variables:default
needs:
- job: gromacs:oneapi-2021.1-beta09-opencl:build
+gromacs:oneapi-2021.1-beta09-sycl:test:
+ extends:
+ - .gromacs:base:test
+ - .use-oneapi:base
+ - .rules:post-merge-acceptance
+ image: gromacs/cmake-3.17.2-oneapi-2021.1-beta09-master
+ needs:
+ - job: gromacs:oneapi-2021.1-beta09-sycl:build
+
gromacs:clang-9-mpi:test:
extends:
- .gromacs:base:test
- job: gromacs:oneapi-2021.1-beta09-opencl:build
- job: regressiontests:prepare
+gromacs:oneapi-2021.1-beta09-sycl:regressiontest:
+ extends:
+ - .gromacs:base:regressiontest
+ - .use-oneapi:base
+ - .rules:post-merge-acceptance
+ image: gromacs/cmake-3.17.2-oneapi-2021.1-beta09-master
+ needs:
+ - job: gromacs:oneapi-2021.1-beta09-sycl:build
+ - job: regressiontests:prepare
+
gromacs:gcc-8-cuda-11.0:release:test:
extends:
- .gromacs:base:test
{
errorReasons.emplace_back("a non-GPU build");
}
+ if (GMX_GPU_SYCL)
+ {
+ errorReasons.emplace_back("SYCL build"); // SYCL-TODO
+ }
return addMessageIfNotSupported(errorReasons, error);
}
{
errorReasons.emplace_back("non-GPU build of GROMACS");
}
-
+ if (GMX_GPU_SYCL)
+ {
+ errorReasons.emplace_back("SYCL build of GROMACS"); // SYCL-TODO
+ }
return addMessageIfNotSupported(errorReasons, error);
}
{
errorReasons.emplace_back("non-GPU build of GROMACS");
}
+ if (GMX_GPU_SYCL)
+ {
+ errorReasons.emplace_back("SYCL build of GROMACS");
+ }
return addMessageIfNotSupported(errorReasons, error);
}
static bool isDeviceFunctional(const cl::sycl::device& syclDevice, std::string* errorMessage)
{
static const int numThreads = 8;
- cl::sycl::queue queue;
try
{
- queue = cl::sycl::queue(syclDevice);
+ cl::sycl::queue queue(syclDevice);
cl::sycl::buffer<int, 1> buffer(numThreads);
queue.submit([&](cl::sycl::handler& cgh) {
auto d_buffer = buffer.get_access<cl::sycl::access::mode::discard_write>(cgh);
deviceInfos[i]->syclDevice = syclDevice;
deviceInfos[i]->status = checkDevice(i, *deviceInfos[i]);
deviceInfos[i]->deviceVendor =
- getDeviceVendor(syclDevice.get_info<sycl::info::device::vendor>());
+ getDeviceVendor(syclDevice.get_info<sycl::info::device::vendor>().c_str());
}
return deviceInfos;
}
// If we get here, then the user permitted GPUs, which we should
// use for nonbonded interactions.
- return gpusWereDetected;
+ return buildSupportsNonbondedOnGpu && gpusWereDetected;
}
bool decideWhetherToUseGpusForPme(const bool useGpuForNonbonded,