this post was submitted on 04 Oct 2024
14 points (100.0% liked)

Linux

48180 readers
1187 users here now

From Wikipedia, the free encyclopedia

Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).

Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.

Rules

Related Communities

Community icon by Alpár-Etele Méder, licensed under CC BY 3.0

founded 5 years ago
MODERATORS
 

Hi, I'm trying to get SCALE to work but I'm so confused by what they mean by PATH and I'm stuck.

https://github.com/spectral-compute/scale-docs/blob/master/docs/manual/how-to-use.md

I'm at the CMAKE step.

This is the official guide I'm following. I do understand what they mean by SCALE_PATH though as that is clearly explained but PATH is just very vague to me or I'm just misunderstanding it completely.

top 8 comments
sorted by: hot top controversial new old
[–] [email protected] 7 points 1 month ago (2 children)

PATH is a shell variable that defines where stuff can be executed from without writing their absolute path.

So the export PATH command just adds the scale stuff to the path.

[–] [email protected] 2 points 1 month ago

Thanks, I'm still not sure I completely understand but I think this iis how it's supposed to be

[–] [email protected] 1 points 1 month ago (1 children)

Well, I progressed quite a bit and learned a lot more than I knew until now but I give up. This is way over my head, I'll stick to using ROCM for now. Thanks for pointing me in the right direction at least.

[–] [email protected] 2 points 1 month ago (1 children)

Sorry to tell you to RTFM, but little obstacles like this will be WAY easier to deal with if you just commit some time to learning the basics. I'd recommend linuxjourney.com, if you take the time to fully understand everything there you will know more than 99% of people here about this stuff

[–] [email protected] 1 points 1 month ago

I'm fine with RTFM but I had no idea PATH is a global variable and I assumed it's telling me to specify path to something. So I had no idea I need to RTFM because I did not RTFM to understand that I need to RTFM. After the first reply pointed me the right direction I managed to make sense of it. Though english is not my first language and some of the terms are just over my head so I had to RTFM with dictionary which took a lot of time for me to finally understand because I was doing another thing wrong on top of that which specifically was

I had to do ~/SCALE_PATH instead of the confusing example of $(SCALE_PATH} as trying nvcc --version did absolutely nothing even though the path was correct

I've been on Linux since April so I've stumbled a lot but got many things to work, it just takes me a lot of time to get trough it and I've really stumbled on this one. Getting ROCM to work was a breeze and most recently getting PyTorch with ROCM to work for AI generative models on AMD. I've also finally started to tinker with toolbox a lot more and finally understand the benefits of it.

[–] [email protected] 5 points 1 month ago (1 children)

Explaining like you are 5:

If you have worked with programming languages, you might have come across global variables and inbuilt functions/keywords. PATH is a similar global variable for your terminal session.

Every time you open up a terminal, you load up these "global variables", and you/programs can access them (or the applications assigned to them).

So, let's say you have your application (executable) as /home/werecat/corncob/bin/corn, instead of starting it with ./home/werecat/corncob/bin/corn ..., if you have /home/werecat/corncob/bin in your PATH variable, you can just use it as corn ....

export PATH="/home/werecat/corncob/bin:$PATH"

just means:

  1. PATH = /home/werecat/corncob/bin + PATH
  2. persist (export) path for the duration of this session (usually until you close the terminal tab)

If you see somewhere to add it to your /home/werecat/.bashrc file, it means "all commands in .bashrc file are auto-executed every time you start a new terminal session, so if you have it there, you won't need to manually keep entering the command over and over again".

You can list these environment variables by just running:

env

Also, recommend you have a look at https://www.freecodecamp.org/news/how-to-set-an-environment-variable-in-linux/.

Hope this helps. Good luck on your Linux journey.

[–] [email protected] 1 points 1 month ago

Thanks. That's a good ELI5. Fortunately I managed to make sense of it before your reply but the link to environment variables is highly appreciated. As I already replied to someone else, I had no idea PATH was a global/environment variable and just assumed it's telling me to specify path so I had no idea I need to RTFM as it confused me greatly and on top of that I did another mistake which confused me even more when I finally managed to get it to do correctly which made me think I am doing it wrong.

I gave up at CMAKE finally as I really need to RTFM more on that as it started to throw many errors at me.

[–] [email protected] 2 points 1 month ago

So I don't know how much you know about the shell, but the way that the linux command line works is that there are a set of variables, called environment variables, which dictate so me behavior of the shell. For example, $PATH variable, refers to what directories to search through, when you try to execute a program in your shell.

The documentation you linked, wants you to create a custom shell variable, called SCALE_PATH, consisting of a folder path, which contains the compiled binaries/programs of scale you want to run.

This command: export PATH="${SCALE_PATH}/bin:$PATH"

temporarily edits your PATH variable to add that folder with the scale programs you want to run to your path, enabling you to execute them from your shell.