Example #1
0
/** Documented at declaration */
int
gpujpeg_table_quantization_encoder_init(struct gpujpeg_table_quantization* table, enum gpujpeg_component_type type, int quality)
{
    // Load raw table in zig-zag order
    gpujpeg_table_quantization_set_default(table->table_raw, type);
    
    // Update raw table by quality
    nppiQuantFwdRawTableInit_JPEG_8u(table->table_raw, quality);
    
    // Fix NPP bug before version 4.1 [http://forums.nvidia.com/index.php?showtopic=191896]
    const NppLibraryVersion* npp_version = nppGetLibVersion();
    if ( npp_version->major < 4 || (npp_version->major == 4 && npp_version->minor == 0) ) {
        for ( int i = 0; i < 64; i++ ) {
            table->table[gpujpeg_order_natural[i]] = ((1 << 15) / (double)table->table_raw[i]) + 0.5;
        }
    } else {
        // Load forward table from raw table
        nppiQuantFwdTableInit_JPEG_8u16u(table->table_raw, table->table);
    }
        
    // Copy tables to device memory
    if ( cudaSuccess != cudaMemcpy(table->d_table, table->table, 64 * sizeof(uint16_t), cudaMemcpyHostToDevice) )
        return -1;
    
    return 0;
}
void printfNPPinfo(int argc, char *argv[])
{
    const char *sComputeCap[] =
    {
        "No CUDA Capable Device Found",
        "Compute 1.0", "Compute 1.1", "Compute 1.2", "Compute 1.3",
        "Compute 2.0", "Compute 2.1", "Compute 3.0", "Compute 3.5", NULL
    };

    const NppLibraryVersion *libVer   = nppGetLibVersion();
    NppGpuComputeCapability computeCap = nppGetGpuComputeCapability();

    printf("NPP Library Version %d.%d.%d\n", libVer->major, libVer->minor, libVer->build);

    if (computeCap != 0 && g_nDevice == -1)
    {
        printf("%s using GPU <%s> with %d SM(s) with", argv[0], nppGetGpuName(), nppGetGpuNumSMs());

        if (computeCap > 0)
        {
            printf(" %s\n", sComputeCap[computeCap]);
        }
        else
        {
            printf(" Unknown Compute Capabilities\n");
        }
    }
    else
    {
        printf("%s\n", sComputeCap[computeCap]);
    }
}
Example #3
0
bool printfNPPinfo(int argc, char *argv[], int cudaVerMajor, int cudaVerMinor)
{
    const NppLibraryVersion *libVer   = nppGetLibVersion();

    printf("NPP Library Version %d.%d.%d\n", libVer->major, libVer->minor, libVer->build);

	int driverVersion, runtimeVersion;
    cudaDriverGetVersion(&driverVersion);
    cudaRuntimeGetVersion(&runtimeVersion);

	printf("  CUDA Driver  Version: %d.%d\n", driverVersion/1000, (driverVersion%100)/10);
	printf("  CUDA Runtime Version: %d.%d\n", runtimeVersion/1000, (runtimeVersion%100)/10);

	bool bVal = checkCudaCapabilities(cudaVerMajor, cudaVerMinor);
	return bVal;
}
Example #4
0
int
gpujpeg_table_quantization_decoder_compute(struct gpujpeg_table_quantization* table)
{
    // Fix NPP bug before version 4.1 [http://forums.nvidia.com/index.php?showtopic=191896]
    const NppLibraryVersion* npp_version = nppGetLibVersion();
    if ( npp_version->major < 4 || (npp_version->major == 4 && npp_version->minor == 0) ) {
        for ( int i = 0; i < 64; i++ ) {
            table->table[gpujpeg_order_natural[i]] = table->table_raw[i];
        }
    } else {
        // Load inverse table from raw table
        nppiQuantInvTableInit_JPEG_8u16u(table->table_raw, table->table);
    }
    
    // Copy tables to device memory
    if ( cudaSuccess != cudaMemcpy(table->d_table, table->table, 64 * sizeof(uint16_t), cudaMemcpyHostToDevice) )
        return -1;
        
    return 0;
}