Program Listing for File NuMagSANSlib_KernelPostprocess.h#

↰ Return to documentation for file (src/wrapper/NuMagSANSlib_KernelPostprocess.h)

#pragma once

inline void KernelPostprocessRunMulti(InputFileData* InputData, ScatteringData* SANSData, ScatteringData* SANSData_gpu,
                                      SpectralData* SpecData_gpu) {

    int L = (*SANSData->N_q) * (*SANSData->N_theta);

    bool compute_1D_azimuthal_average = any_active(InputData->OutFlags.SANS1D);
    bool compute_1D_corr = any_active(InputData->OutFlags.Corr1D);
    bool compute_1D_pair = any_active(InputData->OutFlags.PairDist1D);

    if (compute_1D_azimuthal_average || compute_1D_corr || compute_1D_pair) {
        LogSystem::write("run: azimuthal averaging");
        AzimuthalAverage<<<(L + 255) / 256, 256>>>(*SANSData_gpu);
        CheckCUDAKernelRun("AzimuthalAverage");
    }

    if (compute_1D_corr || compute_1D_pair) {
        LogSystem::write("run: 1D correlation functions");
        DistributionFunctions<<<(L + 255), 256>>>(*SANSData_gpu);
        CheckCUDAKernelRun("DistributionFunctions");
    }

    bool compute_2D_correlation = any_active(InputData->OutFlags.Corr2D);

    if (compute_2D_correlation) {
        LogSystem::write("run: 2D correlation functions");
        CorrelationFunction_2D<<<(L + 255) / 256, 256>>>(*SANSData_gpu);
        CheckCUDAKernelRun("CorrelationFunction_2D");
    }

    if (InputData->AngularSpec_activate_flag) {
        LogSystem::write("run: angular spectrum analyzer");
        ComputeSpectralDecomposition<<<(L + 255) / 256, 256>>>(*SANSData_gpu, *SpecData_gpu);
        CheckCUDAKernelRun("ComputeSpectralDecomposition");

        LogSystem::write("run: angular amplitude spectrum analyzer");
        ComputeAngularSpectrumAmplitudes<<<(L + 255) / 256, 256>>>(*SpecData_gpu);
        CheckCUDAKernelRun("ComputeAngularSpectrumAmplitudes");
    }
}

inline void KernelPostprocessRun(InputFileData* InputData, NuMagSANSData* Data) {

    KernelPostprocessRunMulti(InputData, &Data->SANSData, &Data->SANSData_gpu, &Data->SpecData_gpu);
}