vSMC
v3.0.0
Scalable Monte Carlo
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
include
vsmc
smp
backend_seq.hpp
Go to the documentation of this file.
1
//============================================================================
2
// vSMC/include/vsmc/smp/backend_seq.hpp
3
//----------------------------------------------------------------------------
4
// vSMC: Scalable Monte Carlo
5
//----------------------------------------------------------------------------
6
// Copyright (c) 2013-2016, Yan Zhou
7
// All rights reserved.
8
//
9
// Redistribution and use in source and binary forms, with or without
10
// modification, are permitted provided that the following conditions are met:
11
//
12
// Redistributions of source code must retain the above copyright notice,
13
// this list of conditions and the following disclaimer.
14
//
15
// Redistributions in binary form must reproduce the above copyright notice,
16
// this list of conditions and the following disclaimer in the documentation
17
// and/or other materials provided with the distribution.
18
//
19
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS
20
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22
// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
23
// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29
// POSSIBILITY OF SUCH DAMAGE.
30
//============================================================================
31
32
#ifndef VSMC_SMP_BACKEND_SEQ_HPP
33
#define VSMC_SMP_BACKEND_SEQ_HPP
34
35
#include <
vsmc/smp/backend_base.hpp
>
36
37
namespace
vsmc
38
{
39
42
template
<
typename
T,
typename
Derived>
43
class
SamplerEvalSMP
<T, Derived, BackendSEQ>
44
:
public
SamplerEvalBase
<T, Derived>
45
{
46
public
:
47
std::size_t
operator()
(std::size_t iter,
Particle<T>
&particle)
48
{
49
this->eval_pre(iter, particle);
50
std::size_t accept = this->eval_range(iter, particle.
range
());
51
this->eval_post(iter, particle);
52
53
return
accept;
54
}
55
56
protected
:
57
VSMC_DEFINE_SMP_BACKEND_SPECIAL
(SEQ, SamplerEval)
58
};
// class SamplerEvalSMP
59
62
template
<
typename
T,
typename
Derived>
63
class
MonitorEvalSMP
<T, Derived, BackendSEQ>
64
:
public
MonitorEvalBase
<T, Derived>
65
{
66
public
:
67
void
operator()
(
68
std::size_t iter, std::size_t dim,
Particle<T>
&particle,
double
*r)
69
{
70
this->eval_pre(iter, particle);
71
this->eval_range(iter, dim, particle.
range
(), r);
72
this->eval_post(iter, particle);
73
}
74
75
protected
:
76
VSMC_DEFINE_SMP_BACKEND_SPECIAL
(SEQ, MonitorEval)
77
};
// class MonitorEvalSMP
78
81
template
<
typename
T,
typename
Derived>
82
using
SamplerEvalSEQ
=
SamplerEvalSMP<T, Derived, BackendSEQ>
;
83
86
template
<
typename
T,
typename
Derived>
87
using
MonitorEvalSEQ
=
MonitorEvalSMP<T, Derived, BackendSEQ>
;
88
89
}
// namespace vsmc
90
91
#endif // VSMC_SMP_BACKEND_SEQ_HPP
vsmc::Particle::range
range_type range(size_type begin, size_type end)
Get a ParticleRange<T> object.
Definition:
particle.hpp:207
vsmc
Definition:
monitor.hpp:48
vsmc::Particle
Particle class representing the whole particle set.
Definition:
particle.hpp:83
vsmc::MonitorEvalSMP
Monitor<T>::eval_type.
Definition:
backend_base.hpp:112
vsmc::MonitorEvalBase
Monitor evalution base dispatch class.
Definition:
backend_base.hpp:291
vsmc::MonitorEvalSMP< T, Derived, BackendSEQ >::operator()
void operator()(std::size_t iter, std::size_t dim, Particle< T > &particle, double *r)
Definition:
backend_seq.hpp:67
VSMC_DEFINE_SMP_BACKEND_SPECIAL
#define VSMC_DEFINE_SMP_BACKEND_SPECIAL(Impl, Name)
Definition:
backend_base.hpp:71
vsmc::SamplerEvalSMP< T, Derived, BackendSEQ >
Sampler<T>::eval_type subtype.
Definition:
backend_seq.hpp:43
vsmc::SamplerEvalSMP< T, Derived, BackendSEQ >::operator()
std::size_t operator()(std::size_t iter, Particle< T > &particle)
Definition:
backend_seq.hpp:47
vsmc::MonitorEvalSMP< T, Derived, BackendSEQ >
Monitor<T>::eval_type subtype.
Definition:
backend_seq.hpp:63
vsmc::SamplerEvalBase
Sampler evaluation base dispatch class.
Definition:
backend_base.hpp:117
vsmc::SamplerEvalSMP
Sampler<T>::eval_type.
Definition:
backend_base.hpp:107
backend_base.hpp
Generated by
1.8.11