Code Monkey home page Code Monkey logo

pikg's Introduction

FDPS

FDPS is a general-purpose, high-performance library for particle simulations.

The current version is 7.1. The previous versions are here.

We maintain this from subversion-over-github interface.

If you have some questions, please do not hesitate to contact us. Our e-mail address is [email protected] (please replace -@- by @).

Tutorial of FDPS is here doc/doc_tutorial_cpp_en.pdf , Specification is here doc/doc_specs_cpp_en.pdf. Tutorial and specification of Fortran/C interface to FDPS are doc/doc_tutorial_ftn_en.pdf and doc/doc_specs_ftn_en.pdf, respectively. You can also find a two-page handout here doc/doc_SC15_handout.pdf.

FDPSのチュートリアルは doc/doc_tutorial_cpp_ja.pdf 、仕様書は doc/doc_specs_cpp_ja.pdf にあります。 また、FDPSのFortran/C言語インターフェースのチュートリアルは doc/doc_tutorial_ftn_ja.pdf 、Fortran/C言語インターフェースの仕様書は doc/doc_specs_ftn_ja.pdf にあります。 2ページでFDPSがわかるハンドアウトはこちらです doc/doc_SC15_handout.pdf

ご質問などお問い合わせは[email protected]にお願いいたします (-@-を@に置換して下さい)。

pikg's People

Contributors

subarutaro avatar tsaitoh avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Forkers

tsaitoh tmtoku

pikg's Issues

Can' t use #pragma in DSL

I tried to use #pragma in DSL, but an error has occured.

For example, I inserted #pragma unroll 2 in the second line of
sample/c++/Nbody/kernel.pikg.

F64 eps2
#pragma unroll 2
rij = EPI.pos - EPJ.pos
r2 = rij * rij + eps2
r_inv  = rsqrt(r2)
r2_inv = r_inv * r_inv
mr_inv  = EPJ.mass * r_inv
mr3_inv = r2_inv * mr_inv
FORCE.acc -= mr3_inv * rij
FORCE.pot -= mr_inv

Then, I ran make and got the following error message.

conversion type: reference
epi name: Particle
epj name: Particle
force name: Particle
class file: particle.hpp
output file name: kernel.hpp
input file: kernel.pikg
/home/tom/pikg/src/gen_hash.rb:20:in `block (2 levels) in fusion_iotag': undefined method `fusion_iotag' for #<Pragma:0x0000558cf91a1dd8 @name="unroll", @option=["2"]> (NoMethodError)
	from /home/tom/pikg/src/gen_hash.rb:19:in `each'
	from /home/tom/pikg/src/gen_hash.rb:19:in `block in fusion_iotag'
	from /home/tom/pikg/src/gen_hash.rb:18:in `each'
	from /home/tom/pikg/src/gen_hash.rb:18:in `fusion_iotag'
	from /home/tom/pikg/src/gen_hash.rb:313:in `generate_alias'
	from /home/tom/pikg/src/parserdriver.rb:1681:in `<top (required)>'
	from ../../..//bin/pikg:2:in `require_relative'
	from ../../..//bin/pikg:2:in `<main>'
make: *** [Makefile:50: kernel.hpp] Error 1

If we add the following fusion_iotag method to the Pragma class, the error will no longer occur, but the generated kernel will not be changed by #pragma.

def fusion_iotag(iotag)
  []
end

class Pragma
attr_accessor :name, :option
def initialize(x)
@name,@option = x
end
def get_related_variable
[]
end
def declare_temporal_var
[]
end
def convert_to_code(conversion_type="reference")
ret = String.new
if conversion_type != "reference"
ret = "#pragma #{@name}"
if @option != nil then
@option.each{ |x|
ret += " #{x}"
}
end
end
ret
end
end

The support for IBM Power9 AC922

One of my collaborator want to use the PeTar code on the IBM supercomputer, which has Power9 AC922 CPU.
Does the PIKG support Power9?

Neighbor count and cutoff radius

I want to generate a force kernel for Fugaku with the linear cutoff function and neighbor count.
All particles have the same cutoff radius rcut and when dr<rcut, force is calculated by using rcut, otherwise using dr.
dr = max(dr, rcut)

Besides, each particle have their neighbor radius rs, the neighbor count is done by
if (dr< max(rsi, rsj)) nnbi++;
where rsi and rsj are neighbor radii of i and j particles.

Is it possible to generate such kind of condition based codes by using PIKG?

Issue of 64 bit kernel with A64FX

I tried to create the 64 bit kernel, but I got an error.

input file: input.64
output file name: kernel_epep_64.hpp
conversion type: A64FX
error: unsupported vector type of B64 for A64FX

It seems a typo exist, in the input.64, there is no B64.
Here is the input.64:

EPI F64vec xi:pos
EPI F64 rsi:rs

EPJ F64vec xj:pos
EPJ F64 mj:mass
EPJ F64 rsj:rs

FORCE F64vec acc:acc
FORCE F64 pot:pot
FORCE S64 nnbi:nnb

F64 eps2
F64 rcut2
F64 G

rij = xi - xj
r2 = rij*rij + eps2
r2_cut = max(r2,rcut2)
r_inv  = rsqrt(r2_cut)
r2_inv = r_inv * r_inv
mr_inv  = mj * r_inv
mr3_inv = r2_inv * mr_inv
if r2 < max(rsi*rsi,rsj*rsj)
  nnbi  += 1
  endif
acc -= mr3_inv * rij
pot -= mr_inv

The SPJ quad kernel

Do you have an example input for generating the Superparticle quadrupole kernel?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.