最近の非常に高速なソフトウェア開発の問題

Fireは挽かれ、鋸は改良され、板はどんどん長くなり、

しかし、私たちのプログラムの速度はこれらのボードのサイズに匹敵しません...

18年に1度、大規模なコンパイラを書くことを考えたとき、そのためのアイデアをまとめたノートを書きました。

だから彼は彼自身のコードの永遠の最適化のために死んだ... =)



私のアイデアのいくつかを一般に紹介することにしました。

何か興味があれば、私に連絡して偽の活動を判断してください。

簡単に言うと、データマイニングと遺伝的アルゴリズムに基づいた自己最適化コンパイラを開発するための友人と、標準ライブラリの楽しいグッズを探しています。



そして、ここで、ハブラに関する最初の投稿の私の小さな紹介が始まります。

この購読を解除するには、トピックを完全に公開する必要はありませんが、単に私の立場を説明するだけです

開発で使用するコードをコンパイルおよび処理するための既存のシステムについて。



さあ、始めましょう...



私たちは皆、スレッドが優れていることを知っています。それらはプログラムを「並列化」することを可能にします

マルチコアアーキテクチャ「100%」で使用します

多くの人は、「ああ、このループを処理するためにいくつかのスレッドを宣言した方がいいかもしれませんが、

たぶん64の原子力機械で実行されるでしょう」

そして、彼らはこれがどのように逆説的かを理解していません。



まず、祖父-コッダーを尊敬し、これを聞いて、二度目の心臓発作を起こしたでしょう。

静的な構造の数を宣言して、他の構造の動的な数を処理する理由。



第二に:それは有益ですか? ここで、4コアプロセッサで16スレッド-標準的な状況を想像してください。 そう? すべてを16の小さな部分に分割し、それらの前に繰り返される脅威APIの大部分を追加しますが、4つのスレッドのみを宣言し、スレッドの初期化と破壊を宣言するのにかかる時間を短縮することで、これでパフォーマンスを獲得するのは簡単ではありません...



第三に、誰がすべての脅威へのタスクの分配を均等に分割すると言った。 そして、3つのスレッドが1つの結果を待っているとは限りません。



4番目:メモリ破損、メモリポイズニング、デッドロックなど...すべてのOpenMPユーザーと

脅威にも同様の問題が発生しました。 それらはアーランで長い間解決されてきましたが



5番目:CUDA、OpenCL、DirectCompute誰もがグラフィックカードがプロセッサであることを思い出しました...

あまり時間が経っていません。 そして、これらの開発の意味は? パフォーマンスの向上など。

古き良きPhotoshop CS4の個人的なダンプは、時間の40-60%を示しています

Nvidiaの開発者から呼ばれた「CUDAカーネルモードの変更」に費やしました。

シェーダーコンベアの精度とコマンドセットが限られていることを人々は忘れていました。

そのため、プロセッサに実行するためにコードの一部をダンプする必要がある場合があります。



6番目:グラフィックを描画するための拡張機能はいくつ知っていますか?..はい、いっぱいです。

そして、それらのうちどれがCudaで使用されていますか?



はい、多分あなたは上級のmego-codderであるか、私は単純な学生です。

そして、あなたにとって、ストリーム(および祖父のロック)のゲームは、過去3年間非常によく知られています。

さて、急いで(言いましょう)あなた...急いで...

ゲームはろうそくの価値がありますか? デバッグはどれほど難しいですか?

スレッドの同期/非同期はどのくらい複雑ですか?

それとも自分で気にしませんか?..うまくいきます、顧客の言葉は法律など



だから私はこの混乱をかき集め始めました。 楽しみは利己的で無謀ではありません...

これを自動化/最適化する必要があります。



続けるには、これで十分ではないかもしれませんが、ビジネスでは...

2番目の投稿では、私がやりたいことを説明します。

「トピックに関する」理解と穏やかな批判を期待しています。



ご清聴ありがとうございました。



All Articles