Merge pull request #8010 from qingqing01/ctest_bind_gpu
Make parallel tests bind to different GPU.emailweixu-patch-1
commit
ead15943d9
@ -0,0 +1,30 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# the number of process to run tests
|
||||||
|
NUM_PROC=6
|
||||||
|
|
||||||
|
# calculate and set the memory usage for each process
|
||||||
|
MEM_USAGE=$(printf "%.2f" `echo "scale=5; 1.0 / $NUM_PROC" | bc`)
|
||||||
|
export FLAGS_fraction_of_gpu_memory_to_use=$MEM_USAGE
|
||||||
|
|
||||||
|
# get the CUDA device count
|
||||||
|
CUDA_DEVICE_COUNT=$(nvidia-smi -L | wc -l)
|
||||||
|
|
||||||
|
for (( i = 0; i < $NUM_PROC; i++ )); do
|
||||||
|
cuda_list=()
|
||||||
|
for (( j = 0; j < $CUDA_DEVICE_COUNT; j++ )); do
|
||||||
|
s=$[i+j]
|
||||||
|
n=$[s%CUDA_DEVICE_COUNT]
|
||||||
|
if [ $j -eq 0 ]; then
|
||||||
|
cuda_list=("$n")
|
||||||
|
else
|
||||||
|
cuda_list="$cuda_list,$n"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
echo $cuda_list
|
||||||
|
# CUDA_VISIBLE_DEVICES http://acceleware.com/blog/cudavisibledevices-masking-gpus
|
||||||
|
# ctest -I https://cmake.org/cmake/help/v3.0/manual/ctest.1.html?highlight=ctest
|
||||||
|
env CUDA_VISIBLE_DEVICES=$cuda_list ctest -I $i,,$NUM_PROC --output-on-failure &
|
||||||
|
done
|
||||||
|
wait
|
Loading…
Reference in new issue