C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

ASCIIファイルから数値データを高速読み出し [2]

[トピック内 48 記事 (41 - 48 表示)]  << 0 | 1 | 2 >>

■100332 / inTopicNo.41)  Re[13]: ASCIIファイルから数値データを高速読み出し
  
□投稿者/ HattariB (19回)-(2022/07/15(Fri) 22:43:09)
> 並列処理のアプローチの違いで、
> マルチスレッドによる並列処理はCPUのコアを生かし、
> SIMD専用命令はCPU命令そのもので効率的にデータを処理する手法です。
そのSIMD専用命令というのは、とある言語における実装にて、任意に制御できるものなのですか?

むかし3次元配列の添え字の添え字の添え字を計算する時に、行列の計算を取り入れてみたんですが、
多重ループの嵐になっちゃって、結局添え字の添え字の添え字でアクセスした方が速かったという
経験を持ってるんですが、そのあたりの演算をCPUがやってくれるって事ですか?

ハイパーつれっディングなんかも並列処理の手法として掲題されてても良いですよね。
引用返信 編集キー/
■100333 / inTopicNo.42)  Re[14]: ASCIIファイルから数値データを高速読み出し
□投稿者/ radian (87回)-(2022/07/15(Fri) 22:49:29)
2022/07/15(Fri) 22:51:03 編集(投稿者)

No100332 (HattariB さん) に返信
>>並列処理のアプローチの違いで、
>>マルチスレッドによる並列処理はCPUのコアを生かし、
>>SIMD専用命令はCPU命令そのもので効率的にデータを処理する手法です。
> そのSIMD専用命令というのは、とある言語における実装にて、任意に制御できるものなのですか?

C・C++は組み込み関数がありますね。(_mm256_うんたらかんたらとか)
.NETだと、System.Runtime.Intrinsics.X86 名前空間でSIMD命令の機能を呼び出すクラスがあります。
他の言語は知りません。

> むかし3次元配列の添え字の添え字の添え字を計算する時に、行列の計算を取り入れてみたんですが、
> 多重ループの嵐になっちゃって、結局添え字の添え字の添え字でアクセスした方が速かったという
> 経験を持ってるんですが、そのあたりの演算をCPUがやってくれるって事ですか?

まずSIMD命令で何が出来るか、という事を把握するところからがスタートになります。
そこから、SIMD命令向けのアルゴリズムを考える、数字パズルみたいな頭の痛い作業になります。
既に賢い人が組んだ高速なライブラリが使えるなら、そういったものを使った方がよいでしょう。
引用返信 編集キー/
■100334 / inTopicNo.43)  Re[15]: ASCIIファイルから数値データを高速読み出し
□投稿者/ HattariB (21回)-(2022/07/15(Fri) 22:55:52)
> C・C++は組み込み関数がありますね。(_mm256_うんたらかんたらとか)
> .NETだと、System.Runtime.Intrinsics.X86 名前空間でSIMD命令の機能を呼び出すクラスがあります。
> 他の言語は知りません。
要するにCPU依存って事ですね。
それ、ロジックのカテゴリに入れても良いのですか?
※前にロジックではなく性能へと話題が変わってる事を書いたつもり。

> まずSIMD命令で何が出来るか、という事を把握するところからがスタートになります。
なるほど。勉強させていただきます。

> そこから、SIMD命令向けのアルゴリズムを考える、数字パズルみたいな頭の痛い作業になります。
そうですか。では私には無理な話です。
RISCのパイプライン制御とか分岐予測の実装に手間取った位なんで、ついていけそうにありませんわ。

> 既に賢い人が組んだ高速なライブラリが使えるなら、そういったものを使った方がよいでしょう。
そですね。
たいへん失礼いたしました。

引用返信 編集キー/
■100335 / inTopicNo.44)  Re[16]: ASCIIファイルから数値データを高速読み出し
□投稿者/ radian (88回)-(2022/07/15(Fri) 22:59:36)
No100334 (HattariB さん) に返信
>>C・C++は組み込み関数がありますね。(_mm256_うんたらかんたらとか)
>>.NETだと、System.Runtime.Intrinsics.X86 名前空間でSIMD命令の機能を呼び出すクラスがあります。
>>他の言語は知りません。
> 要するにCPU依存って事ですね。
> それ、ロジックのカテゴリに入れても良いのですか?
> ※前にロジックではなく性能へと話題が変わってる事を書いたつもり。

CPU依存ですが、AVX2までなら今はもう殆どのPCで使えるんじゃないですかね。
.NETの標準ライブラリもSIMDで最適化されている部分もあり、
画像処理、音声処理などではほぼ無くてはならないものなので、
知らず知らずのうちに、SIMDの恩恵をかなり受けている筈です。
引用返信 編集キー/
■100336 / inTopicNo.45)  Re[17]: ASCIIファイルから数値データを高速読み出し
□投稿者/ HattariB (22回)-(2022/07/15(Fri) 23:02:21)
> 知らず知らずのうちに、SIMDの恩恵をかなり受けている筈です。

ロジックの範疇に入るのですか?
ttps://ja.wikipedia.org/wiki/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0_(%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF)
引用返信 編集キー/
■100337 / inTopicNo.46)  Re[18]: ASCIIファイルから数値データを高速読み出し
□投稿者/ radian (89回)-(2022/07/15(Fri) 23:05:35)
2022/07/15(Fri) 23:06:28 編集(投稿者)

No100336 (HattariB さん) に返信
>>知らず知らずのうちに、SIMDの恩恵をかなり受けている筈です。
>
> ロジックの範疇に入るのですか?
> ttps://ja.wikipedia.org/wiki/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0_(%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF)

リンク飛べないです。何が言いたいのかよく判りませんが、
SIMDが前提で成立するロジックが存在する以上、SIMDを考慮外にする必要は無くないですか?

引用返信 編集キー/
■100338 / inTopicNo.47)  Re[19]: ASCIIファイルから数値データを高速読み出し
□投稿者/ HattariB (23回)-(2022/07/15(Fri) 23:45:33)
> リンク飛べないです。何が言いたいのかよく判りませんが、
直リンク避けただけだったんですけど、飛べませんでしたか。
https://ja.wikipedia.org/wiki/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0_(%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF)
プログラム (コンピュータ)

> SIMDが前提で成立するロジックが存在する以上、SIMDを考慮外にする必要は無くないですか?
考慮外にはできませんが、“並列処理”というカテゴリを表す言葉と同列に扱わなければならないんでしたか?

なんか「バナナはおやつに含まれますか」みたいな問答になりそうなので、
納得できないけど引きます。
大変申し訳ございませんでした。
そしておやすみなさい


引用返信 編集キー/
■100390 / inTopicNo.48)  Re[4]: ASCIIファイルから数値データを高速読み出し
□投稿者/ ロット (5回)-(2022/07/24(Sun) 20:15:14)
みなさんご回答ありがとうございます。

いまのところ、No100193 (KOZ)の回答がベストな気がします。

これでも高速化が見込めそうなのでこの方法を使いたいと思います。

まだ、試していませんが、他の回答者の方法も試してみたいと思います。

一旦、締め切らせていただきます。

解決済み
引用返信 編集キー/

このトピックをツリーで一括表示

<前の20件
トピック内ページ移動 / << 0 | 1 | 2 >>

このトピックに書きこむ