c/c++

【c/c++】AVX2を使った行列積を計算するプログラム

講義で作ったOpenMPとAVX2命令を使って4096x4096の行列積を計算するプログラムです。そのまま並列化しろという内容だったので最適化はちゃんとしていませんが、折角作ったので公開しておきます。 ソースコード #include <stdio.h> #include <stdlib.h> #include <time.h> #include <omp.h> #inc</omp.h></time.h></stdlib.h></stdio.h>…

【c/c++】Microsoft PPL/並列STL(C++17)/OpenMPを少しだけ比較【C++17】

Visual Studioのc++で利用できる並列化手法としては、Microsoft PPL、並列STL(C++17)、OpenMPなどが有ります。この内どれが速いのが知りたくなったので実行速度を比較しました。 手法ごとに使う機能が異なっている(後述)ため、比較としてはかなりよろしく…

【c/c++】AVX2を使った円周率を求めるプログラム――修正

結果の加算周りが非効率なためこの記事に載せたプログラムは遅いです。 この部分を修正した場合、AVX2無しで動かしたほうが高速です。 wrongwrong163377.hatenablog.com wrongwrong163377.hatenablog.com 上記記事で作ったモンテカルロ法で円周率を求めるプ…

【c/c++】AVX2を使ってみて少しだけ比較

結果の加算周りが非効率なためこの記事に載せたプログラムは遅いです。 この部分を修正した場合、AVX2無しで動かしたほうが高速です。 wrongwrong163377.hatenablog.com 記事中のAVX2命令を用いたプログラムはcmp命令を使っていないため低速な状態です。これ…

【c/c++】OpenMPの基礎的な使い方+並列処理で意識すべきこと【OpenMP】

OpenMPの基礎的な使い方を通して並列処理で意識すべきことを書きます。 ここではコンパイル方法や詳細な内容については触れませんが、OpenMPのより詳細な使い方については参考文献を参照してください。 記事の内容をざっくりとまとめると、並列化の上で知っ…

【c/c++】Suffix ArrayとBWTに関するプログラムを作ってみた【c++17】

2018/6/25:concurrency::concurrent_vectorを使うべきだったがstd::vectorを使用しており、長い文字列の処理が不安定であったため、これを踏まえて全体に書き直し。 最近c++を触る機会ができたり、c++17の機能を使ってみたかったりしたので、課題にかこつけ…

【c/c++】SFMTを使ってみた

SFMTを利用できるようにするまでをまとめます。(※現状上手く動いていません、備忘用メモ程度です……) ダウンロード 下記URLからダウンロードします。 SIMD-oriented Fast Mersenne Twister (SFMT) 配置 解凍して配置します。 SFMTはビルドしなければ利用で…

【プログラミング】CodeIQ用入出力類

CodeIQを色々な言語でやってると「入出力どうやったっけ」って場面が増えたり、出先でやる時作り直したりがダルかったりしたので、入出力類だけ自分用にまとめます。 CとC#は追加したいですが、とりあえずいったん飽きたのでこれまで。 gist.github.com

Androidで、JavaのActivityからc++のNativeActivityを呼び出す

Androidでは、c++のみで書かれるNativeActivityがあります。 github.com これは通常のActivityと同じように、別のActivityから遷移させることが可能です。 今回は、この遷移についてやった内容を記事にしました。 サンプルプロジェクト プロジェクト作成 Nat…

たった1文字付け足すだけで、5000兆円が3688.35倍になる、その驚きの方法とは!?

最近流行りの「5000兆円欲しい!」という言葉。 でもちょっと待って下さい!簡単な方法で5000兆円は3688.35倍になります! どうせなら、お得に沢山のお金を要求してみませんか? その驚きの方法とは…… #include <iostream> using namespace std; int main() { unsigned</iostream>…

Androidでc++と連携してOpenCVを動かすサンプルプロジェクト解説

wrongwrong163377.hatenablog.com github.com こちらの記事で紹介したサンプルプロジェクトの解説記事です。 このプログラムは、以下のページを参考に作成しました。 OpenCV for Android入門 – カメラ編 « Rest Term プログラムの概要 ※このアプリではPermis…

AndroidでOpenCV + NDKでc++と連携してOpenCVを動かす

タイトル通り、AndroidにOpenCVを導入し、c++と連携してOpenCVを動かす所まで書きます。 実現する状況は以下の通りです。 AndroidのJava上からOpenCVを動かす NDKを介してAndroidのJava上からc++のOpenCVを動かす (GitHubを介したpush&pullのみでプロジェク…

c++で、if文と%(剰余)のどちらが速いかを少しだけ比較

ある一定数で折り返して用いたいような数があった場合、ぱっと思いつくのは、if文を用いて初期化するやり方と、%で剰余を取る方法でしょうか。 例えば以下のようなコードです。 //if文を用いたコード while(i < MAX) { if((j+=1) == 100) j = 0; i++; } //%…

CMakeでコンパイルオプションを複数指定する

set(CMAKE_C_FLAGS "-Wall -O3") #cの場合 set(CMAKE_CXX_FLAGS "-Wall -O3") #c++の場合というように、指定したいオプションをスペースで区切る。 cとc++で違いがあるようなので注意。 参考にしたページ cmake の使い方 - PukiWiki

C/C++/(Java)、見やすい関数の書き方

最近学んだ、CやC++、Javaといった言語での見やすい関数の書き方を纏めます。 まず、以下の2つのコードをご覧ください。 int func(int a, int b, int c){ processing... return result; } int func( int a, int b, int c ){ processing... return result; } …