Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
90 changes: 0 additions & 90 deletions .github/workflows/cmake_macos.yml

This file was deleted.

2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ endif()
set(CMAKE_POSITION_INDEPENDENT_CODE ON)

include(CheckCXXCompilerFlag)
find_program(Git git)
find_program(Git git REQUIRED)
find_package(Python 3.8 COMPONENTS Interpreter Development REQUIRED)

set(PHARE_PROJECT_DIR ${CMAKE_CURRENT_SOURCE_DIR})
Expand Down
5 changes: 5 additions & 0 deletions ISSUES.TXT
Original file line number Diff line number Diff line change
Expand Up @@ -27,3 +27,8 @@ Outline the context of your issue, and upload the zip
Solution:
LD_PRELOAD=/path/to/your/libmpi.so python3 $SCRIPT

3. SAMRAI libraries used by PHARE python modules must not be static archives.
SAMRAI has static singletons which may exist more than once.
This will likely lead to unsatisfactory results.
By default, PHARE will build SAMRAI in place with shared libraries,
The CMake flag `-DSAMRAI_ROOT=/path` may be used to target an existing installation
45 changes: 32 additions & 13 deletions pyphare/pyphare/cpp/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,29 @@
#
#

import json
import importlib
from . import validate

def cpp_lib(override=None):
import importlib
__all__ = ["validate"]

return importlib.import_module("pybindlibs.cpp")
_libs = {}


def cpp_etc_lib():
import importlib
def simulator_id(sim):
return f"{sim.ndim}_{sim.interp_order}_{sim.refined_particle_nbr}"


def cpp_lib(sim):
global _libs

mod_str = f"pybindlibs.cpp_{simulator_id(sim)}"
if mod_str not in _libs:
_libs[mod_str] = importlib.import_module(mod_str)
return _libs[mod_str]


def cpp_etc_lib():
return importlib.import_module("pybindlibs.cpp_etc")


Expand All @@ -20,18 +33,24 @@ def build_config():


def build_config_as_json():
import json

return json.dumps(build_config())


def splitter_type(dim, interp, n_particles):
return getattr(cpp_lib(), f"Splitter_{dim}_{interp}_{n_particles}")
def splitter_type(sim):
return getattr(cpp_lib(sim), "Splitter")


def split_pyarrays_fn(sim):
return getattr(cpp_lib(sim), "split_pyarray_particles")


def mpi_rank():
return getattr(cpp_etc_lib(), "mpi_rank")()


def create_splitter(dim, interp, n_particles):
return splitter_type(dim, interp, n_particles)()
def mpi_size():
return getattr(cpp_etc_lib(), "mpi_size")()


def split_pyarrays_fn(dim, interp, n_particles):
return getattr(cpp_lib(), f"split_pyarray_particles_{dim}_{interp}_{n_particles}")
def mpi_barrier():
return getattr(cpp_etc_lib(), "mpi_barrier")()
8 changes: 3 additions & 5 deletions pyphare/pyphare/cpp/validate.py
Original file line number Diff line number Diff line change
Expand Up @@ -99,20 +99,18 @@ def try_system_binaries(log_dir):


def log_runtime_config():
cpp_lib = cpp.cpp_lib()

settings = RuntimeSettings(
python_binary=sys.executable,
python_version=python_version_from(sys.executable),
git_hash=get_git_hash(),
)

rank_info_dir = DOT_PHARE_DIR / "rank_info"
if cpp_lib.mpi_rank() == 0:
if cpp.mpi_rank() == 0:
rank_info_dir.mkdir(exist_ok=True, parents=True)
cpp_lib.mpi_barrier()
cpp.mpi_barrier()

rank_dir = rank_info_dir / f"{cpp_lib.mpi_rank()}"
rank_dir = rank_info_dir / f"{cpp.mpi_rank()}"
rank_dir.mkdir(exist_ok=True)

with open(rank_dir / "runtime_config.json", "w") as f:
Expand Down
17 changes: 8 additions & 9 deletions pyphare/pyphare/data/wrangler.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,15 @@

class DataWrangler:
def __init__(self, simulator):
from .. import pharein as ph
from pyphare.cpp import cpp_lib
from pyphare import cpp

self.dim = ph.global_vars.sim.ndim
self.interp = ph.global_vars.sim.interp_order
self.refined_particle_nbr = ph.global_vars.sim.refined_particle_nbr
self.cpp = getattr(
cpp_lib(),
f"DataWrangler_{self.dim}_{self.interp}_{self.refined_particle_nbr}",
)(simulator.cpp_sim, simulator.cpp_hier)
sim = simulator.simulation
self.dim = sim.ndim
self.interp = sim.interp_order
self.refined_particle_nbr = sim.refined_particle_nbr
self.cpp = getattr(cpp.cpp_lib(sim), "DataWrangler")(
simulator.cpp_sim, simulator.cpp_hier
)

def kill(self):
del self.cpp
Expand Down
3 changes: 1 addition & 2 deletions pyphare/pyphare/pharesee/hierarchy/fromh5.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import os
import numpy as np
from pathlib import Path

from .patch import Patch
from .patchlevel import PatchLevel
Expand All @@ -15,8 +16,6 @@
)
from ...core.gridlayout import GridLayout
from .hierarchy_utils import field_qties

from pathlib import Path
from pyphare.core.phare_utilities import listify


Expand Down
6 changes: 3 additions & 3 deletions pyphare/pyphare/pharesee/particles.py
Original file line number Diff line number Diff line change
Expand Up @@ -160,9 +160,9 @@ def pop(self, idx):
def split(self, sim): # REQUIRES C++ PYBIND PHARE LIB
from pyphare.cpp import split_pyarrays_fn

split_pyarrays = split_pyarrays_fn(
sim.ndim, sim.interp_order, sim.refined_particle_nbr
)((self.iCells, self.deltas, self.weights, self.charges, self.v))
split_pyarrays = split_pyarrays_fn(sim)(
(self.iCells, self.deltas, self.weights, self.charges, self.v)
)
return Particles(
icells=split_pyarrays[0].reshape(
int(len(split_pyarrays[0]) / self.ndim), self.ndim
Expand Down
Loading
Loading