{"id":18729041,"url":"https://github.com/lichtso/vulkanfft","last_synced_at":"2025-07-23T21:36:44.359Z","repository":{"id":151645434,"uuid":"168850535","full_name":"Lichtso/VulkanFFT","owner":"Lichtso","description":"Fast Fourier Transform using the Vulkan API","archived":false,"fork":false,"pushed_at":"2020-11-01T10:55:13.000Z","size":65,"stargazers_count":32,"open_issues_count":1,"forks_count":3,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-03-26T11:21:14.528Z","etag":null,"topics":["c","cli","fft","fft-library","gpu-computing","vulkan","vulkan-library"],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Lichtso.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-02-02T16:18:17.000Z","updated_at":"2024-11-29T16:21:28.000Z","dependencies_parsed_at":"2023-07-20T19:15:22.044Z","dependency_job_id":null,"html_url":"https://github.com/Lichtso/VulkanFFT","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lichtso%2FVulkanFFT","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lichtso%2FVulkanFFT/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lichtso%2FVulkanFFT/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lichtso%2FVulkanFFT/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Lichtso","download_url":"https://codeload.github.com/Lichtso/VulkanFFT/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248596731,"owners_count":21130754,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["c","cli","fft","fft-library","gpu-computing","vulkan","vulkan-library"],"created_at":"2024-11-07T14:25:28.400Z","updated_at":"2025-04-12T16:33:29.890Z","avatar_url":"https://github.com/Lichtso.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"| All | Linux | macOS | Windows |\n| --- | ----- | ----- | ------- |\n| [![Build Status](https://api.travis-ci.org/Lichtso/VulkanFFT.svg)](https://travis-ci.org/Lichtso/VulkanFFT) | [![Build Status Linux](https://travis-matrix-badges.herokuapp.com/repos/Lichtso/VulkanFFT/branches/master/1)](https://travis-ci.org/Lichtso/VulkanFFT) | [![Build Status macOS](https://travis-matrix-badges.herokuapp.com/repos/Lichtso/VulkanFFT/branches/master/2)](https://travis-ci.org/Lichtso/VulkanFFT) | [![Build Status Windows](https://travis-matrix-badges.herokuapp.com/repos/Lichtso/VulkanFFT/branches/master/3)](https://travis-ci.org/Lichtso/VulkanFFT) |\n\n# Vulkan Fast Fourier Transform\nNote: A more recent and more complete [alternative](https://github.com/DTolm/VkFFT) was released.\n\nThis library can calculate a multidimensional [Discrete Fourier Transform](https://en.wikipedia.org/wiki/Discrete_Fourier_transform) on the GPU using the [Vulkan API](https://www.khronos.org/vulkan/).\nHowever, in most cases you probably want a different library,\nbecause Vulkan does not change much about the GPU computations,\nbut is a lot more complex than other APIs.\nAlternatives are based on [OpenGL](https://github.com/Themaister/GLFFT), [OpenCL](https://gpuopen.com/compute-product/clfft/) or [CUDA](https://developer.nvidia.com/cufft) for example.\nSome reasons to use this library anyway are:\n- You already have a Vulkan application and just need a FFT implementation\n- You want to reduce CPU load, because Vulkan is meant do exactly that\n- You are on a platform where other options are worse or just not supported (e.g. OpenGL on MacOS)\n- You are just here for the CLI and don't care about Vulkan\n\n## Command Line Interface\nNote that many small invocations are very inefficient, because the startup costs of Vulkan are very high.\nSo the CLI is only useful for transforming big data sets and testing.\nAlso, only the library is supported on windows, not the CLI.\n\n### Options\n- `-x width` Samples in x direction\n- `-y height` Samples in y direction\n- `-z depth` Samples in z direction\n- `--inverse` Calculate the IDFT\n- `--input raw / ascii / png / exr` Input encoding\n- `--output raw / ascii / png / exr` Output encoding\n- `--device index` Vulkan device to use\n- `--list-devices` List Vulkan devices\n- `--measure-time` Measure time spent in setup, upload, computation, download and teardown\n\n### Example Invocations\n```bash\nvulkanfft -x 16 -y 16 --input ascii --output png --inverse \u003c test.txt \u003e test.png\nvulkanfft -x 16 -y 16 --input png --output ascii \u003c test.png\n```\n\n## Dependencies\n- cmake 3.11\n- Vulkan Runtime 1.0\n- Vulkan SDK 1.2.141.2 (to compile GLSL to SPIR-V)\n- xxd (to inline SPIR-V in C)\n- libpng 1.6.0 (optional, only needed for CLI)\n- libopenexr 2.5.2 (optional, only needed for CLI)\n\n## Current Features \u0026 Limitations\n- Dimensions\n    - Only 1D, 2D, 3D\n    - No higher dimensions\n- Direction \u0026 Scale\n    - Forward / backward (inverse)\n    - No normalized / unnormalized switch independent of direction\n- Sample Count / Size\n    - Only POT (power of two)\n    - No prime factorization\n- Memory Layout\n    - Only buffers (row-major order)\n    - No samplers / images / textures (2D tiling)\n    - Only interleaved complex float\n    - No separation of real and imaginary parts\n- Bit-Depth \u0026 Data Types\n    - Only 32 bit complex floats\n    - No real only mode\n    - No 8, 16, 64, 128 bit floats or integers\n- Parallelization / SIMD\n    - Only radix 2, 4, 8\n    - No higher radix\n- Memory Requirements\n    - 2*n because of swap buffers for Stockham auto-sort algorithm\n    - No reordering and in-place operation\n- Memorization \u0026 Profiling\n    - Only cold planning\n    - No memorization or warm planning / wisdom profiling\n- Related Extras\n    - No convolution\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flichtso%2Fvulkanfft","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flichtso%2Fvulkanfft","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flichtso%2Fvulkanfft/lists"}