SpFFT | Sparse 3D FFT library with MPI , OpenMP , CUDA and ROCm | GPU library

 by   eth-cscs C++ Version: v1.0.6 License: BSD-3-Clause

kandi X-RAY | SpFFT Summary

kandi X-RAY | SpFFT Summary

SpFFT is a C++ library typically used in Hardware, GPU, Pytorch applications. SpFFT has no bugs, it has no vulnerabilities, it has a Permissive License and it has low support. You can download it from GitHub.

SpFFT - A 3D FFT library for sparse frequency domain data written in C++ with support for MPI, OpenMP, CUDA and ROCm. Inspired by the need of some computational material science applications with spherical cutoff data in frequency domain, SpFFT provides Fast Fourier Transformations of sparse frequency domain data. For distributed computations with MPI, slab decomposition in space domain and pencil decomposition in frequency domain (sparse data within a pencil / column must be on one rank) is used. Fig. 1: Illustration of a transform, where data on each MPI rank is identified by color.
Support
    Quality
      Security
        License
          Reuse

            kandi-support Support

              SpFFT has a low active ecosystem.
              It has 36 star(s) with 8 fork(s). There are 10 watchers for this library.
              OutlinedDot
              It had no major release in the last 12 months.
              There are 2 open issues and 9 have been closed. On average issues are closed in 18 days. There are no pull requests.
              It has a neutral sentiment in the developer community.
              The latest version of SpFFT is v1.0.6

            kandi-Quality Quality

              SpFFT has 0 bugs and 0 code smells.

            kandi-Security Security

              SpFFT has no vulnerabilities reported, and its dependent libraries have no vulnerabilities reported.
              SpFFT code analysis shows 0 unresolved vulnerabilities.
              There are 0 security hotspots that need review.

            kandi-License License

              SpFFT is licensed under the BSD-3-Clause License. This license is Permissive.
              Permissive licenses have the least restrictions, and you can use them in most projects.

            kandi-Reuse Reuse

              SpFFT releases are available to install and integrate.
              Installation instructions, examples and code snippets are available.
              It has 41 lines of code, 0 functions and 1 files.
              It has low code complexity. Code complexity directly impacts maintainability of the code.

            Top functions reviewed by kandi - BETA

            kandi's functional review helps you automatically verify the functionalities of the libraries and avoid rework.
            Currently covering the most popular Java, JavaScript and Python libraries. See a Sample of SpFFT
            Get all kandi verified functions for this library.

            SpFFT Key Features

            No Key Features are available at this moment for SpFFT.

            SpFFT Examples and Code Snippets

            SpFFT,Examples
            C++dot img1Lines of Code : 103dot img1License : Permissive (BSD-3-Clause)
            copy iconCopy
            #include 
            #include 
            #include 
            
            #include "spfft/spfft.hpp"
            
            int main(int argc, char** argv) {
              const int dimX = 2;
              const int dimY = 2;
              const int dimZ = 2;
            
              std::cout << "Dimensions: x = " << dimX << ", y = " << dimY <  
            SpFFT,Installation
            C++dot img2Lines of Code : 4dot img2License : Permissive (BSD-3-Clause)
            copy iconCopy
            mkdir build
            cd build
            cmake .. -DSPFFT_OMP=ON -DSPFFT_MPI=ON -DSPFFT_GPU_BACKEND=CUDA -DSPFFT_SINGLE_PRECISION=OFF -DCMAKE_INSTALL_PREFIX=/usr/local
            make -j8 install
              

            Community Discussions

            QUESTION

            Correct order of implementing fftshift and ifftshift (in python)
            Asked 2017-Feb-13 at 13:25

            I want to Fourier transform a function psi(x), multiply it by a k-space function exp(-kx^2-ky^2), and then inverse Fourier transform the product back to x-space.

            But my x-space and k-space grids are centred, and I know that I need fftshift and ifftshift to implement my k-space multiplication properly. But I don't understand how they work, so I don't know in which order to implement them. Could someone please tell me if I have done it correctly here?

            ...

            ANSWER

            Answered 2017-Feb-12 at 02:56

            No you haven’t, but that’s ok, it can be very confusing.

            First thing: fft and ifft require the origin to be in the beginning of the vector (or in your 2D case, in the top-left of the array). Is the input psi’s origin centered like KX? If so, its origin must be shifted to the beginning with ifftshift. (If not, then just leave it alone.)

            Second: since KX and KY have origins in their centers, you have to unshift them: you need spfft.ifftshift(np.exp(-(KX**2 + KY**2)) (note the i).

            Finally: your output psi will therefore have its origin in the beginning. If you want its origin to be centered like KX, fftshift it.

            In summary:

            Source https://stackoverflow.com/questions/42151936

            Community Discussions, Code Snippets contain sources that include Stack Exchange Network

            Vulnerabilities

            No vulnerabilities reported

            Install SpFFT

            The build system follows the standard CMake workflow. Example:.

            Support

            Documentation can be found here.
            Find more information at:

            Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items

            Find more libraries

            Stay Updated

            Subscribe to our newsletter for trending solutions and developer bootcamps

            Agree to Sign up and Terms & Conditions

            Share this Page

            share link

            Explore Related Topics

            Consider Popular GPU Libraries

            taichi

            by taichi-dev

            gpu.js

            by gpujs

            hashcat

            by hashcat

            cupy

            by cupy

            EASTL

            by electronicarts

            Try Top Libraries by eth-cscs

            reframe

            by eth-cscsPython

            COSMA

            by eth-cscsC++

            sarus

            by eth-cscsC++

            abcpy

            by eth-cscsPython

            PythonHPC

            by eth-cscsJupyter Notebook