We've presented at a high level what the programming model looks like.
Now what you need to know is what is the GPU good at?
How is it going to be good at running programs I write in this programming model?
So what is the GPU good at?
For now, let me just tell you two things.
Keep these in mind as you're planning your program.
Thing number one: it is really good at efficiently launching lots of threads.
You may be used to other programming environments where launching threads is an expensive process.
That is not the case here.
In fact, as we'll discuss later, if you're not launching lots of threads, you're not using the GPU effectively.
Dave, my co-instructor, likes to say that the GPU doesn't even
get out of bed in the morning for fewer than a 1000 threads.
The second thing that a GPU is good at is actually running
lots of those threads in parallel all at the same time.
Now we're going to consider a simple example.
We're going to take an input array of 64 floating point numbers, numbered 0 to 63,
and we're going to square each number in the array.
So the output will be 0, 1, 4, 9, and so on.
We're going to do this in three steps.
We're going to start by looking at how we'd run this code on the CPU.
Then we'll talk about how we'd run this on the GPU without looking at code,
instead just discussing what our code would do.
Then we'll dive into what the code actually looks like.
우리는 프로그래밍 모델이 어떻게 보이는지에 대해서 높은 차원에서 이를 제시했습니다.
이제 알아야 할 점은 '무엇이 GPU에 능숙할까' 입니다.
어떻게 이것이 내가 이 프로그래밍 모델에서 쓰는 작동중인 프로그램에 익숙해지게 할까요?
무엇이 GPU를 사용하는데 능숙한 행동에 속하게 될까요?
이제, 두 가지를 여러분에게 말씀드리겠습니다
프로그램을 계획할 때 이 점을 유념하세요.
첫째로 이것은 다수의 스레드를 효과적으로 시작할 때 정말로 좋습니다.
여러분은 스레드를 시작하는 데 돈이 많이 드는 과정에 있는 다른 프로그래밍 환경에 익숙해져 있을 것입니다.
저것이 여기에서 사례가 아닙니다.
실제로, 이후에 우리가 논의할 것과 같이, 만약 다수의 스레드를 시작하지 않고 있다면, GPU를 효과적으로 사용하고 있지 않은 것입니다.
내 동료 교사인 데이브는 GPU가 1000개보다 더 적은 수의 스레드 때문에
아침에 침대에서 잃어나기 싫어한다고 말하기를 좋아합니다.
GPU 사용 중에 능숙해져야 하는 사실 가운데 두 번째는
동시에 모든 다수의 스레드를 병렬 상태에서 작동시켜야 한다는 점입니다.
이제 우리는 단순한 예시를 고려해보겠습니다.
우리는 0에서부터 63까지의 번호를 매긴 64개의 부동소수점의 입력 배열을 선택하게 됩니다.
그리고 배열에서 각 수를 제곱할 것입니다.
그러므로 산출이 0, 1, 4, 9 등이 될 것입니다.
우리는 세 단계로 이것을 계산할 것입니다.
우리는 CPU에서 이 코드를 어떻게 작동시켜야 하는지 보면서 시작하겠습니다.
그 뒤에 코드를 보지 않고 GPU에서 이것을 어떻게 작동시켰는지 이야기할 것입니다.
코드가 무엇이 되어야하는지를 단지 논의하는 대신 말입니다.
그 뒤에 코드가 실제로 무엇처럼 보이는지 탐구해 보겠습니다.
Мы рассмотрели, что из себя представляет эта модель программирования на высоком уровне.
Теперь вам нужно узнать, для чего же подходит GPU?
Насколько эффективной будет работа программы, написанной в этой программной модели.
Для чего подходит GPU?
Пока позвольте мне рассказать у двух вещах.
Держите их в уме, когда планируете свою программу.
Во-первых: эффективно запускать много thread'ов.
Мы может быть привыкли к другой программной среде, где запуск thread это дорогой процесс.
Это не этот случай.
По факту, как мы обсудим позже, если вы не планируете запуск множества thread'ов, вы не используете GPU эффективно.
Дэйв, мой со-инструктор, любит говорить, что GPU даже
не встанет с кровати утром для менее чем 1000 thread'ов.
Вторая вещь, для которой подходит GPU, это запуск
большого количества тех thread'ов параллельно в одно и тоже время.
Теперь рассмотрим простой пример.
Мы получим на вход 64 чисел с плавающей запятой, от 0 до 63,
и возведем в квадрат каждое число в этом массиве.
Результатом будет 0, 1, 4, 9 и так далее.
Мы сделаем это три этапа.
Начнем с рассмотрения как реализовать это на CPU.
Затем без рассмотрения кода поговорим как мы бы запустили это на GPU
вместо того чтобы обсуждать каким был бы наш код.
Затем углубимся в то какое это код на самом деле.
我们已在高层次展示了编程模型是什么样的。
现在你需要知道的是,GPU擅长什么?
它如何擅长运行我用这个编程模型写的程序?
所以GPU擅长什么?
目前,我就告诉你两件事。
在你计划你的程序时,要牢记这两件事。
第一件事:它非常善于有效启动大量线程。
你可能习惯于其它编程环境,启动线程是个昂贵的过程。
而在这里,情况不是这样。
实际上,正如我们稍后要讨论的,如果你不启动很多线程,你就没有有效地使用GPU。
我的合作讲师Dave喜欢说,处理少于100个线程,
GPU甚至都没有在早上起床(没有发挥真正的作用)。
第二件事GPU擅长的事是实际上
同时并行运行大量的线程。
现在我们要考虑一个简单的例子。
我们要取一个输入数组,含64个浮点数,编号为0到63,
我们将把数组中的每个数字平方。
所以输出是0、1、4、9等等。
我们分三步进行。
我们首先看看如何在CPU上运行该代码。
然后,我们不看代码,说说如何在GPU上运行这,
而不是只讨论我们的代码做什么。
接着我们深入了解代码实际上是什么样。