PageSourceSearch

https://www.bsc.es/supportkc/assets/js/e4a4fe20.b1960612.js

js bsc.es collected 2026-09-24 08:43:04 UTC 23,002 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunksupportkc_new=self.webpackChunksupportkc_new||[]).push([[1510],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>k});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function s(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function i(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?s(Object(a),!0).forEach((function(t){r(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):s(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function l(e,t){if(null==e)return{};var a,n,r=function(e,t){if(null==e)return{};var a,n,r={},s=Object.keys(e);for(n=0;n<s.length;n++)a=s[n],t.indexOf(a)>=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(n=0;n<s.length;n++)a=s[n],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var o=n.createContext({}),p=function(e){var t=n.useContext(o),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},c=function(e){var t=p(e.components);return n.createElement(o.Provider,{value:t},e.children)},m="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},g=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,s=e.originalType,o=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),m=p(a),g=r,k=m["".concat(o,".").concat(g)]||m[g]||u[g]||s;return a?n.createElement(k,i(i({ref:t},c),{},{components:a})):n.createElement(k,i({ref:t},c))}));function k(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var s=a.length,i=new Array(s);i[0]=g;var l={};for(var o in t)hasOwnProperty.call(t,o)&&(l[o]=t[o]);l.originalType=e,l[m]="string"==typeof e?e:r,i[1]=l;for(var p=2;p<s;p++)i[p]=a[p];return n.createElement.apply(null,i)}return n.createElement.apply(null,a)}g.displayName="MDXCreateElement"},51729:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>o,contentTitle:()=>i,default:()=>u,frontMatter:()=>s,metadata:()=>l,toc:()=>p});var n=a(87462),r=(a(67294),a(3905));const s={sidebar_position:12,title:"BSC Commands"},i=void 0,l={unversionedId:"bsc_commands",id:"bsc_commands",title:"BSC Commands",description:"BSC Commands",source:"@site/docs/bsc_commands.md",sourceDirName:".",slug:"/bsc_commands",permalink:"/supportkc/docs/bsc_commands",draft:!1,tags:[],version:"current",sidebarPosition:12,frontMatter:{sidebar_position:12,title:"BSC Commands"},sidebar:"tutorialSidebar",previous:{title:"EuroHPC Access",permalink:"/supportkc/docs/ehpcfederation"},next:{title:"File Systems",permalink:"/supportkc/docs/storage"}},o={},p=[{value:"BSC Commands",id:"bsc-commands",level:2},{value:"Commands Available per machine",id:"commands-available-per-machine",level:2},{value:"bsc_quota",id:"bsc_quota",level:2},{value:"bsc_py_packages",id:"bsc_py_packages",level:2},{value:"bsc_R_packages",id:"bsc_r_packages",level:2},{value:"bsc_project",id:"bsc_project",level:2},{value:"bsc_chat",id:"bsc_chat",level:2},{value:"bsc_affinity",id:"bsc_affinity",level:2}],c={toc:p},m="wrapper";
1function u(e){let{components:t,...a}=e;return(0,r.kt)(m,(0,n.Z)({},c,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"bsc-commands"},"BSC Commands"),(0,r.kt)("p",null,"The Support team at BSC has provided some commands useful for user's awareness and ease of use in our HPC machines.\nA short summary of these commands follows:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"bsc","_","queues: Show the queues the user has access to and their time/resources limits."),(0,r.kt)("li",{parentName:"ul"},"bsc","_","quota: Show a comprehensible quota usage summary for all accessible filesystems."),(0,r.kt)("li",{parentName:"ul"},"bsc","_","acct: Displays accounting information on the project's allocation usage."),(0,r.kt)("li",{parentName:"ul"},"bsc","_","load: Displays job load information across all related computing nodes."),(0,r.kt)("li",{parentName:"ul"},"bsc","_","py","_","packages: Searches for python packages installed. See ",(0,r.kt)("a",{parentName:"li",href:"#bsc_py_packages"},"bsc_py_packages section")," for more information."),(0,r.kt)("li",{parentName:"ul"},"bsc","_","R","_","packages: Searches for R packages installed. See ",(0,r.kt)("a",{parentName:"li",href:"#bsc_r_packages"},"bsc_R_packages section")," for more information."),(0,r.kt)("li",{parentName:"ul"},"bsc","_","project: Displays available HPC accounts and switches to one of them. See ",(0,r.kt)("a",{parentName:"li",href:"#bsc_project"},"bsc_project section")," for more information."),(0,r.kt)("li",{parentName:"ul"},"bsc","_","chat: Launches an interactive terminal-based chatbot interface to access generative AI models on MN5. See ",(0,r.kt)("a",{parentName:"li",href:"#bsc_chat"},"bsc_chat section")," for more information."),(0,r.kt)("li",{parentName:"ul"},"bsc","_","affinity: Wrapper that performs binding of processes to GPUs, network devices, and CPUs to improve the performance of jobs that use GPUs. See ",(0,r.kt)("a",{parentName:"li",href:"#bsc_affinity"},"bsc_affinity section")," for more information.")),(0,r.kt)("p",null,"Most available commands have a dedicated manpage (not all commands are available for all machines).\nYou can check more information about these commands checking their respective manpage:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"man <bsc_command>\n\nFor example:\nman bsc_quota\n")),(0,r.kt)("h2",{id:"commands-available-per-machine"},"Commands Available per machine"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Machine"),(0,r.kt)("th",{parentName:"tr",align:"right"},"bsc","_","queues"),(0,r.kt)("th",{parentName:"tr",align:"right"},"bsc","_","quota"),(0,r.kt)("th",{parentName:"tr",align:"right"},"bsc","_","acct"),(0,r.kt)("th",{parentName:"tr",align:"right"},"bsc","_","load"),(0,r.kt)("th",{parentName:"tr",align:"right"},"bsc","_","py","_","packages"),(0,r.kt)("th",{parentName:"tr",align:"right"},"bsc","_","R","_","packages"),(0,r.kt)("th",{parentName:"tr",align:"right"},"bsc","_","project"),(0,r.kt)("th",{parentName:"tr",align:"right"},"bsc","_","affinity"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Marenostrum","\xa0","5"),(0,r.kt)("td",{parentName:"tr",align:"right"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"right"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"right"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"right"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"right"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"right"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"right"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"right"},"\u2705")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Nord4"),(0,r.kt)("td",{parentName:"tr",align:"right"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"right"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"right"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"right"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"right"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"right"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"right"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"right"},"\u274c")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"NG-Grace"),(0,r.kt)("td",{parentName:"tr",align:"right"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"right"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"right"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"right"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"right"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"right"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"right"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"right"},"\u274c")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Quantum"),(0,r.kt)("td",{parentName:"tr",align:"right"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"right"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"right"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"right"},"\u274c"),(0,r.kt)("td",{parentName:"tr",align:"right"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"right"},"\u274c"),(0,r.kt)("td",{parentName:"tr",align:"right"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"right"},"\u274c")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Meep FPGA"),(0,r.kt)("td",{parentName:"tr",align:"right"},"\u2705"),(0,r.kt)("td",{parentName:"tr",align:"right"},"\u274c"),(0,r.kt)("td",{parentName:"tr",align:"right"},"\u274c"),(0,r.kt)("td",{parentName:"tr",align:"right"},"\u274c"),(0,r.kt)("td",{parentName:"tr",align:"right"},"\u274c"),(0,r.kt)("td",{parentName:"tr",align:"right"},"\u274c"),(0,r.kt)("td",{parentName:"tr",align:"right"},"\u274c"),(0,r.kt)("td",{parentName:"tr",align:"right"},"\u274c")))),(0,r.kt)("h2",{id:"bsc_quota"},"bsc_quota"),(0,r.kt)("p",null,"The bsc_quota command gives information about the disk usage and quota for the different filesets of the user/group."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"    Filesystem   Type          Usage          Quota          Limit     In doubt     Grace  |       Files  In doubt  \n     gpfs_home    USR       57.32 GB       80.00 GB       84.00 GB    545.49 MB      None  |      287160       945  \n gpfs_projects    GRP      182.54 TB        1.03 PB        1.08 PB    147.96 GB      None  |   272549058     25004  \n  gpfs_scratch    GRP       12.76 TB       83.28 TB       87.15 TB      8.24 GB      None  |     3958929      1188  \n")),(0,r.kt)("p",null,"The user's home has a fixed quota of 80 GB, accessible only by the same user, hence the 'USR' type. The ",(0,r.kt)("strong",{parentName:"p"},"/gpfs/projects/GROUP")," and ",(0,r.kt)("strong",{parentName:"p"},"/gpfs/scratch/GROUP")," quota is shared among all members of the same project, hence the 'GRP' type. The different fields of the output are as follows:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Usage"),": Disk space in use."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Quota"),": The soft limit of the given fileset, meaning surpassing this limit by less than 5% won't instantly block the fileset, but it will past a grace peri
1od of a week."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Limit"),": The hard limit of the given fileset, going over this limit will block any further attempts at writing data."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"In doubt"),": Disk usage not accounted for, this may be due to ongoing operations, exceeded quotas, or errors during write operations."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Grace"),": Remaining time until the fileset is blocked due to having exceeded the soft limit (but not the hard limit). Default initial value is 7 days.")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Files"),": Number of files existing in the given fileset."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"In doubt"),": Same as above, but applied to the number of files.")),(0,r.kt)("p",null,"When run from a Storage5 node (transfer","[1..4]",".bsc.es), the command will also output information regarding the Tapes usage:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"    Filesystem   Type   Files (disk)  Files (tapes)          Usage          Quota     Total Size\n    gpfs_tapes    USR           1865              0       532.0 MB              -       526.6 MB  \n    gpfs_tapes    GRP       65829112              0       189.2 TB      302.73 TB       270.6 TB  \n")),(0,r.kt)("p",null,"Both columns contain the same information, the first one including the disk and file usage for the user running the command, and the second one the group's:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Files (disk)"),": Number of files stored in the /gpfs/tapes disk space."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Files (tapes)"),": Number of files stored in the actual tapes."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Usage"),": Disk usage in /gpfs/tapes for the given user/group."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Quota"),": Soft limit of disk usage in /gpfs/tapes for the given group."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Total Size"),": Combined space used in the disk and physical tapes, may present some variation.")),(0,r.kt)("p",null,"This command can be run for any of the user's projects using the ",(0,r.kt)("strong",{parentName:"p"},"--group")," (-g) option:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"bsc_quota -g test01\n")),(0,r.kt)("p",null,"It can also write the output on a given unit, ranging from MB to PB, using the ",(0,r.kt)("strong",{parentName:"p"},"--unit")," (-u) option:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"bsc_quota -u GB\n")),(0,r.kt)("p",null,(0,r.kt)("em",{parentName:"p"},"bsc_quota")," also has a color-less mode, for terminals that don't support ANSI colors, with the ",(0,r.kt)("strong",{parentName:"p"},"--no-color")," option."),(0,r.kt)("h2",{id:"bsc_py_packages"},"bsc_py_packages"),(0,r.kt)("p",null,"The bsc_py_packages is a command designed to search through the python packages already installed in the machine so that you can find the module(s) that best suits your needs. This command is case non-sensitive."),(0,r.kt)("p",null,"The command has different options:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"You can specify the name of the packages in the command line:"),(0,r.kt)("pre",{parentName:"li"},(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"bsc_py_packages  -n name_package [name_package ...] \n")),(0,r.kt)("pre",{parentName:"li"},(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"bsc_py_packages  --name name_package [name_package ...]\n")),(0,r.kt)("p",{parentName:"li"},"Or if you prefer you can pass a requirements file as your list of packages to search:"),(0,r.kt)("pre",{parentName:"li"},(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"bsc_py_packages  -f [FILENAME] \n")),(0,r.kt)("pre",{parentName:"li"},(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"bsc_py_packages --filename [FILENAME]\n")),(0,r.kt)("p",{parentName:"li"},"You can either specify the name of the file or leave it blank. If no file name is specified, it looks for requirements.txt in the directory you are currently standing. ")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"You can save all of the results in a CSV table:"),(0,r.kt)("pre",{parentName:"li"},(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"bsc_py_packages  -c [CSV] \n")),(0,r.kt)("pre",{parentName:"li"},(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"bsc_py_packages --csv [CSV]\n")),(0,r.kt)("p",{parentName:"li"},"You can either specify the name of the csv or leave it blank. If no name is specified, results will be saved to 'py_packages.csv'.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"The command will print the first 5 results. If you want to print more or less results, you can specify it with the following option:"),(0,r.kt)("pre",{parentName:"li"},(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"bsc_py_packages  -N [NUMBER] \n")),(0,r.kt)("pre",{parentName:"li"},(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"bsc_py_packages --number [NUMBER]\n"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"To print the help message:"),(0,r.kt)("pre",{parentName:"li"},(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"bsc_py_packages  -h\n")),(0,r.kt)("pre",{parentName:"li"},(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"bsc_py_packages --help\n")))),(0,r.kt)("h2",{id:"bsc_r_packages"},"bsc_R_packages"),(0,r.kt)("p",null,"The bsc_R_packages is a command that allows you to search for R packages installed on machines. This way, you can find the version(s) of R for the installed packages. This command is case non-sensitive."),(0,r.kt)("p",null,"The command has different options:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"You can specify the name of the packages in the command line:"),(0,r.kt)("pre",{parentName:"li"},(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"bsc_R_packages  -n name_package [name_package ...] \n")),(0,r.kt)("pre",{parentName:"li"},(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"bsc_R_packages  --name name_package [name_package ...]\n")),(0,r.kt)("p",{parentName:"li"},"Or if you prefer you can pass a requirements file as your list of packages to search:"),(0,r.kt)("pre",{parentName:"li"},(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"bsc_R_packages  -f [FILENAME] \n")),(0,r.kt)("pre",{parentName:"li"},(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"bsc_R_packages --filename [FILENAME]\n")),(0,r.kt)("p",{parentName:"li"},"You can either specify the name of the file or leave it blank. If no file name is specified, it looks for requirements.txt in the directory you are currently standing. ")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"You can save all of the results in a CSV table:"),(0,r.kt)("pre",{parentName:"li"},(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"bsc_R_packages  -c [CSV] \n")),(0,r.kt)("pre",{parentName:"li"},(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"bsc_R_packages --csv [CSV]\n")),(0,r.kt)("p",{parentName:"li"},"You can either specify the name of the csv or leave it blank. If no name is specified, results will be saved to 'R_packages.csv'.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"The command will print the first 5 results. If you want to print more or less results, you can specify it with the following option:"),(0,r.kt)("pre",{parentName:"li"},(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"bsc_R_packages  -N [NUMBER] \n")),(0,r.kt)("pre",{parentName:"li"},(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"bsc_R_packages --number [NUMBER]\n"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"To print the help message:"),(0,r.kt)("pre",{parentName:"li"},(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"bsc_R_packages  -h\n")),(0,r.kt)("pre",{parentName:"li"},(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"bsc_R_packages --help\n")))),(0,r.kt)("h2",{id:"bsc_project"},"bsc_project"),(0,r.kt)("p",null,"The bsc_project command allows for a given user to switch between their slurm accounts, and set some environment variables.\nDue to this, the command must be run using 'source' instead of running it bare-bone like the other bsc_commands, although\navailable accounts can still be listed without using source:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"To list the currently available accounts:"),(0,r.kt)("pre",{parentName:"li"},(0,r.kt)("code",{parentName:"pre"},"bsc_project list\n"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"To switch to an account:"),(0,r.kt)("pre",{parentName:"li"},(0,r.kt)("code",{parentName:"pre"},"source bsc_project ACCOUNT\n")))),(0,r.kt)("p",null,"The environment variables set by this command are the following:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"ACCOUNT: Currently active slurm account\nGSCRATCH: Currently active /gpfs/scratch directory\nGPROJECTS: Currently active /gpfs/projects directory\n")),(0,r.kt)("h2",{id:"bsc_chat"},"bsc_chat"),(0,r.kt)("p",null,"The ",(0,r.kt)("inlineCode",{parentName:"p"},"bsc_chat")," command provides access to an interactive chatbot interface directly from the login nodes of MareNostrum 5. It allows users to interact with various generative AI models for tasks like code assistance, writing and support in bsc knowledge. "),(0,r.kt)("p",null,"To use it, you must first load the ",(0,r.kt)("inlineCode",{parentName:"p"},"bsc")," module and ensure you're on a supported login node (glogin1/2 or alogin1/2). Simply run:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"module load bsc\nbsc_chat\n")),(0,r.kt)("p",null,"Once launched, the tool will prompt you to select from a list of available and healthy models. Interaction happens within the terminal, and prompts are submitted using ",(0,r.kt)("inlineCode",{parentName:"p"},"ALT + ENTER"),". "),(0,r.kt)("p",null,"Full usage details can be accessed via ",(0,r.kt)("inlineCode",{parentName:"p"}
1,"man bsc_chat"),"."),(0,r.kt)("h2",{id:"bsc_affinity"},"bsc_affinity"),(0,r.kt)("p",null,"The ",(0,r.kt)("inlineCode",{parentName:"p"},"bsc_affinity")," command performs process binding to GPUs, CPUs, and network devices to improve the performance of GPU-based jobs. "),(0,r.kt)("p",null,"For GPU binding, the script detects the number of GPUs allocated per node for the job, determines the rank of each process within the node, and applies a modulo operation to assign each process to a specific GPU. Once the GPU assignment is determined, the script identifies the CPU cores that are closest to the selected GPU according to the system NUMA topology and binds the process to those cores. This reduces memory access latency and improves data locality. Additionally, the script assigns the network device closest to the GPU, improving GPU-to-network affinity and reducing communication latency. "),(0,r.kt)("p",null,"To use the wrapper, place the ",(0,r.kt)("inlineCode",{parentName:"p"},"bsc_affinity")," command immediately before the application binary that you want to execute:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"bsc_affinity [OPTIONS] <command> [args...]\n")),(0,r.kt)("p",null,"To prevent Slurm from applying its own CPU binding, you must disable the default Slurm CPU binding before running the application:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"export SLURM_CPU_BIND=none\n")),(0,r.kt)("p",null,"The available configuration options and usage information can be displayed with:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"bsc_affinity --help\n")))}u.isMDXComponent=!0}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.