We may earn an affiliate commission when you visit our partners.
Course image
Tetsuya T

背景

最近、GPU(Graphics Processing Unit)やHPC(High Performance Computing)といったキーワードをよく耳にしませんか?

実はこのGPUやHPCを支えている1つのキーテクノロジーがCUDA(Compute Unified Device Architecture)です。

CUDAとはNVIDIAが提供しているGPGPUのプログラミング開発環境です。

CUDAを使う事で、通常の計算にGPU並列処理を行う事が可能になり、CPU1コアで行う逐次処理に比べて10~100倍程度の高速化を見込めます。つまり、一昔前のスーパーコンピューターのような環境をGPUを使えば誰でも手軽に用意することが出来ます。

CUDAはC言語を拡張したCUDA Cを使うのが一般的ですが、CUDA CではC言語でのメモリ管理をする必要があるため、プログラミングの手間がかかります。

そこで、CUDA CのラッパーライブラリであるPyCUDAを使う事でPythonからCUDAを取り扱うことが出来ます。

PythonからCUDAを使えるとCUDA Cで面倒なメモリ管理が楽になるだけでなく、ファイル入出力や可視化もPythonのライブラリが利用できるので非常に多くのメリットを持ちます。

本コースとは

Read more

背景

最近、GPU(Graphics Processing Unit)やHPC(High Performance Computing)といったキーワードをよく耳にしませんか?

実はこのGPUやHPCを支えている1つのキーテクノロジーがCUDA(Compute Unified Device Architecture)です。

CUDAとはNVIDIAが提供しているGPGPUのプログラミング開発環境です。

CUDAを使う事で、通常の計算にGPU並列処理を行う事が可能になり、CPU1コアで行う逐次処理に比べて10~100倍程度の高速化を見込めます。つまり、一昔前のスーパーコンピューターのような環境をGPUを使えば誰でも手軽に用意することが出来ます。

CUDAはC言語を拡張したCUDA Cを使うのが一般的ですが、CUDA CではC言語でのメモリ管理をする必要があるため、プログラミングの手間がかかります。

そこで、CUDA CのラッパーライブラリであるPyCUDAを使う事でPythonからCUDAを取り扱うことが出来ます。

PythonからCUDAを使えるとCUDA Cで面倒なメモリ管理が楽になるだけでなく、ファイル入出力や可視化もPythonのライブラリが利用できるので非常に多くのメリットを持ちます。

本コースとは

本コースは、PyCUDAを使ったGPU並列計算の入門講座です。

CUDAを取り扱うには、CUDAだけの知識ではなく、ハードウェアやソフトウェアの両方の知識を持っていた方が望ましいです。

この為、本コースではまずGPUとは何か?から始め、GPU周辺のハードウェアの知識(マザーボード/メモリ/GPUの性能指標)やCUDAの基礎的な用語(thread / block / grid / warpなど)で基礎を固めます。

そして、Google Colabを使った開発環境で実際のPyCUDAでのGPUプログラミングの基礎を学習していきます。

Google ColabはGoogleの提供する無料のPythonインタラクティブ環境ですが、実はGPUでの計算も対応しています。

この為、本コースはGPUをお持ちでない受講生の方も受講する事が可能になっています。

受講要件

本コースの受講要件は

・Pythonのプログラミングスキル

・数値計算の知識(*こちらは必須ではありません)

の2つです。このうち、最低限必要なのはPythonのプログラミングスキルのみです。

PyCUDAプログラミングを身に付けて、皆さんの計算を劇的に高速化しませんか?

まずはコースの概要だけでも見ていっていただければ幸いです。

Enroll now

Here's a deal for you

We found an offer that may be relevant to this course.
Save money when you learn. All coupon codes, vouchers, and discounts are applied automatically unless otherwise noted.

What's inside

Learning objectives

  • Pythonを用いたcudaプログラミング
  • Hpcやgpuプログラミングを始めるための基礎知識
  • Google colabを使ったgpuでのプログラムの実行方法

Syllabus

はじめに
コースの概要
GPUやCPUなどハードウェアの基礎的な知識が身に付きます。またGPUを選ぶ上で性能指標の見方が分かります
ハードウェアの基礎(GPU以外)
Read more
ハードウェアの基礎(GPU)
CUDAの基礎知識
CUDAの基礎知識(1)
CUDAの基礎知識(2)
C言語ミニマム
PyCUDAプログラミング(1) 基礎的なプログラミング
Google Colabについて
必要なファイルのダウンロード
CUDAでのHello World(スライド)
CUDAでのHello World(プログラミング)
これ以降の前提条件
SourceModule(スライド)
インデックスの計算方法についての補足
SourceModule(プログラミング)
外部ファイルの取込(スライド)
外部ファイルの取込(プログラミング)
CPU vs GPU(スライド)
CPU vs GPU(プログラミング)
CPU vs GPUについての補足
2次元配列の四則演算(スライド)
2次元配列の四則演算(プログラミング)
多次元配列の四則演算(スライド)
多次元配列の四則演算(プログラミング)
多次元配列の四則演算についての補足
演習:マンデルブロ集合(スライド)
演習:マンデルブロ集合(プログラミング)
【課題】マンデルブロ集合のCPUとGPUの実行時間比較
【解答例】マンデルブロ集合のCPUとGPUの実行時間比較
大規模計算の時に気を付けるポイント
PyCUDAプログラミング(2) 各種メモリ ライブラリの利用
シェアードメモリ(スライド)
シェアードメモリ(プログラミング)
テクスチャメモリ(スライド)
1次元テクスチャメモリ(プログラミング)
2次元テクスチャメモリ(プログラミング)
3次元テクスチャメモリ(プログラミング)
ライブラリの利用(スライド)
総和(スライド)
総和: Scan kernelを使う方法(プログラミング)
総和: Atomic演算を使う方法(プログラミング)
内積(スライド)
内積(プログラミング)
最大値・最小値(スライド)
最大値・最小値: Scan Kernel(プログラミング)
最大値・最小値の位置: cuBLAS(プログラミング)
並び替え(スライド)
並び替え(プログラミング)
テンプレート(スライド)
テンプレート(プログラミング)
ダイナミックパラレル(スライド)
ダイナミックパラレル(プログラミング)
オマケ:デスクトップPCへの環境構築
背景
ハードウェアの環境構築
ソフトウェアの環境構築(Visual Studio)
ソフトウェアの環境構築(CUDA Toolkit)
ソフトウェアの環境構築(Anaconda)

講義で使用したスライドをpdfとして纏めました。講義の復習にご活用ください。

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Teaches skills, knowledge, and/or tools that are useful for personal growth and development
Builds a strong foundation for beginners
Introduces skills, knowledge, and/or tools that are highly relevant to industry
Utilizes multiple modalities to deliver interesting and engaging materials
Teaches skills, knowledge, and/or tools that can help students in the classroom and workplace
Follows a curriculum that closely resembles that of a college course

Save this course

Save 【Pythonで学ぶ 】CUDA プログラミング入門 to your list so you can find it easily later:
Save

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in 【Pythonで学ぶ 】CUDA プログラミング入門 with these activities:
CUDAプログラミングのメンターを見つける
このアクティビティでは、CUDAプログラミングに関するガイダンスとサポートを提供してくれるメンターを探します。これにより、学習プロセスが加速し、より効果的になります。
Show steps
  • LinkedInやその他のプロフェッショナルネットワーキングプラットフォームで、CUDAプログラミングの専門家を探す
  • 地元の技術者育成組織や大学に連絡して、潜在的なメンターを見つける
  • オンラインフォーラムやコミュニティに参加し、経験豊富なCUDAプログラマーとつながる
PyCUDAの基本に関するチュートリアルを完了する
このアクティビティでは、PyCUDAライブラリを使用してCUDAプログラミングの基本を学びます。これにより、CUDAプログラミングの構文と概念を理解できます。
Show steps
  • PyCUDAの официальный документацию を参照する
  • オンラインチュートリアルまたはコースで、PyCUDAの基本的な使用方法を説明する
  • PyCUDAを使用した簡単な関数の作成と実行を試す
PyCUDAコード練習
このアクティビティでは、PyCUDAを使用してさまざまな並列計算タスクを実行します。これにより、並列プログラミングのスキルを向上させ、PyCUDAの機能をさらに理解できます。
Show steps
  • 行列の乗算、行列とベクトルの積などの基本的な線形代数操作を実行するPyCUDAカーネルを書く
  • 画像処理タスク(例:画像の回転、反転)を実行するPyCUDAカーネルを作成する
  • PyCUDAを使用して、大規模なデータセットの並列処理を実行する
Show all three activities

Career center

Learners who complete 【Pythonで学ぶ 】CUDA プログラミング入門 will develop knowledge and skills that may be useful to these careers:

Reading list

We haven't picked any books for this reading list yet.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Here are nine courses similar to 【Pythonで学ぶ 】CUDA プログラミング入門.
通訳者が教える 英語筋肉の鍛え方と使い方 / 誰でも英語が話せるようになる発音練習法A to Zその4・発音編
Most relevant
通訳者が教える基本動詞116のイメージと声に出して学ぶ例文演習法Vol.3:動詞を使いこなせば英語を話すのが楽になる...
Most relevant
通訳者が教える前置詞・助動詞・フレーズのイメージをマスターする講座:誰でも英語が話せるようになるシリーズその5
Most relevant
【教科書英語にさようなら!】 海外に行かずに2024年のリアル英会話をマスターするためのステップバイステップガイド
Most relevant
英語リスニング力UP! 【日本人のためのアメリカ英語発音講座 Vol.1】
Most relevant
現役シリコンバレーエンジニアが教えるPython 3 入門 + 応用 +アメリカのシリコンバレー流コードスタイル
Most relevant
知識ゼロからいきなり絵が上達する!絵画基礎マスタークラス
Most relevant
TOEIC...
Most relevant
【自分からすすんで英語を話せるようになるための…】英語で体当たり!受け身会話の捨て方
Most relevant
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2024 OpenCourser