Created
August 20, 2012 15:08
-
-
Save achimnol/3405022 to your computer and use it in GitHub Desktop.
An init.d script for CUDA device initialization without X environments (by Sangjin Han)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!sh | |
#!/bin/bash | |
# | |
# Startup/shutdown script for nVidia CUDA | |
# | |
# chkconfig: 345 80 20 | |
# description: Startup/shutdown script for nVidia CUDA | |
# Source function library. | |
#. /etc/init.d/functions | |
DRIVER=nvidia | |
RETVAL=0 | |
function success() | |
{ | |
return 0 | |
} | |
function failure() | |
{ | |
echo ERROR | |
return 0 | |
} | |
# Create /dev nodes for nvidia devices | |
function createnodes() { | |
# Count the number of NVIDIA controllers found. | |
N3D=`/usr/bin/lspci | grep -i NVIDIA | grep "3D controller" | wc -l` | |
NVGA=`/usr/bin/lspci | grep -i NVIDIA | grep "VGA compatible controller" | wc -l` | |
N=`expr $N3D + $NVGA - 1` | |
for i in `seq 0 $N`; do | |
mknod -m 666 /dev/nvidia$i c 195 $i | |
RETVAL=$? | |
[ "$RETVAL" = 0 ] || exit $RETVAL | |
done | |
mknod -m 666 /dev/nvidiactl c 195 255 | |
RETVAL=$? | |
[ "$RETVAL" = 0 ] || exit $RETVAL | |
} | |
# Remove /dev nodes for nvidia devices | |
function removenodes() { | |
rm -f /dev/nvidia* | |
} | |
# Start daemon | |
function start() { | |
echo -n $"Loading $DRIVER kernel module: " | |
modprobe $DRIVER NVreg_EnableMSI=1 && success || failure | |
RETVAL=$? | |
echo | |
[ "$RETVAL" = 0 ] || exit $RETVAL | |
echo -n $"Initializing CUDA /dev entries: " | |
createnodes && success || failure | |
RETVAL=$? | |
echo | |
[ "$RETVAL" = 0 ] || exit $RETVAL | |
} | |
# Stop daemon | |
function stop() { | |
echo -n $"Unloading $DRIVER kernel module: " | |
rmmod -f $DRIVER && success || failure | |
RETVAL=$? | |
echo | |
[ "$RETVAL" = 0 ] || exit $RETVAL | |
echo -n $"Removing CUDA /dev entries: " | |
removenodes && success || failure | |
RETVAL=$? | |
echo | |
[ "$RETVAL" = 0 ] || exit $RETVAL | |
} | |
# See how we were called | |
case "$1" in | |
start) | |
start | |
;; | |
stop) | |
stop | |
;; | |
restart) | |
stop | |
start | |
;; | |
*) | |
echo $"Usage: $0 {start|stop|restart}" | |
RETVAL=1 | |
esac | |
exit $RETVAL |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment