{"id":1392,"date":"2015-04-16T13:53:47","date_gmt":"2015-04-16T18:53:47","guid":{"rendered":"http:\/\/jungwon.kim\/blog\/?p=1392"},"modified":"2015-04-16T13:53:47","modified_gmt":"2015-04-16T18:53:47","slug":"gpu-cpu-affinity","status":"publish","type":"post","link":"https:\/\/blog.jungwon.kim\/?p=1392","title":{"rendered":"gpu cpu affinity"},"content":{"rendered":"<div class=\"post-text\">\n<pre class=\"lang-c prettyprint prettyprinted\"><code><span class=\"com\"><a href=\"http:\/\/stackoverflow.com\/questions\/16056800\/multi-gpu-programming-using-cuda-on-a-numa-machine\">http:\/\/stackoverflow.com\/questions\/16056800\/multi-gpu-programming-using-cuda-on-a-numa-machine<\/a>\n\n#!\/bin\/bash<\/span>\n<span class=\"com\">#this script will output a listing of each GPU and it's CPU core affinity mask<\/span><span class=\"pln\">\nfile<\/span><span class=\"pun\">=<\/span><span class=\"str\">\"\/proc\/driver\/nvidia\/gpus\/0\/information\"<\/span>\n<span class=\"kwd\">if<\/span> <span class=\"pun\">[<\/span> <span class=\"pun\">!<\/span> <span class=\"pun\">-<\/span><span class=\"pln\">e $file <\/span><span class=\"pun\">];<\/span><span class=\"pln\"> then\n  echo <\/span><span class=\"str\">\"Unable to locate any GPUs!\"<\/span>\n<span class=\"kwd\">else<\/span><span class=\"pln\">\n  gpu_num<\/span><span class=\"pun\">=<\/span><span class=\"lit\">0<\/span><span class=\"pln\">\n  file<\/span><span class=\"pun\">=<\/span><span class=\"str\">\"\/proc\/driver\/nvidia\/gpus\/$gpu_num\/information\"<\/span>\n  <span class=\"kwd\">if<\/span> <span class=\"pun\">[<\/span> <span class=\"str\">\"-v\"<\/span> <span class=\"pun\">==<\/span> <span class=\"str\">\"$1\"<\/span> <span class=\"pun\">];<\/span><span class=\"pln\"> then echo <\/span><span class=\"str\">\"GPU:  CPU CORE AFFINITY MASK: PCI:\"<\/span><span class=\"pun\">;<\/span><span class=\"pln\"> fi\n  <\/span><span class=\"kwd\">while<\/span> <span class=\"pun\">[<\/span> <span class=\"pun\">-<\/span><span class=\"pln\">e $file <\/span><span class=\"pun\">]<\/span>\n  <span class=\"kwd\">do<\/span><span class=\"pln\">\n    line<\/span><span class=\"pun\">=`<\/span><span class=\"pln\">grep <\/span><span class=\"str\">\"Bus Location\"<\/span><span class=\"pln\"> $file <\/span><span class=\"pun\">|<\/span> <span class=\"pun\">{<\/span><span class=\"pln\"> read line<\/span><span class=\"pun\">;<\/span><span class=\"pln\"> echo $line<\/span><span class=\"pun\">;<\/span> <span class=\"pun\">}`<\/span><span class=\"pln\">\n    pcibdf<\/span><span class=\"pun\">=<\/span><span class=\"pln\">$<\/span><span class=\"pun\">{<\/span><span class=\"pln\">line<\/span><span class=\"pun\">:<\/span><span class=\"lit\">14<\/span><span class=\"pun\">}<\/span><span class=\"pln\">\n    pcibd<\/span><span class=\"pun\">=<\/span><span class=\"pln\">$<\/span><span class=\"pun\">{<\/span><span class=\"pln\">line<\/span><span class=\"pun\">:<\/span><span class=\"lit\">14<\/span><span class=\"pun\">:<\/span><span class=\"lit\">7<\/span><span class=\"pun\">}<\/span><span class=\"pln\">\n    file2<\/span><span class=\"pun\">=<\/span><span class=\"str\">\"\/sys\/class\/pci_bus\/$pcibd\/cpuaffinity\"<\/span><span class=\"pln\">\n    read line2 <\/span><span class=\"pun\">&lt;<\/span><span class=\"pln\"> $file2\n    <\/span><span class=\"kwd\">if<\/span> <span class=\"pun\">[<\/span> <span class=\"str\">\"-v\"<\/span> <span class=\"pun\">==<\/span> <span class=\"str\">\"$1\"<\/span> <span class=\"pun\">];<\/span><span class=\"pln\"> then\n      echo <\/span><span class=\"str\">\" $gpu_num     $line2                  $pcibdf\"<\/span>\n    <span class=\"kwd\">else<\/span><span class=\"pln\">\n      echo <\/span><span class=\"str\">\" $gpu_num     $line2 \"<\/span><span class=\"pln\">\n    fi\n    gpu_num<\/span><span class=\"pun\">=`<\/span><span class=\"pln\">expr $gpu_num <\/span><span class=\"pun\">+<\/span> <span class=\"lit\">1<\/span><span class=\"pun\">`<\/span><span class=\"pln\">\n    file<\/span><span class=\"pun\">=<\/span><span class=\"str\">\"\/proc\/driver\/nvidia\/gpus\/$gpu_num\/information\"<\/span><span class=\"pln\">\n  done\nfi<\/span><\/code><\/pre>\n<\/div>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>http:\/\/stackoverflow.com\/questions\/16056800\/multi-gpu-programming-using-cuda-on-a-numa-machine #!\/bin\/bash #this script will output a listing of each GPU and it&#8217;s CPU core affinity mask file=&#8221;\/proc\/driver\/nvidia\/gpus\/0\/information&#8221; if [ ! -e $file ]; then echo &#8220;Unable to locate any GPUs!&#8221; else gpu_num=0 file=&#8221;\/proc\/driver\/nvidia\/gpus\/$gpu_num\/information&#8221; if [ &#8220;-v&#8221; == &#8220;$1&#8221; ];<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-1392","post","type-post","status-publish","format-standard","hentry","category-cs"],"_links":{"self":[{"href":"https:\/\/blog.jungwon.kim\/index.php?rest_route=\/wp\/v2\/posts\/1392","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.jungwon.kim\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.jungwon.kim\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jungwon.kim\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jungwon.kim\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1392"}],"version-history":[{"count":0,"href":"https:\/\/blog.jungwon.kim\/index.php?rest_route=\/wp\/v2\/posts\/1392\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.jungwon.kim\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1392"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jungwon.kim\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1392"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jungwon.kim\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1392"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}