Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Reading Complex data into performVulkanFFT #25

Closed
TheGitHubGuy1 opened this issue Apr 13, 2021 · 5 comments
Closed

Reading Complex data into performVulkanFFT #25

TheGitHubGuy1 opened this issue Apr 13, 2021 · 5 comments

Comments

@TheGitHubGuy1
Copy link

Hi,

I am assigning an array of floats formatted like [real number, imaginary number, real number, imaginary number, ...] to an input buffer, I am reading in 8192 complex samples (16384 floats in total). Each pair of real and imaginary in the array represent a complex type. I then perform a transform on the data performVulkanFFT and the values returned by the output buffer aren't what I expect. How does performVulkanFFT expect complex data to be assigned to the input_buffer? and how is complex data written to the output_buffer?

uint32_t res = 0; 
std::ifstream in;
in.open("fftData.iq", std::ios::in | std::ios::binary);

if(in.is_open()) {
  // memory allocated on the CPU once, makes benchmark completion faster + avoids performance issues connected to frequent allocation/deallocation.
  float* buffer_input = (float*)malloc(2*(sizeof(float)*8192));
  
  in.seekg(0, std::ios::end);
  const size_t num_elements = in.tellg() / sizeof(float);
  in.seekg(0, std::ios::beg);
  
  std::vector<float> data(num_elements);
  in.read(reinterpret_cast<char*>(&data[0]), num_elements*sizeof(float));
  
  printf("number of floats %i \n", data.size());
  
  for(size_t i = 0; i < 30; ++i)
  {
	  printf("%f \n",data[i]);
  }
  
  for(size_t i = 0; i < data.size(); ++i)
  {
	  buffer_input[i] = data[i];
  }
  
  std::cout << "ln:664" << std::endl;
  
  VkFFTConfiguration configuration = {};
  VkFFTApplication app = {};
  configuration.FFTdim = 1; //FFT dimension, 1D, 2D or 3D (default 1).
  
  //Multidimensional FFT dimensions sizes (default 1). For best performance (and stability), order dimensions in descendant size order as: x>y>z.
  configuration.size[0] = 8192;
  configuration.size[1] = 1;
  configuration.size[2] = 1;
  
  std::cout << "ln:674" << std::endl;
  
  // After this, configuration file contains pointers to Vulkan objects needed to work with the GPU: 
  // VkDevice* device - created device, 
  // [uint64_t *bufferSize, VkBuffer *buffer, VkDeviceMemory* bufferDeviceMemory] - allocated GPU memory FFT is performed on. 
  // [uint64_t *kernelSize, VkBuffer *kernel, VkDeviceMemory* kernelDeviceMemory] - allocated GPU memory, where kernel for convolution is stored.
  configuration.device = &vkGPU->device;
  
  // to allocate memory for LUT, we have to pass a queue, vkGPU->fence, commandPool and physicalDevice pointers 
  configuration.queue = &vkGPU->queue; 
  configuration.fence = &vkGPU->fence;
  configuration.commandPool = &vkGPU->commandPool;
  configuration.physicalDevice = &vkGPU->physicalDevice;
  
  // compiler can be initialized before VkFFT plan creation. if not, VkFFT will create and destroy one after initialization
  configuration.isCompilerInitialized = isCompilerInitialized;
  
  std::cout << "ln:691" << std::endl;
  
  // Allocate buffer for the input data.
  uint64_t bufferSize = (uint64_t)(2*(sizeof(float)*8192));
  VkBuffer buffer = {};
  VkDeviceMemory bufferDeviceMemory = {};
  allocateFFTBuffer(vkGPU, &buffer, &bufferDeviceMemory, VK_BUFFER_USAGE_STORAGE_BUFFER_BIT | 
  VK_BUFFER_USAGE_TRANSFER_SRC_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT, 
  VK_MEMORY_HEAP_DEVICE_LOCAL_BIT, bufferSize);
  configuration.buffer = &buffer;
  configuration.bufferSize = &bufferSize;
  
  // Sample buffer transfer tool. 
  // Uses staging buffer of the same size as destination buffer, which can be reduced if transfer is done sequentially in small buffers.
  transferDataFromCPU(vkGPU, buffer_input, &buffer, bufferSize);
  
  // Initialize applications. 
  // This function loads shaders, creates pipeline and configures FFT based on configuration file. 
  // No buffer allocations inside VkFFT library.  
  res = initializeVkFFT(&app, configuration);
  if (res != 0) return res;
  
  uint32_t num_iter = 1;
  performVulkanFFT(vkGPU, &app, -1, num_iter);
  
  float* buffer_output = (float*)malloc(2*(sizeof(float)*8192));
  transferDataToCPU(vkGPU, buffer_output, &buffer, bufferSize);
  
  for (int x=0; x < 30; x++) {
	  printf("value: %f \n", buffer_output[x]);
  }
  
  std::ofstream myfile;
  myfile.open ("output.csv");
  for (int x=0; x < 8192; x++) {
	  myfile << std::to_string(buffer_output[x])+"\n";
  }
  myfile.close();
  
  //Clean up 
  vkDestroyBuffer(vkGPU->device, buffer, NULL);
  vkFreeMemory(vkGPU->device, bufferDeviceMemory, NULL);
  deleteVkFFT(&app);
  free(buffer_input);
  free(buffer_output);
}
@DTolm
Copy link
Owner

DTolm commented Apr 13, 2021

Hello,
Can you please share the input data, the output data, the data you expected and the GPU name so I can check it? Thank you!
Best regards,
Dmitrii

@TheGitHubGuy1
Copy link
Author

Hi Dmitrii,

Ok. The input data is just test sample data generated by gnu radio in IQIQIQ.. format, i've provided it as fftData.iq The data I expect is close to the cufft_output.csv I am providing (I have confirmed that data is good, it was generated by a NVIDIA device and their cuda library with the same input data). The output data generated by performVulkanFFT is attached as vkfft_output.csv.

data.zip

@TheGitHubGuy1
Copy link
Author

Re GPU name, it's the vulcan processor in the raspberry pi 4.

FORMAT_R64_UINT:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_R64_SINT:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_R64_SFLOAT:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_R64G64_UINT:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_R64G64_SINT:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_R64G64_SFLOAT:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_R64G64B64_UINT:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_R64G64B64_SINT:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_R64G64B64_SFLOAT:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_R64G64B64A64_UINT:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_R64G64B64A64_SINT:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_R64G64B64A64_SFLOAT:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_B10G11R11_UFLOAT_PACK32:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT
		VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT

FORMAT_E5B9G9R9_UFLOAT_PACK32:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_D16_UNORM:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_X8_D24_UNORM_PACK32:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_D32_SFLOAT:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
		VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_S8_UINT:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_D16_UNORM_S8_UINT:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_D24_UNORM_S8_UINT:
	linearTiling   FormatFeatureFlags:
		VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_BLIT_DST_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_D32_SFLOAT_S8_UINT:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_BC1_RGB_UNORM_BLOCK:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_BC1_RGB_SRGB_BLOCK:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_BC1_RGBA_UNORM_BLOCK:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_BC1_RGBA_SRGB_BLOCK:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_BC2_UNORM_BLOCK:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_BC2_SRGB_BLOCK:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_BC3_UNORM_BLOCK:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_BC3_SRGB_BLOCK:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_BC4_UNORM_BLOCK:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_BC4_SNORM_BLOCK:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_BC5_UNORM_BLOCK:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_BC5_SNORM_BLOCK:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_BC6H_UFLOAT_BLOCK:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_BC6H_SFLOAT_BLOCK:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_BC7_UNORM_BLOCK:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_BC7_SRGB_BLOCK:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_ETC2_R8G8B8_UNORM_BLOCK:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_ETC2_R8G8B8_SRGB_BLOCK:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_EAC_R11_UNORM_BLOCK:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_EAC_R11_SNORM_BLOCK:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_EAC_R11G11_UNORM_BLOCK:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_EAC_R11G11_SNORM_BLOCK:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
		VK_FORMAT_FEATURE_BLIT_SRC_BIT
		VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
		VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
		VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_ASTC_4x4_UNORM_BLOCK:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_ASTC_4x4_SRGB_BLOCK:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_ASTC_5x4_UNORM_BLOCK:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_ASTC_5x4_SRGB_BLOCK:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_ASTC_5x5_UNORM_BLOCK:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_ASTC_5x5_SRGB_BLOCK:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_ASTC_6x5_UNORM_BLOCK:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_ASTC_6x5_SRGB_BLOCK:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_ASTC_6x6_UNORM_BLOCK:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_ASTC_6x6_SRGB_BLOCK:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_ASTC_8x5_UNORM_BLOCK:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_ASTC_8x5_SRGB_BLOCK:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_ASTC_8x6_UNORM_BLOCK:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_ASTC_8x6_SRGB_BLOCK:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_ASTC_8x8_UNORM_BLOCK:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_ASTC_8x8_SRGB_BLOCK:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_ASTC_10x5_UNORM_BLOCK:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_ASTC_10x5_SRGB_BLOCK:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_ASTC_10x6_UNORM_BLOCK:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_ASTC_10x6_SRGB_BLOCK:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_ASTC_10x8_UNORM_BLOCK:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_ASTC_10x8_SRGB_BLOCK:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_ASTC_10x10_UNORM_BLOCK:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_ASTC_10x10_SRGB_BLOCK:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_ASTC_12x10_UNORM_BLOCK:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_ASTC_12x10_SRGB_BLOCK:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_ASTC_12x12_UNORM_BLOCK:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_ASTC_12x12_SRGB_BLOCK:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_G8B8G8R8_422_UNORM:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_B8G8R8G8_422_UNORM:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_G8_B8_R8_3PLANE_420_UNORM:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_G8_B8R8_2PLANE_420_UNORM:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_G8_B8_R8_3PLANE_422_UNORM:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_G8_B8R8_2PLANE_422_UNORM:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_G8_B8_R8_3PLANE_444_UNORM:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_R10X6_UNORM_PACK16:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_R10X6G10X6_UNORM_2PACK16:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_R12X4_UNORM_PACK16:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_R12X4G12X4_UNORM_2PACK16:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_G16B16G16R16_422_UNORM:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_B16G16R16G16_422_UNORM:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_G16_B16_R16_3PLANE_420_UNORM:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_G16_B16R16_2PLANE_420_UNORM:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_G16_B16_R16_3PLANE_422_UNORM:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_G16_B16R16_2PLANE_422_UNORM:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

FORMAT_G16_B16_R16_3PLANE_444_UNORM:
	linearTiling   FormatFeatureFlags:
		None
	optimalTiling  FormatFeatureFlags:
		None
	bufferFeatures FormatFeatureFlags:
		None

@DTolm
Copy link
Owner

DTolm commented Apr 13, 2021

Hm, I get the same result in cuFFT as in VkFFT (starting with 7836 and 2061)
You can check it if you add the following code before cout about line 664:

#ifdef USE_cuFFT
			uint32_t dims[4] = {8192,1,1,1};
			float* output_extFFT = (float*)(malloc(2*sizeof(float) * dims[0] * dims[1] * dims[2]));
			launch_precision_cuFFT_single(buffer_input, (void*)output_extFFT, dims);
			for (int x=0; x < 30; x++) {
				printf("value: %f \n", output_extFFT[x]);
			}
#endif // USE_cuFFT

Maybe there is some issue with data reading/processing?
Best regards,
Dmitrii

@DTolm
Copy link
Owner

DTolm commented Sep 21, 2021

Closed, as the issue has not been active.

@DTolm DTolm closed this as completed Sep 21, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants