Skip to content

Instantly share code, notes, and snippets.

@dc1394
dc1394 / vmc_dsfmt.cpp
Created January 4, 2024 09:21
変分モンテカルロ法のプログラム(dSFMT-AVX512を使ったC++版)
// 元のコード→ https://miyantarumi.hatenablog.com/entry/2022/04/08/080000
#include <array> // for std::array
#include <cmath> // for std::asin, std::cos, std::exp, std::fabs, std::hypot, std::log, std::sqrt, std::sin
#include <cstdint> // for std::int32_t
#include <iomanip> // for std::setprecision
#include <ios> // for std::ios::fixed, std::ios::floatfield
#include <iostream> // for std::cout, std::endl
#include <utility> // for std::make_pair, std::pair
#include <vector> // for std::vector
#define HAVE_SSE2
@dc1394
dc1394 / vmc_drand48.cpp
Created January 4, 2024 09:13
変分モンテカルロ法のプログラム(C非標準のdrand48()を使ったC++版)
// 元のコード→ https://miyantarumi.hatenablog.com/entry/2022/04/08/080000
#include <array> // for std::array
#include <cmath> // for std::asin, std::cos, std::exp, std::fabs, std::hypot, std::log, std::sqrt, std::sin
#include <cstdint> // for std::int32_t
#include <cstdlib> // for drand48, srand48
#include <iomanip> // for std::setprecision
#include <ios> // for std::ios::fixed, std::ios::floatfield
#include <iostream> // for std::cout, std::endl
#include <utility> // for std::make_pair, std::pair
#include <vector> // for std::vector
@dc1394
dc1394 / vmc_xorshift.cpp
Last active January 4, 2024 09:17
変分モンテカルロ法のプログラム(Xoshiro256PlusAVX2を使ったC++版)
// 元のコード→ https://miyantarumi.hatenablog.com/entry/2022/04/08/080000
#include <array> // for std::array
#include <cmath> // for std::asin, std::cos, std::exp, std::fabs, std::hypot, std::log, std::sqrt, std::sin
#include <cstdint> // for std::int32_t
#include <iomanip> // for std::setprecision
#include <ios> // for std::ios::fixed, std::ios::floatfield
#include <iostream> // for std::cout, std::endl
#include <utility> // for std::make_pair, std::pair
#include <vector> // for std::vector
#define __AVX2_AVAILABLE__
@dc1394
dc1394 / vmc_mt19937.cpp
Last active January 4, 2024 09:15
変分モンテカルロ法のプログラム(std::mt19937を使ったC++版)
// 元のコード→ https://miyantarumi.hatenablog.com/entry/2022/04/08/080000
#include <algorithm> // for std::fill
#include <cmath> // for std::asin, std::cos, std::exp, std::fabs, std::hypot, std::log, std::sqrt
#include <iomanip> // for std::setprecision
#include <ios> // for std::ios::fixed, std::ios::floatfield
#include <iostream> // for std::cout, std::endl
#include <random> // for std::mt19937, std::uniform_real_distribution
#include <utility> // for std::make_pair, std::pair
#include <vector> // for std::vector
@dc1394
dc1394 / vmc_crand.cpp
Last active January 4, 2024 09:09
変分モンテカルロ法のプログラム(C備え付けのrand()を使ったC++版)
// 元のコード→ https://miyantarumi.hatenablog.com/entry/2022/04/08/080000
#include <array> // for std::array
#include <cmath> // for std::asin, std::cos, std::exp, std::fabs, std::hypot, std::log, std::sqrt, std::sin
#include <cstdint> // for std::int32_t
#include <cstdlib> // for std::rand, std::srand
#include <iomanip> // for std::setprecision
#include <ios> // for std::ios::fixed, std::ios::floatfield
#include <iostream> // for std::cout, std::endl
#include <utility> // for std::make_pair, std::pair
#include <vector> // for std::vector
@dc1394
dc1394 / mc_dsfmt_vec.cpp
Last active January 4, 2024 09:19
Twitterのモンテカルロ法のC++版の速度比較コード(dSFMT-AVX512使用+手動でSIMD (AVX-512)ベクトル化)
#include <array> // for std::array
#include <iomanip> // for std::setprecision
#include <ios> // for std::ios::fixed, std::ios::floatfield
#include <iostream> // for std::cout, std::endl
#define HAVE_SSE2
#define HAVE_AVX2
#include "dSFMT.h"
#include "dSFMT-2203-avx512.h"
namespace {
@dc1394
dc1394 / mc_dsfmt.cpp
Created December 31, 2023 13:32
Twitterのモンテカルロ法のC++版の速度比較コード(dSFMT-AVX512使用)
#include <array> // for std::array
#include <iomanip> // for std::setprecision
#include <ios> // for std::ios::fixed, std::ios::floatfield
#include <iostream> // for std::cout, std::endl
#define HAVE_SSE2
#define HAVE_AVX2
#include "dSFMT.h"
#include "dSFMT-2203-avx512.h"
namespace {
@dc1394
dc1394 / mc_xorshift_vec.cpp
Created December 31, 2023 13:25
Twitterのモンテカルロ法のC++版の速度比較コード(Xoshiro256PlusSIMD使用+手動でSIMD (AVX2)ベクトル化)
#include <cstdint> // for std::uint32_t
#include <iomanip> // for std::setprecision
#include <ios> // for std::ios::fixed, std::ios::floatfield
#include <iostream> // for std::cout, std::endl
#define __AVX2_AVAILABLE__
#include "SIMDInstructionSet.h"
#include "Xoshiro256Plus.h"
namespace {
inline double mcpi();
@dc1394
dc1394 / mc_xorshift.cpp
Created December 31, 2023 13:17
Twitterのモンテカルロ法のC++版の速度比較コード(Xoshiro256PlusSIMD使用)
#include <iomanip> // for std::setprecision
#include <ios> // for std::ios::fixed, std::ios::floatfield
#include <iostream> // for std::cout, std::endl
#include <utility> // for std::make_pair, std::pair
#define __AVX2_AVAILABLE__
#include "SIMDInstructionSet.h"
#include "Xoshiro256Plus.h"
namespace {
inline double mcpi();
@dc1394
dc1394 / mc_mt19937.cpp
Created December 31, 2023 13:13
Twitterのモンテカルロ法のC++版の速度比較コード(C++のmt19937)
#include <iomanip> // for std::setprecision
#include <ios> // for std::ios::fixed, std::ios::floatfield
#include <iostream> // for std::cout, std::endl
#include <random> // for std::mt19937, std::uniform_real_distribution
namespace {
inline double mcpi();
}
int main()