The Wayback Machine - https://web.archive.org/web/20200602214221/https://github.com/mozilla/DeepSpeech/issues/2942
Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Document requirement for AVX #2942

Open
JRMeyer opened this issue Apr 25, 2020 · 13 comments
Open

Document requirement for AVX #2942

JRMeyer opened this issue Apr 25, 2020 · 13 comments

Comments

@JRMeyer
Copy link
Collaborator

@JRMeyer JRMeyer commented Apr 25, 2020

There's a known issue that I've just run into (on a chromebook) and many others ran into (both here and on discourse).

If you're using an old / cheap CPU without AVX support, running deepspeech will result in:

Illegal instruction (core dumped)

This should be added to the docs somewhere... maybe a "hardware requirements" section?

@kdavis-mozilla
Copy link
Collaborator

@kdavis-mozilla kdavis-mozilla commented Apr 25, 2020

The release notes have a Supported Platforms section which indicates that AVX is required, among other things.

@JRMeyer
Copy link
Collaborator Author

@JRMeyer JRMeyer commented Apr 25, 2020

Maybe there should also be a mention in the repo docs?

@ssokolow
Copy link

@ssokolow ssokolow commented Apr 25, 2020

I agree. I was actively looking for system requirements and I didn't find them until you told me where to look because it never occurred to me to check the release notes.

Also, it could be a little more clear.

I think this means I can use it on my Athlon II X2 270 (predates AVX/FMA) as long as I pick the version which will hand off to my GeForce GTX750 (compute capability 5.0), but I shouldn't feel so un-confident in that assessment. (For all I know the "with a modern CPU" refers to the AVX/FMA requirement in both cases and you just didn't repeat it. I've seen people do that before.)

  • Linux x86 64 bit with a modern CPU (Needs at least AVX/FMA)
  • Linux x86 64 bit with a modern CPU + NVIDIA GPU (Compute Capability at least 3.0, see NVIDIA docs)
@lissyx lissyx removed their assignment Apr 25, 2020
@lissyx
Copy link
Collaborator

@lissyx lissyx commented Apr 26, 2020

I think this means I can use it on my Athlon II X2 270 (predates AVX/FMA) as long as I pick the version which will hand off to my GeForce GTX750 (compute capability 5.0), but I shouldn't feel so un-confident in that assessment. (For all I know the "with a modern CPU" refers to the AVX/FMA requirement in both cases and you just didn't repeat it. I've seen people do that before.)

I don't understand your question. Are you asking if the GPU builds are also dependant on AVX/FMA ?

@ssokolow
Copy link

@ssokolow ssokolow commented Apr 26, 2020

  1. I am wondering that.
  2. I'm suggesting that the system requirements should be made more clear, because it's unclear whether the AVX/FMA requirement is in addition to "a modern CPU" (not needed for GPU builds) or the definition of "a modern CPU" (needed for GPU builds).
@lissyx
Copy link
Collaborator

@lissyx lissyx commented Apr 26, 2020

1. I _am_ wondering that.

2. I'm suggesting that the system requirements should be made more clear, because it's unclear whether the AVX/FMA requirement is in addition to "a modern CPU" (not needed for GPU builds) or the definition of "a modern CPU" (needed for GPU builds).

Well, I guess a PR from you rewording that is useful because for us it is trivial that "modern CPU" is the AVX/FMA contraint, and this you need it also for GPU builds.

@ssokolow
Copy link

@ssokolow ssokolow commented Apr 27, 2020

It's a matter of perspective. Ever since the race to keep a PC sufficiently performant for non-game tasks relaxed, "modern CPU" has stopped being obvious... especially for Linux users. I think we only have one machine in the whole house with AVX but, from how the machines perform the desired tasks, they certainly still feel modern.

(To be honest, I was still thinking of AVX as "that Intel thing that arrived on AMD products recently enough that requiring it would be like selling a game that only runs on nVidia GPUs.")

As for the PR, are you asking me to modify the README to add the requirements or is there a way to modify Releases metadata through PRs that I'm unaware of?

@lissyx
Copy link
Collaborator

@lissyx lissyx commented Apr 27, 2020

(To be honest, I was still thinking of AVX as "that Intel thing that arrived on AMD products recently enough that requiring it would be like selling a game that only runs on nVidia GPUs.")

AVX has been on AMD CPUs for years: when we verified the requirements, it was introduced in 2011 for Intel (SandyBridge I think) and AMD (Bulldozer as much as I can tell).

As for the PR, are you asking me to modify the README to add the requirements or is there a way to modify Releases metadata through PRs that I'm unaware of?

README, not the release notes.

@ssokolow
Copy link

@ssokolow ssokolow commented Apr 27, 2020

AVX has been on AMD CPUs for years: when we verified the requirements, it was introduced in 2011 for Intel (SandyBridge I think) and AMD (Bulldozer as much as I can tell).

There's a reason I said "still thinking of". When you're on the last pre-AVX AMD generation and the rest of the family has slower CPUs, regardless of generation, it skews your perception.

README, not the release notes.

Thanks. I'm not sure when I'll get to it, but I'll try not to make it too long.

@kdavis-mozilla kdavis-mozilla added this to To do in Deep Speech 1.0.0 via automation May 18, 2020
@lissyx
Copy link
Collaborator

@lissyx lissyx commented Jun 2, 2020

@ssokolow Do you have a wording suggestion, so that we can make the documentation elss ambigous?

@ssokolow
Copy link

@ssokolow ssokolow commented Jun 2, 2020

Working from these phrasings and trying to retain its current concision...

Linux x86 64 bit with a modern CPU (Needs at least AVX/FMA)
Linux x86 64 bit with a modern CPU + NVIDIA GPU (Compute Capability at least 3.0, see NVIDIA docs)

...maybe this.

Linux x86 64 bit with an AVX/FMA-capable CPU
Linux x86 64 bit with an AVX/FMA-capable CPU + NVIDIA GPU (Compute Capability at least 3.0)

  1. It's shorter. (The existing one word-wraps in the comment preview while this doesn't.
  2. It avoids the ambiguity of saying "a modern CPU" in both but allowing the interpretation that the CUDA requirement replaces the AVX/FMA requirement.
  3. It takes advantage of how hyperlinks are used on sites like Wikipedia. (i.e. "Click here to learn about Compute Capability")
  4. It just generally avoids the duplication of saying "a modern CPU, meaning a CPU with ..." or "Compute Capability, and here's a hyperlink" when you can just say "a CPU with ..." or hyperlink the "Computer Capability" to begin with.
@lissyx
Copy link
Collaborator

@lissyx lissyx commented Jun 2, 2020

Working from these phrasings and trying to retain its current concision...

Linux x86 64 bit with a modern CPU (Needs at least AVX/FMA)
Linux x86 64 bit with a modern CPU + NVIDIA GPU (Compute Capability at least 3.0, see NVIDIA docs)

...maybe this.

Linux x86 64 bit with an AVX/FMA-capable CPU
Linux x86 64 bit with an AVX/FMA-capable CPU + NVIDIA GPU (Compute Capability at least 3.0)

1. It's shorter. (The existing one word-wraps in the comment preview while this doesn't.

2. It avoids the ambiguity of saying "a modern CPU" in both but allowing the interpretation that the CUDA requirement replaces the AVX/FMA requirement.

3. It takes advantage of how hyperlinks are used on sites like Wikipedia. (i.e. "Click here to learn about Compute Capability")

4. It just generally avoids the duplication of saying "a modern CPU, meaning a CPU with ..." or "Compute Capability, and here's a hyperlink" when you can just say "a CPU with ..." or hyperlink the "Computer Capability" to begin with.

Happy to review a PR with those wording :)

@ssokolow
Copy link

@ssokolow ssokolow commented Jun 2, 2020

I'll see what I can do. The main holdup in providing a PR of any kind has been that I've been having trouble making time for it on my end. Things just keep coming up and, when I do find time, it's been pushed to near the back of my priority-sorted TODO queue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.