How to run tests on multiple GPUs

How to run tests on multiple GPUs#

To run tests on multiple GPUs, you can configure your tests using the AMDGPU_TEST_TARGETS option or you can use CTest resource allocation.

The AMDGPU_TEST_TARGETS CTest option lets you specify the families of GPUs on which you want to run your tests. For example, if you have two GPUs from the gfx900 family in your system, you can specify -DAMDGPU_TEST_TARGETS=gfx900 when you configure your test to specify that you only want that family of GPUs to be tested. If you don’t set AMDGPU_TEST_TARGETS, the tests will be run on the default device in your system.

You can use CTest resource allocation to run tests in a distributed manner across multiple GPUs and test multiple product families from one invocation.

CTest resource allocation requires a resource specification file. You can generate a resource specification file using the GenerateResourceSpec.cmake utility script.

After you have cloned the rocThrust repository and built rocThrust with the -DBUILD_TESTS=ON option, change directory to the build directory and run:

../cmake/GenerateResourceSpec.cmake

This will generate a resources.json file in the build directory. Use the resources.json file in your call to ctest.

For example, if you have two compatible GPUs in your system, run:

ctest --resource-spec-file ./resources.json --parallel 2

Note

CTest resource allocation requires CMake 3.16 or later.