カテゴリー別アーカイブ: GPGPU

書籍:Metal Programming Guide: Tutorial and Reference via Swift

OpenGLの赤本を出版している出版社から”Metal Programming Guide: Tutorial and Reference via Swift”が出るようですね。

出版社の紹介ページ
https://www.pearson.com/us/higher-education/program/Clayton-Metal-Programming-Guide-Tutorial-and-Reference-via-Swift/PGM1255392.html

目次を見ているとPart IIIでは画像処理,Machine VisionといったGPUの応用処理のほかにMetal特有のニューラルネットワーク関連のGPUアクセラレーションの話題が載るようですね.

CUDAなどではこうしたフレームワークがありますが,世代の近いDirect3D12やVulkanではこうしたフレームワークはないのでMetal特有の話題ということで興味深いですね.

Part III: Data Parallel Programming

Chapter 15: The Metal Compute Pipeline
Chapter 16: Image Processing in Metal
Chapter 17: Machine Vision
Chapter 18: Metal Performance Shaders Framework
Chapter 19: Neural Network Concepts
Chapter 20: Convolutional Neural Networks

Shader Model 6 Wave Intrinsicsサンプル

Shader Model 6 Wave Intrinsics サンプルを起動してみました.

https://github.com/Microsoft/DirectX-Graphics-Samples/tree/master/Samples/Desktop/D3D12SM6WaveIntrinsics

このサンプルでは,付属のCompileShader_SM6.batでシェーダをdxc.exe(HLSL 6.0用シェーダコンパイラ)でシェーダをコンパイルする必要があります.

Visual Studio 2017と10.0.15063.0のWindows 10 SDKがインストールされていれば下記にコンパイラがあると思います.

C:\Program Files (x86)\Windows Kits\10\bin\10.0.15063.0\x86\dxc.exe

ビルドを実行すると1~9までのレンダリングモードがあります.これでWave(NVIDIAならWarp, AMDならWavefront)やLane(Wave内の1スレッド)の処理を可視化します.

WaveやLaneなどの用語を再確認したい方は下記の記事のTerminologyを参照ください.

https://msdn.microsoft.com/en-us/library/windows/desktop/mt733232(v=vs.85).aspx

今回はすべての処理がピクセルシェーダで実装されています.

今回,GeForece GTX 1080で実行していますがWave内のLaneの数はGPUベンダーごとに違うのでAMDでは違う結果になると思います.

1.通常の描画

これがまず基本になります.Wave処理ありません.

2.Color Pixels by lane indices

これはカラー塗ってるピクセルのところをLaneのインデックスを表示しています.0~Wave数までのグラデーションになっているます.Wave内のLaneの割り当てられ方がわかります.

3.Show first lane (white dot) in each wave.

これは,Waveの単位の中で最初のLaneを白ピクセルで表示ています.

4.Show first(white dot)  and last(red dot) lanes in each wave.

これは前述のWaveの最初のLaneが白,最後とのLaneが赤で表示しています.

5.Color Pixels by active lane ratio (white = 100%; black = 0%)

カラーピクセルのあActive Laneの比率の可視化です.白が100%で黒が0%です.

6.Broadcast the color of the first active lane to the wave

これは,実行されてる最初のActive Laneの色をWave内のほかのLaneにブロードキャストしてその色を出力しています.

7.Average the color in a wave.

Wave内のLaneの色の平均を出しています.

8.Color pixels by prefix sum of distance between current and first lane.

これは,シェーダを見た感じでは現在のピクセルの座標値とWaveの最初のLaneの距離を取りその値をWavePrefixSumでLane内のすべての値で和をとっています.そのあとに,Wave内のActive Laneを取得して割って色を出しています.

9.Color pixels by their quad id

これ以前は,Wave単位で処理してましたがここでは2×2のLaneのQuad単位の処理を行っています.この処理では,Quad内の左上,右上,左下,右下と位置によって出力色を変えて出しています.

SIGGRAPH 2017 Open Problems in Real-Time Renderingのコース資料

Open Problems in Real-Time Renderingのコース資料が徐々に公開されています.

Open Problems in Real-Time Rendering
http://openproblems.realtimerendering.com/s2017/index.html

“Real-Time Rendering”ということで,ゲームやゲームエンジンの開発にかかわるような人が抱える問題や課題,将来予測などの4つのセッションがあります.

特に今回はPBR, GI, Compute, Deep Learningの活用というテーマに分かれています.

  • Physically-Based Materials: Where Are We? by Sébastien Lagarde (Unity Technologies)
  • A Certain Slant of Light: Past, Present and Future Challenges of Global Illumination in Games by Colin Barré-Brisebois (Electronic Arts SEED)
  • Future Directions for Compute-for-Graphics by Andrew Lauritzen (Electronic Arts SEED)
  • Deep Learning: The Future of Real-Time Rendering? by Marco Salvi (NVIDIA)

Radeon GPU Profiler 1.0リリース

AMDがRadeon GPU Profiler 1.0を公開しました.

Radeon GPU Profiler 1.0
http://gpuopen.com/radeon-gpu-profiler-1-0/

Radeon GPU Profiler(ツールのページ)
http://gpuopen.com/gaming-product/radeon-gpu-profiler-rgp/

こちらのツールは,Radeon向けのGPUプロファイラーでDirect3D12とVulkanに対応しています.

キューやコマンドの実行状況やWavefrontの占有率、コンテキストロールのストールなどを分析できます.

紹介動画なども公開されています.

Baikal Renderer:AMD RadeonRaysベースのオープンソースレンダラ

GPU OpenでBaikal RendererというAMD RadeonRaysベースのオープンソースのレンダラが紹介されています.

Baikal Renderer: Open-source Radeon ProRender backend
http://gpuopen.com/baikal-renderer-open-source-radeon-prorender-backend/

RadeonProRender-Baikalリポジトリ
https://github.com/GPUOpen-LibrariesAndSDKs/RadeonProRender-Baikal

RadeonRaysはレイトレ-シングのライブラリですが,Baikalはマテリアルやライト,ジオメトリなどの高機能なレンダラになっているようです.

GTC On-DemandでGTC 2017セッション動画が公開に

GTC On-DemandでGTC 2017セッション動画が公開になっています.

GTC On-Demand
http://on-demand-gtc.gputechconf.com/gtcnew/on-demand-gtc.php

GTC 2017セッション
http://on-demand-gtc.gputechconf.com/gtcnew/on-demand-gtc.php?searchByKeyword=&searchItems=&sessionTopic=&sessionEvent=2&sessionYear=2017&sessionFormat=&submit=&select=

書籍:GPU Zen: Advanced Rendering Techniques

GPU Proなどの編集務めたWolfgang Engel氏のGPUテクニック集めた新しい書籍が出たようですね.

書籍のサイト
http://gpuzen.blogspot.jp/

Amazonを見ているとKindle版が紙に比べて格段に値段が安いのでデジタルで読むのがいいのかもしれないですね.

目次なんかを見ていると以前,Eidos Montreaのblogで公開されていた”Deferred+: Next-Gen Culling and Rendering for Dawn Engine”の詳細な記事(30ページ近くの解説.シェーダの提示もあり)が入っています.

Geometry Manipulation (Christopher Oat)

  1. Attributed Vertex Clouds by Willy Scheibel, Stefan Buschmann, Matthias Trapp, and Jürgen Döllner
  2. Rendering Convex Occluders with Inner Conservative Rasterization by Marcus Svensson and Emil Persson

Lighting (Carsten Dachsbacher)

  1. Rendering stable indirect illumination computed from reflective shadow maps by Louis Bavoil and Holger Gruen
  2. Real-Time Participating Media Effects Using Extruded Light Volumes by Nathan Hoobler, Andrei Tatarinov and Alex Dunn

Rendering (Mark Chatfield)

  1. Deferred+: Next-Gen Culling and Rendering for Dawn Engine by Hawar Doghramachi and Jean-Normand Bucci
  2. Programmable per-pixel sample placement with conservative rasterizer by Rahul P. Sathe
  3. Mobile Toon Shading by Felipe Lira, Flávio Villalva, Jesus Sosa, Kléverson Paixão and Teófilo Dutra
  4. High-Quality GPU-efficient Image Detail Manipulation by Kin-Ming Wong and Tien-Tsin Wong
  5. Real-Time Linear-Light Shading with Linearly Transformed Consines by Eric Heitz and Stephen Hill
  6. Profiling and Optimizing WebGL Application Using Google Chrome by Gareth Morgan

Screen-Space (Wessam Bahnassi)

  1. Scalable Adaptive SSAO by Filip Strugar
  2. Robust Screen Space Ambient Occlusion in 1 ms in 1080p on PS4 by Wojciech Sterna
  3. Practical Gather-based Bokeh Depth of Field by Wojciech Sterna

Virtual Reality (Eric Haines)

  1. Efficient Stereo and VR Rendering by Iñigo Quilez
  2. Understanding, Measuring and Analyzing VR Graphics Performance by James Hughes, Reza Nourai, and Ed Hutchins

Compute (Wolfgang Engel)

  1. Optimizing the Graphics Pipeline with Compute by Graham Wihlidal
  2. Real Time Markov Decision Processes for Crowd Simulation by Sergio Ruiz and Benjam´ın Hernández

OpenCL 2.2 SPIR-V 1.2リリース

Khronos GroupがOpenCL 2.2とSPIR-V 1.2のリリースを発表しています.

Khronos Releases OpenCL 2.2 With SPIR-V 1.2
https://www.khronos.org/news/press/khronos-releases-opencl-2.2-with-spir-v-1.2

昨年仕様が発表されリリースという形になったようですね.OpenCL 2.2ではOpenCL C++カーネルがC++14相当になったようですね(GPU上での動作に制約があるものなどは動かないのでサブセットということで).ほかにSYCL 2.2(SYCLはOpenCLのようにCPUとGPUのコードが分離する形ではなく,混在して書ける環境)などもリリースされているようですね.

https://www.khronos.org/assets/uploads/press_releases/Khronos-releases-OpenCL2-2_JP.pdf

OpenCLに関してはあまり追ってなかったのですが,SPIRとSPIR-Vと別れていたものはSPIR-V 1.1でOpenCL対応になっていたんですね.1.2はOpenCL 2.2で拡張された部分の対応のようですね.