Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
On Thursday, 7th July from 1 to 3 pm there will be a maintenance with a short downtime of GitLab.
Open sidebar
ift
D2O
Commits
8c441cb1
Commit
8c441cb1
authored
Dec 03, 2016
by
Theo Steininger
Browse files
Removed mpi_dummy.
parent
9de1ae87
Pipeline
#8810
passed with stage
in 34 seconds
Changes
5
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
.gitlab-ci.yml
View file @
8c441cb1
...
...
@@ -2,15 +2,18 @@ image: python:2.7-wheezy
before_script
:
-
pip install nose
-
pip install nose_parameterized
-
pip install numpy
-
pip install cython
-
apt-get update -qy
-
apt-get install -y openmpi-bin libopenmpi-dev
-
pip install mpi4py
-
chmod +x continuous_integration/install_h5py.sh
-
continuous_integration/install_h5py.sh
test
:
-
pip install numpy
test_minimal
:
script
:
-
echo uiae
# - mpirun -n 2 nosetests
-
python setup.py install
-
nosetests
#test_mpi:
# script:
# - pip install cython
# - apt-get update -qy
# - apt-get install -y openmpi-bin libopenmpi-dev
# - pip install mpi4py
# - chmod +x continuous_integration/install_h5py.sh
# - continuous_integration/install_h5py.sh
d2o/config/d2o_config.py
View file @
8c441cb1
...
...
@@ -22,7 +22,7 @@ import keepers
dependency_injector
=
keepers
.
DependencyInjector
(
[
'h5py'
,
(
'mpi4py.MPI'
,
'MPI'
),
(
'
d2o.mpi_dummy.
mpi_dummy'
,
'MPI_dummy'
)]
(
'mpi_dummy'
,
'MPI_dummy'
)]
)
dependency_injector
.
register
(
'pyfftw'
,
lambda
z
:
hasattr
(
z
,
'FFTW_MPI'
))
...
...
d2o/mpi_dummy/__init__.py
deleted
100644 → 0
View file @
9de1ae87
# D2O
# Copyright (C) 2016 Theo Steininger
#
# Author: Theo Steininger
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import
mpi_dummy
\ No newline at end of file
d2o/mpi_dummy/mpi_dummy.py
deleted
100644 → 0
View file @
9de1ae87
# D2O
# Copyright (C) 2016 Theo Steininger
#
# Author: Theo Steininger
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import
copy
import
numpy
as
np
class
Op
(
object
):
@
classmethod
def
Create
(
cls
,
function
,
commute
=
False
):
pass
MIN
=
Op
()
MAX
=
Op
()
SUM
=
Op
()
PROD
=
Op
()
LAND
=
Op
()
LOR
=
Op
()
BAND
=
Op
()
BOR
=
Op
()
class
Comm
(
object
):
pass
class
Intracomm
(
Comm
):
def
__init__
(
self
,
name
):
if
not
running_single_threadedQ
():
raise
RuntimeError
(
"ERROR: MPI_dummy module is running in a "
+
"mpirun with n>1."
)
self
.
name
=
name
self
.
rank
=
0
self
.
size
=
1
def
Get_rank
(
self
):
return
self
.
rank
def
Get_size
(
self
):
return
self
.
size
def
_scattergather_helper
(
self
,
sendbuf
,
recvbuf
=
None
,
**
kwargs
):
sendbuf
=
self
.
_unwrapper
(
sendbuf
)
recvbuf
=
self
.
_unwrapper
(
recvbuf
)
if
recvbuf
is
not
None
:
recvbuf
[:]
=
sendbuf
return
recvbuf
else
:
recvbuf
=
np
.
copy
(
sendbuf
)
return
recvbuf
def
bcast
(
self
,
sendbuf
,
*
args
,
**
kwargs
):
return
sendbuf
def
Bcast
(
self
,
sendbuf
,
*
args
,
**
kwargs
):
return
sendbuf
def
scatter
(
self
,
sendbuf
,
*
args
,
**
kwargs
):
return
sendbuf
[
0
]
def
Scatter
(
self
,
*
args
,
**
kwargs
):
return
self
.
_scattergather_helper
(
*
args
,
**
kwargs
)
def
Scatterv
(
self
,
*
args
,
**
kwargs
):
return
self
.
_scattergather_helper
(
*
args
,
**
kwargs
)
def
gather
(
self
,
sendbuf
,
*
args
,
**
kwargs
):
return
[
sendbuf
]
def
Gather
(
self
,
*
args
,
**
kwargs
):
return
self
.
_scattergather_helper
(
*
args
,
**
kwargs
)
def
Gatherv
(
self
,
*
args
,
**
kwargs
):
return
self
.
_scattergather_helper
(
*
args
,
**
kwargs
)
def
allgather
(
self
,
sendbuf
,
*
args
,
**
kwargs
):
return
[
sendbuf
]
def
Allgather
(
self
,
*
args
,
**
kwargs
):
return
self
.
_scattergather_helper
(
*
args
,
**
kwargs
)
def
Allgatherv
(
self
,
*
args
,
**
kwargs
):
return
self
.
_scattergather_helper
(
*
args
,
**
kwargs
)
def
Allreduce
(
self
,
sendbuf
,
recvbuf
,
op
,
**
kwargs
):
sendbuf
=
self
.
_unwrapper
(
sendbuf
)
recvbuf
=
self
.
_unwrapper
(
recvbuf
)
recvbuf
[:]
=
sendbuf
return
recvbuf
def
allreduce
(
self
,
sendobj
,
op
=
SUM
,
**
kwargs
):
if
np
.
isscalar
(
sendobj
):
return
sendobj
return
copy
.
copy
(
sendobj
)
def
sendrecv
(
self
,
sendobj
,
**
kwargs
):
return
sendobj
def
_unwrapper
(
self
,
x
):
if
isinstance
(
x
,
list
):
return
x
[
0
]
else
:
return
x
def
Barrier
(
self
):
pass
class
_datatype
():
def
__init__
(
self
,
name
):
self
.
name
=
str
(
name
)
def
running_single_threadedQ
():
try
:
from
mpi4py
import
MPI
except
ImportError
:
return
True
else
:
if
MPI
.
COMM_WORLD
.
size
!=
1
:
return
False
else
:
return
True
BYTE
=
_datatype
(
'MPI_BYTE'
)
SHORT
=
_datatype
(
'MPI_SHORT'
)
UNSIGNED_SHORT
=
_datatype
(
"MPI_UNSIGNED_SHORT"
)
UNSIGNED_INT
=
_datatype
(
"MPI_UNSIGNED_INT"
)
INT
=
_datatype
(
"MPI_INT"
)
LONG
=
_datatype
(
"MPI_LONG"
)
UNSIGNED_LONG
=
_datatype
(
"MPI_UNSIGNED_LONG"
)
LONG_LONG
=
_datatype
(
"MPI_LONG_LONG"
)
UNSIGNED_LONG_LONG
=
_datatype
(
"MPI_UNSIGNED_LONG_LONG"
)
FLOAT
=
_datatype
(
"MPI_FLOAT"
)
DOUBLE
=
_datatype
(
"MPI_DOUBLE"
)
LONG_DOUBLE
=
_datatype
(
"MPI_LONG_DOUBLE"
)
COMPLEX
=
_datatype
(
"MPI_COMPLEX"
)
DOUBLE_COMPLEX
=
_datatype
(
"MPI_DOUBLE_COMPLEX"
)
class
_comm_wrapper
(
Intracomm
):
def
__init__
(
self
,
name
):
self
.
cache
=
None
self
.
name
=
name
self
.
size
=
1
self
.
rank
=
0
@
property
def
comm
(
self
):
if
self
.
cache
is
None
:
self
.
cache
=
Intracomm
(
self
.
name
)
return
self
.
cache
def
__getattr__
(
self
,
x
):
return
self
.
comm
.
__getattribute__
(
x
)
COMM_WORLD
=
_comm_wrapper
(
'MPI_dummy_COMM_WORLD'
)
#COMM_WORLD.__class__ = COMM_WORLD.comm.__class__
setup.py
View file @
8c441cb1
...
...
@@ -37,11 +37,12 @@ setup(
"computing in Python"
),
keywords
=
"parallelization, numerics, MPI"
,
url
=
"https://gitlab.mpcdf.mpg.de/ift/D2O"
,
packages
=
[
'd2o'
,
'd2o.config'
,
'd2o.mpi_dummy'
,
'test'
],
packages
=
[
'd2o'
,
'd2o.config'
,
'test'
],
zip_safe
=
False
,
dependency_links
=
[
"git+https://gitlab.mpcdf.mpg.de/ift/keepers.git#egg=keepers-0.3.4"
],
install_requires
=
[
'keepers>=0.3.4'
],
"git+https://gitlab.mpcdf.mpg.de/ift/keepers.git#egg=keepers-0.3.4"
,
"git+https://gitlab.mpcdf.mpg.de/ift/mpi_dummy.git#egg=mpi_dummy-1.0.0"
],
install_requires
=
[
'keepers>=0.3.4'
,
'mpi_dummy>=1.0.0'
],
long_description
=
read
(
'README.rst'
),
license
=
"GPLv3"
,
classifiers
=
[
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment