« 2019年1月 | トップページ | 2019年3月 »

2019.02.28

C++標準機能でスレッドプールを実装する記事


フォローしているC++記事をツイートしているアカウントで興味深い記事があったのでメモ。

上の記事はいくつかの記事を前提にしているので、前提記事からですが、下記の記事は現在のC++の標準機能でシンプルなスレッドプールの実装を解説しています。

Simple thread pool
http://blog.vorbrodt.me/?p=631

著者はスレッドプールの実装を解説した記事がネット上でなくなってきているので、C++標準機能で

とは言え、上記記事はシンプルな実装で、パフォーマンスを出すために発展的な実装を下記の記事を新たに書いています。

Advanced thread pool
http://blog.vorbrodt.me/?p=833

最初の記事のシンプルな実装からちゃんと上手なキューの割り当てがされてるような実装になっているようですね。

2019.02.26

Ray Tracing Gemsの記事の"Hybrid Rendering for Real-Time Ray Tracing"が公開

Hybrid Rendering for Real-Time Ray Tracingが記事公開になっていますね。

あとでチェック。


2019.02.21

RTXのTensor CoreがCompute Shaderから使えるように

Tensor Coreって、ユーザーが自由に使える方法あるのかな?って思ってましたが、こういう形でCompute Shaderから使えるようになるんですね。

Direct3D12ではこれは、DirectMLなんかで使えるようになるんでしょうかね?

2019.02.18

C++でSIMDで最適化の話

今日はSIMDの話題をよく見かけますね。

上のTweetはmeshoptimizer の開発者の方のものです。

meshoptimizer
https://github.com/zeux/meshoptimizer

Visual Studio 2019(現在プレビュー版)でSSEやAVXの組み込み命令を駆使しての最適化が解説されています。

ゲームの開発者だとC++でコードを記述するベクトルや行列の高速化で使う機会が多いですが、組み込み命令まではちょっと...という場合にはDirectXMathがSSEやAVX、NEONまでサポートしているのでそれでいい気はします。

DirectXMath
https://github.com/Microsoft/DirectXMath

とは言え、自分で勉強したいという人はDirectXMathのコードベースが大きすぎる...ということであればAnimation Compression Libraryの開発者が公開しているRealtime Mathが手ごろかもしれませんね。

Realtime Math
https://github.com/nfrechette/rtm

.NET CoreでSIMDやパストレの話題

.NET Coreでは、SSEやAVXなどのSIMDが使いやすくなっているようで、ベクトルや行列型で活用できるようですね。

上記のツイートのリポジトリは、それを使ったC#でパストレだそうです。

もうちょっと.NET CoreでSIMDの基本的なサンプルが見たいという方は下記のリポジトリがいいかもしれません。

SimdDoors
https://github.com/tgjones/SimdDoors

このリポジトリではGDCの"SIMD at Insomniac Games"を参考にしているようです。

SIMD at Insomniac Games
https://deplinenoise.files.wordpress.com/2015/03/gdc2015_afredriksson_simd.pdf

このセッションは、CEDEC 2017の下記のセッションで登壇された方ですね。

パフォーマンスをあげて、より多くのゲームプレイを   More Performance, More Gameplay
https://cedil.cesa.or.jp/cedil_sessions/view/1647

2019.02.08

NVIDIAのレイトレの話題2/8

Ray Tracing Gemsがオンラインで読めることとFermatいうオープンソースのレンダラの話です。

« 2019年1月 | トップページ | 2019年3月 »