GPU computing Stay up to date in OpenCL, DirectCompute, CUDA, CAL and OpenGL information

  • Subscribe to our RSS feed.
  • Twitter
  • StumbleUpon
  • Reddit
  • Facebook
  • Digg

Sunday, 7 March 2010

GPU computing toys!

Posted on 09:12 by Unknown
Hi I would like to release some lame but hopefully useful tools:
https://dl.dropbox.com/u/1416327/cld3d.rar

First OCL D3D interop headers and spec for Nvidia and AMD and a tool for checking current status:
the headers are in h
and are for d3d9,10,11 for NV and d3d9,10 for AMD..
#include for every d3d version and call initcld3d() in your code and voila you have the
d3d stuff..
if you #define INCAMD you have even amd functions included and can avoid amd headers..

with these I have complied four exes named cl_xx_interop which check d3d 9,9Ex,10 and 11..
they check extension reporting, try to create a shared context in some ways and then associate a d3d object and textures to ocl and aquire and release it prior to use..

Also cl_d3d10_interop build shows image formats avaiable to OpenCL images see next post..

Testing OCL-D3D11 interop
Checking D3D interop extensions support for platform: NVIDIA Corporation
 nv D3D  9 interop extension:  Found.
 nv D3D 10 interop extension:  Found.
 nv D3D 11 interop extension:  Found.

Using device: GeForce GTX 275
Enabling texture interop checks: image support is supported.
clGetDeviceIDsFromD3D11NV pointer: Found
 and it works! (returns d3d associated ocl device)
clCreateFromD3D11BufferNV pointer: Found
clCreateFromD3D11Texture2DNV pointer: Found
clCreateFromD3D11Texture3DNV pointer: Found
clEnqueueAcquireD3D11ObjectsNV pointer: Found
clEnqueueReleaseD3D11ObjectsNV pointer: Found
Testing context creation with
 no dev (clCreateContextFromType): OK.
dev info (getdeviceids): OK.
dev info (clGetDeviceIDsFromD3DNV CL_PREFERRED_DEVICES_FOR_D3D9_NV): OK.
Testing clCreateFromD3D11BufferNV: OK.
Testing aquire release stuff: Ok.. releasing it: Ok.
Testing clCreateFromD3D11Texture2DNV: OK.
Testing aquire release stuff: Ok.. releasing it: Ok.
Testing clCreateFromD3D11Texture3DNV: OK.
Testing aquire release stuff: Ok.. releasing it: Ok.



Also I contains a optd3d which displays the four optional d3d11 features (cap bits):

In my gtx 200 displays:


multithreaded comand lists: 0
multithreaded Concurrent Creates: 1
Double precision: 0
Compute Shader: 1

in ATI 5850 displays:


multithreaded comand lists: 0
multithreaded Concurrent Creates: 1
Double precision: 1
Compute Shader: 1

Anyway double prec is not working with loops..
This shows multithreaded command lists are still not supported by ATI (are this supposed to be a implementation issue or a hardware limitation..)
Equal to Nvidia and upcoming Fermi..

I include a CLinfo not mine but for checking CL info..

report.bat create a report.txt with the info of all this executables..
I also include 2dbench for cheking GDI in Windows 7 perf issues.. AMD will fix in Catalyst 10.4..

There is a high efficient matmul for CUDA and AMD cards and peakflops for AMD cards..

%
%  compute C = A*B, A:mxk, B:kxn, C:mxn
%
%  cubin file = ../method1/decuda_ldsb32_cudasm.cubin
%  kernel function = method1_variant_sgemmNN
%  use device: GeForce GTX 275
%  m=n=k    gpu_time (ms)   flops (Gflops/s)
     32         0.044         1.391
    128         0.120        32.451
    224         0.194       107.870
    320         0.302       201.802
    416         0.445       301.033
    512         0.619       403.979
    608         1.277       327.914
    704         1.582       410.719
    800         2.618       364.210
    896         3.135       427.439
    992         4.401       413.123
   1088         6.014       398.868
   1184         6.981       442.860
   1280         8.751       446.365
   1376        10.911       444.746
   1472        13.403       443.262
   1568        16.377       438.470
   1664        18.901       454.051
   1760        22.437       452.594
   1856        25.820       461.218
   1952        31.233       443.566
   2048        33.317       480.229
   2144        39.834       460.841
   2240        44.989       465.337
   2336        51.643       459.765
   2432        56.514       474.095
   2528        64.183       468.859
   2624        72.540       463.923
   2720        79.686       470.387
   2816        85.826       484.626
   2912        96.003       479.094
   3008       108.801       465.942
   3104       121.579       458.181
   3200       126.446       482.699
   3296       138.522       481.473
   3392       153.544       473.440
   3488       168.797       468.268
   3584       177.873       482.085
   3680       193.298       480.227
   3776       212.160       472.675
   3872       229.596       470.947
   3968       246.403       472.280
   4064       260.086       480.699
clock 1620
%  m=n=k    gpu_time (ms)   flops (Gflops/s)
     32         0.040         1.516
    128         0.108        36.044
    224         0.173       120.900
    320         0.265       229.925
    416         0.393       341.338
    512         0.535       467.090
    608         1.107       378.021
    704         1.371       474.163
    800         2.270       420.030
    896         2.751       486.983
    992         3.804       477.992
   1088         5.205       460.925
   1184         6.003       514.983
   1280         7.609       513.393
   1376         9.396       516.463
   1472        11.555       514.134
   1568        14.145       507.666
   1664        16.427       522.442
   1760        19.387       523.784
   1856        22.182       536.854
   1952        26.860       515.777
   2048        28.642       558.623
   2144        34.530       531.627
   2240        39.585       528.868
   2336        44.440       534.292
   2432        49.141       545.226
   2528        55.274       544.429
   2624        63.241       532.134
   2720        68.451       547.592
   2816        74.160       560.865
   2912        82.945       554.516
   3008        94.150       538.449
   3104       104.581       532.653
   3200       108.907       560.436
   3296       119.277       559.158
   3392       131.982       550.785
   3488       146.003       541.376
   3584       154.088       556.502
   3680       166.307       558.166
   3776       184.523       543.469
   3872       198.692       544.196
   3968       214.158       543.390
   4064       223.720       558.838

it's a cubin so will not work in fermi
5850 stock

flopspeak.exe
Device            0
target            8
localRAM          1024 MB
uncachedRemoteRAM 2047 MB
cachedRemoteRAM   2047 MB
engineClock       725 MHz
memoryClock       1000 MHz
wavefrontSize     64
numberOfSIMD      18
doublePrecision   1
localDataShare    1
globalDataShare   1
globalGPR         1
computeShader     1
memExport         1
pitch_alignment   256
surface_alignment 4096
Device 0: execution time 7913.45 ms, achieved 2041.80 gflops
oc 950mhz

flopspeak.exe

engineClock       950 MHz
memoryClock       1000 MHz

Device 0: execution time 6039.35 ms, achieved 2675.40 gflops



matmul.exe 2048 2048 100

Device 0: execution time 1415.08 ms, achieved 1214.06 gflops
oc 950mhz
Device 0: execution time 1114.06 ms, achieved 1542.09 gflops

UPDATE 1:
Nvidia and ATI working together!
opencl.dll from ati sdk 2.01

Found 2 platform(s).
platform[01104BA0]: profile: FULL_PROFILE
platform[01104BA0]: version: OpenCL 1.0 CUDA 3.0.1
platform[01104BA0]: name: NVIDIA CUDA
platform[01104BA0]: vendor: NVIDIA Corporation
platform[01104BA0]: extensions: cl_khr_byte_addressable_store cl_khr_icd cl_khr_
gl_sharing cl_nv_d3d9_sharing cl_nv_d3d10_sharing cl_nv_d3d11_sharing cl_nv_comp
iler_options cl_nv_device_attribute_query cl_nv_pragma_unroll
platform[01104BA0]: Found 1 device(s).
        device[01104C08]: NAME: GeForce GTX 275
        device[01104C08]: VENDOR: NVIDIA Corporation
        device[01104C08]: PROFILE: FULL_PROFILE
        device[01104C08]: VERSION: OpenCL 1.0 CUDA
        device[01104C08]: EXTENSIONS: cl_khr_byte_addressable_store cl_khr_icd c
l_khr_gl_sharing cl_nv_d3d9_sharing cl_nv_d3d10_sharing cl_nv_d3d11_sharing cl_n
v_compiler_options cl_nv_device_attribute_query cl_nv_pragma_unroll  cl_khr_glob
al_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_local_int32_ba
se_atomics cl_khr_local_int32_extended_atomics cl_khr_fp64
        device[01104C08]: DRIVER_VERSION: 196.75

        device[01104C08]: Type: GPU
        device[01104C08]: EXECUTION_CAPABILITIES: Kernel
        device[01104C08]: GLOBAL_MEM_CACHE_TYPE: None (0)
        device[01104C08]: CL_DEVICE_LOCAL_MEM_TYPE: Local (1)
        device[01104C08]: SINGLE_FP_CONFIG: 0x3e
        device[01104C08]: QUEUE_PROPERTIES: 0x3

        device[01104C08]: VENDOR_ID: 4318
        device[01104C08]: MAX_COMPUTE_UNITS: 30
        device[01104C08]: MAX_WORK_ITEM_DIMENSIONS: 3
        device[01104C08]: MAX_WORK_GROUP_SIZE: 512
        device[01104C08]: PREFERRED_VECTOR_WIDTH_CHAR: 1
        device[01104C08]: PREFERRED_VECTOR_WIDTH_SHORT: 1
        device[01104C08]: PREFERRED_VECTOR_WIDTH_INT: 1
        device[01104C08]: PREFERRED_VECTOR_WIDTH_LONG: 1
        device[01104C08]: PREFERRED_VECTOR_WIDTH_FLOAT: 1
        device[01104C08]: PREFERRED_VECTOR_WIDTH_DOUBLE: 1
        device[01104C08]: MAX_CLOCK_FREQUENCY: 1404
        device[01104C08]: ADDRESS_BITS: 32
        device[01104C08]: MAX_MEM_ALLOC_SIZE: 229998592
        device[01104C08]: IMAGE_SUPPORT: 1
        device[01104C08]: MAX_READ_IMAGE_ARGS: 128
        device[01104C08]: MAX_WRITE_IMAGE_ARGS: 8
        device[01104C08]: IMAGE2D_MAX_WIDTH: 8192
        device[01104C08]: IMAGE2D_MAX_HEIGHT: 8192
        device[01104C08]: IMAGE3D_MAX_WIDTH: 2048
        device[01104C08]: IMAGE3D_MAX_HEIGHT: 2048
        device[01104C08]: IMAGE3D_MAX_DEPTH: 2048
        device[01104C08]: MAX_SAMPLERS: 16
        device[01104C08]: MAX_PARAMETER_SIZE: 4352
        device[01104C08]: MEM_BASE_ADDR_ALIGN: 256
        device[01104C08]: MIN_DATA_TYPE_ALIGN_SIZE: 16
        device[01104C08]: GLOBAL_MEM_CACHELINE_SIZE: 0
        device[01104C08]: GLOBAL_MEM_CACHE_SIZE: 0
        device[01104C08]: GLOBAL_MEM_SIZE: 919994368
        device[01104C08]: MAX_CONSTANT_BUFFER_SIZE: 65536
        device[01104C08]: MAX_CONSTANT_ARGS: 9
        device[01104C08]: LOCAL_MEM_SIZE: 16384
        device[01104C08]: ERROR_CORRECTION_SUPPORT: 0
        device[01104C08]: PROFILING_TIMER_RESOLUTION: 1000
        device[01104C08]: ENDIAN_LITTLE: 1
        device[01104C08]: AVAILABLE: 1
        device[01104C08]: COMPILER_AVAILABLE: 1
platform[0313A434]: profile: FULL_PROFILE
platform[0313A434]: version: OpenCL 1.0 ATI-Stream-v2.0.1
platform[0313A434]: name: ATI Stream
platform[0313A434]: vendor: Advanced Micro Devices, Inc.
platform[0313A434]: extensions: cl_khr_icd
platform[0313A434]: Found 2 device(s).
        device[0338CA70]: NAME: Intel(R) Core(TM) i7 CPU         920  @ 2.67GHz
        device[0338CA70]: VENDOR: GenuineIntel
        device[0338CA70]: PROFILE: FULL_PROFILE
        device[0338CA70]: VERSION: OpenCL 1.0 ATI-Stream-v2.0.1
        device[0338CA70]: EXTENSIONS: cl_khr_icd cl_khr_global_int32_base_atomic
s cl_khr_global_int32_extended_atomics cl_khr_local_int32_base_atomics cl_khr_lo
cal_int32_extended_atomics cl_khr_byte_addressable_store
        device[0338CA70]: DRIVER_VERSION: 1.0

        device[0338CA70]: Type: CPU
        device[0338CA70]: EXECUTION_CAPABILITIES: Kernel
        device[0338CA70]: GLOBAL_MEM_CACHE_TYPE: Read-Write (2)
        device[0338CA70]: CL_DEVICE_LOCAL_MEM_TYPE: Global (2)
        device[0338CA70]: SINGLE_FP_CONFIG: 0x7
        device[0338CA70]: QUEUE_PROPERTIES: 0x2

        device[0338CA70]: VENDOR_ID: 4098
        device[0338CA70]: MAX_COMPUTE_UNITS: 8
        device[0338CA70]: MAX_WORK_ITEM_DIMENSIONS: 3
        device[0338CA70]: MAX_WORK_GROUP_SIZE: 1024
        device[0338CA70]: PREFERRED_VECTOR_WIDTH_CHAR: 16
        device[0338CA70]: PREFERRED_VECTOR_WIDTH_SHORT: 8
        device[0338CA70]: PREFERRED_VECTOR_WIDTH_INT: 4
        device[0338CA70]: PREFERRED_VECTOR_WIDTH_LONG: 2
        device[0338CA70]: PREFERRED_VECTOR_WIDTH_FLOAT: 4
        device[0338CA70]: PREFERRED_VECTOR_WIDTH_DOUBLE: 0
        device[0338CA70]: MAX_CLOCK_FREQUENCY: 2698
        device[0338CA70]: ADDRESS_BITS: 32
        device[0338CA70]: MAX_MEM_ALLOC_SIZE: 536870912
        device[0338CA70]: IMAGE_SUPPORT: 0
        device[0338CA70]: MAX_READ_IMAGE_ARGS: 0
        device[0338CA70]: MAX_WRITE_IMAGE_ARGS: 0
        device[0338CA70]: IMAGE2D_MAX_WIDTH: 0
        device[0338CA70]: IMAGE2D_MAX_HEIGHT: 0
        device[0338CA70]: IMAGE3D_MAX_WIDTH: 0
        device[0338CA70]: IMAGE3D_MAX_HEIGHT: 0
        device[0338CA70]: IMAGE3D_MAX_DEPTH: 0
        device[0338CA70]: MAX_SAMPLERS: 0
        device[0338CA70]: MAX_PARAMETER_SIZE: 4096
        device[0338CA70]: MEM_BASE_ADDR_ALIGN: 32768
        device[0338CA70]: MIN_DATA_TYPE_ALIGN_SIZE: 128
        device[0338CA70]: GLOBAL_MEM_CACHELINE_SIZE: 64
        device[0338CA70]: GLOBAL_MEM_CACHE_SIZE: 65536
        device[0338CA70]: GLOBAL_MEM_SIZE: 1073741824
        device[0338CA70]: MAX_CONSTANT_BUFFER_SIZE: 65536
        device[0338CA70]: MAX_CONSTANT_ARGS: 8
        device[0338CA70]: LOCAL_MEM_SIZE: 32768
        device[0338CA70]: ERROR_CORRECTION_SUPPORT: 0
        device[0338CA70]: PROFILING_TIMER_RESOLUTION: 1
        device[0338CA70]: ENDIAN_LITTLE: 1
        device[0338CA70]: AVAILABLE: 1
        device[0338CA70]: COMPILER_AVAILABLE: 1
        device[04A30050]: NAME: Cypress
        device[04A30050]: VENDOR: Advanced Micro Devices, Inc.
        device[04A30050]: PROFILE: FULL_PROFILE
        device[04A30050]: VERSION: OpenCL 1.0 ATI-Stream-v2.0.1
        device[04A30050]: EXTENSIONS: cl_khr_global_int32_base_atomics cl_khr_gl
obal_int32_extended_atomics cl_khr_local_int32_base_atomics cl_khr_local_int32_e
xtended_atomics
        device[04A30050]: DRIVER_VERSION: CAL 1.4.556

        device[04A30050]: Type: GPU
        device[04A30050]: EXECUTION_CAPABILITIES: Kernel
        device[04A30050]: GLOBAL_MEM_CACHE_TYPE: None (0)
        device[04A30050]: CL_DEVICE_LOCAL_MEM_TYPE: Local (1)
        device[04A30050]: SINGLE_FP_CONFIG: 0x6
        device[04A30050]: QUEUE_PROPERTIES: 0x2

        device[04A30050]: VENDOR_ID: 4098
        device[04A30050]: MAX_COMPUTE_UNITS: 18
        device[04A30050]: MAX_WORK_ITEM_DIMENSIONS: 3
        device[04A30050]: MAX_WORK_GROUP_SIZE: 256
        device[04A30050]: PREFERRED_VECTOR_WIDTH_CHAR: 16
        device[04A30050]: PREFERRED_VECTOR_WIDTH_SHORT: 8
        device[04A30050]: PREFERRED_VECTOR_WIDTH_INT: 4
        device[04A30050]: PREFERRED_VECTOR_WIDTH_LONG: 2
        device[04A30050]: PREFERRED_VECTOR_WIDTH_FLOAT: 4
        device[04A30050]: PREFERRED_VECTOR_WIDTH_DOUBLE: 0
        device[04A30050]: MAX_CLOCK_FREQUENCY: 725
        device[04A30050]: ADDRESS_BITS: 32
        device[04A30050]: MAX_MEM_ALLOC_SIZE: 268435456
        device[04A30050]: IMAGE_SUPPORT: 0
        device[04A30050]: MAX_READ_IMAGE_ARGS: 0
        device[04A30050]: MAX_WRITE_IMAGE_ARGS: 0
        device[04A30050]: IMAGE2D_MAX_WIDTH: 0
        device[04A30050]: IMAGE2D_MAX_HEIGHT: 0
        device[04A30050]: IMAGE3D_MAX_WIDTH: 0
        device[04A30050]: IMAGE3D_MAX_HEIGHT: 0
        device[04A30050]: IMAGE3D_MAX_DEPTH: 0
        device[04A30050]: MAX_SAMPLERS: 0
        device[04A30050]: MAX_PARAMETER_SIZE: 1024
        device[04A30050]: MEM_BASE_ADDR_ALIGN: 4096
        device[04A30050]: MIN_DATA_TYPE_ALIGN_SIZE: 128
        device[04A30050]: GLOBAL_MEM_CACHELINE_SIZE: 0
        device[04A30050]: GLOBAL_MEM_CACHE_SIZE: 0
        device[04A30050]: GLOBAL_MEM_SIZE: 268435456
        device[04A30050]: MAX_CONSTANT_BUFFER_SIZE: 65536
        device[04A30050]: MAX_CONSTANT_ARGS: 8
        device[04A30050]: LOCAL_MEM_SIZE: 32768
        device[04A30050]: ERROR_CORRECTION_SUPPORT: 0
        device[04A30050]: PROFILING_TIMER_RESOLUTION: 1
        device[04A30050]: ENDIAN_LITTLE: 1
        device[04A30050]: AVAILABLE: 1
        device[04A30050]: COMPILER_AVAILABLE: 1
UPDATE 2:
DX formats included in optd3d
Read More
Posted in | No comments

GPGPU Image support!

Posted on 08:44 by Unknown
1. D3D
In doc there is a table "Hardware Support for Direct3D 11 Formats"

Format(DXGI_FORMAT_*) # Bits Format Target
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
UNKNOWN 0 X X X
  R32G32B32A32_TYPELESS 128 X X X X X X X
    R32G32B32A32_FLOAT 128 X X X X X X X X X X X X X X X X X X o o X X X
    R32G32B32A32_UINT 128 X X X X X X X X X X X X X X o o X X
    R32G32B32A32_SINT 128 X X X X X X X X X X X X X X o o X X
  R32G32B32_TYPELESS 96 X X X X X X X
    R32G32B32_FLOAT 96 X X X X X X X X o o X o o o1 X X X o X X X
    R32G32B32_UINT 96 X X X X X X X X X o X X X o X X
    R32G32B32_SINT 96 X X X X X X X X X o X X X o X X
  R16G16B16A16_TYPELESS 64 X X X X X X X
    R16G16B16A16_FLOAT 64 X X X X X X X X X X X X X X X X X X o X X X X
    R16G16B16A16_UNORM 64 X X X X X X X X X X X X X X X X X X o X X X
    R16G16B16A16_UINT 64 X X X X X X X X X X X X X X o X X
    R16G16B16A16_SNORM 64 X X X X X X X X X X X X X X X X X X o X X X
    R16G16B16A16_SINT 64 X X X X X X X X X X X X X X o X X
  R32G32_TYPELESS 64 X X X X X X X
    R32G32_FLOAT 64 X X X X X X X X X X X X X X X X X X X o X X X
    R32G32_UINT 64 X X X X X X X X X X X X X X X o X X
    R32G32_SINT 64 X X X X X X X X X X X X X X X o X X
  R32G8X24_TYPELESS 64 X X X X X X
    D32_FLOAT_S8X24_UINT 64 X X X X X X X X o X
    R32_FLOAT_X8X24_TYPELESS 64 X X X X X X X X X X X X
    X32_TYPELESS_G8X24_UINT 64 X X X X X X X X
  R10G10B10A2_TYPELESS 32 X X X X X X X
    R10G10B10A2_UNORM 32 X X X X X X X X X X X X X X X X X X o X X X X
    R10G10B10A2_UINT 32 X X X X X X X X X X X X X X o X X
    R10G10B10_XR_BIAS_A2_UNORM 32 X X X X
  R11G11B10_FLOAT 32 X X X X X X X X X X X X X X X X X X o X X
  R8G8B8A8_TYPELESS 32 X X X X X X X
    R8G8B8A8_UNORM 32 X X X X X X X X X X X X X X X X X X o X X X X
    R8G8B8A8_UNORM_SRGB 32 X X X X X X X X X X X X X X o X X X X
    R8G8B8A8_UINT 32 X X X X X X X X X X X X X X o X X
    R8G8B8A8_SNORM 32 X X X X X X X X X X X X X X X X X X o X X X
    R8G8B8A8_SINT 32 X X X X X X X X X X X X X X o X X
  R16G16_TYPELESS 32 X X X X X X X
    R16G16_FLOAT 32 X X X X X X X X X X X X X X X X X X o X X X
    R16G16_UNORM 32 X X X X X X X X X X X X X X X X X X o X X X
    R16G16_UINT 32 X X X X X X X X X X X X X X o X X
    R16G16_SNORM 32 X X X X X X X X X X X X X X X X X X o X X X
    R16G16_SINT 32 X X X X X X X X X X X X X X o X X
  R32_TYPELESS 32 X X X X X X X X
    D32_FLOAT 32 X X X X X X X X o X
    R32_FLOAT 32 X X X X X X X X X X X X X X X X X X X X X X X o X X X
    R32_UINT 32 X X X X X X X X X X X X X X X X X X X X X X X o X X
    R32_SINT 32 X X X X X X X X X X X X X X X X X X X X X X o X X
  R24G8_TYPELESS 32 X X X X X X
    D24_UNORM_S8_UINT 32 X X X X X X X X o X
    R24_UNORM_X8_TYPELESS 32 X X X X X X X X X X X X
    X24_TYPELESS_G8_UINT 32 X X X X X X X X
  R8G8_TYPELESS 16 X X X X X X X
    R8G8_UNORM 16 X X X X X X X X X X X X X X X X X X o X X X
    R8G8_UINT 16 X X X X X X X X X X X X X X o X X
    R8G8_SNORM 16 X X X X X X X X X X X X X X X X X X o X X X
    R8G8_SINT 16 X X X X X X X X X X X X X X o X X
  R16_TYPELESS 16 X X X X X X X
    R16_FLOAT 16 X X X X X X X X X X X X X X X X X X o X X X
    D16_UNORM 16 X X X X X X X X o X
    R16_UNORM 16 X X X X X X X X X X X X X X X X X X X X o X X X
    R16_UINT 16 X X X X X X X X X X X X X X X o X X
    R16_SNORM 16 X X X X X X X X X X X X X X X X X X o X X X
    R16_SINT 16 X X X X X X X X X X X X X X o X X
  R8_TYPELESS 8 X X X X X X X
    R8_UNORM 8 X X X X X X X X X X X X X X X X X X o X X X
    R8_UINT 8 X X X X X X X X X X X X X X o X X
    R8_SNORM 8 X X X X X X X X X X X X X X X X X X o X X X
    R8_SINT 8 X X X X X X X X X X X X X X o X X
  A8_UNORM 8 X X X X X X X X X X X X X X X X o X X
  R9G9B9E5_SHAREDEXP 32 X X X X X X X X X
  R8G8_B8G8_UNORM 16 X X X X X X X X X
  G8R8_G8B8_UNORM 16 X X X X X X X X X
  BC1_TYPELESS 4 X X X X X X
    BC1_UNORM 4 X X X X X X X X X
    BC1_UNORM_SRGB 4 X X X X X X X X X
  BC2_TYPELESS 8 X X X X X X
    BC2_UNORM 8 X X X X X X X X X
    BC2_UNORM_SRGB 8 X X X X X X X X X
  BC3_TYPELESS 8 X X X X X X
    BC3_UNORM 8 X X X X X X X X X
    BC3_UNORM_SRGB 8 X X X X X X X X X
  BC4_TYPELESS 4 X X X X X X
    BC4_UNORM 4 X X X X X X X X X
    BC4_SNORM 4 X X X X X X X X X
  BC5_TYPELESS 8 X X X X X X
    BC5_UNORM 8 X X X X X X X X X
    BC5_SNORM 8 X X X X X X X X X
  B8G8R8A8_TYPELESS 32 X X X X X X X
    B8G8R8A8_UNORM 32 X X X X X X X X X X X X X X X X o X X X X
    B8G8R8A8_UNORM_SRGB 32 X X X X X X X X X X X X X X o X X X X
  B8G8R8X8_TYPELESS 32 X X X X X X X
    B8G8R8X8_UNORM 32 X X X X X X X X X X X X X X X X o X X X
    B8G8R8X8_UNORM_SRGB 32 X X X X X X X X X X X X X X o X X X
  BC6H_TYPELESS 8 X X X X X X
    BC6H_UF16 8 X X X X X X X X X
    BC6H_SF16 8 X X X X X X X X X
  BC7_TYPELESS 8 X X X X X X
    BC7_UNORM 8 X X X X X X X X X
    BC7_UNORM_SRGB 8 X X X X X X X X X


  1. Buffer
  2. Input Assembler Vertex Buffer
  3. Input Assembler Index Buffer
  4. Stream Output Buffer
  5. Texture1D
  6. Texture2D
  7. Texture3D
  8. TextureCube
  9. Shader ld
  10. Shader sample (any filter)
  11. Shader sample_c (comparison filter)
  12. Shader sample (mono 1-bit filter)
  13. Shader gather4
  14. Shader gather4_c
  15. Mipmap
  16. Mipmap Auto-Generation
  17. RenderTarget
  18. Blendable RenderTarget
  19. Depth/Stencil Target
  20. Raw UAV and SRV
  21. Structured UAV and SRV
  22. Typed UAV
  23. UAV Typed Store
  24. UAV Typed Load
  25. UAV Atomic Add
  26. UAV Atomic Bitwise Ops
  27. UAV Atomic Cmp Store or Cmp Exch
  28. UAV Atomic Exchange
  29. UAV Atomic Signed Min or Max
  30. UAV Atomic Unsigned Min or Max
  31. CPU Lockable
  32. 4x Multisample RenderTarget
  33. 8x Multisample RenderTarget
  34. Other Multisample Count RT
  35. Multisample Resolve
  36. Multisample Load
  37. Display Scan-Out
  38. Cast Within Bit Layout 
A API for getting supported formats is ID3D11Device::CheckFormatSupport..

Would be good to write a program for checking the formats supported by AMD and Nvidia..


In CUDA 3.0 you have:

1, 2 or 4 components:
*Signed or unsigned 8-, 16- or 32-bit integers (18)
*16-bit floats (currently only supported through the driver (6)
API), or 32-bit floats
24 tex formats


For CUDA-GL interop (from forums):

works for FP textures:
XXXX = R,RG,RGB or RGBA
YY = 16 or 32
i.e. 8 FP formats
works for integer texes:
XXXX = R,G,RGB or RGBA
YY = 8,16 or 32
ZZ = I or UI
i.e. 24 FP formats
depth renderbuffers doesn't work I don't know if color renderbuffers work I assume yes at least for CUDA 3.0 final..

use:
glGenTextures(1,&tex);
glBindTexture(GL_TEXTURE_2D , tex);
glTexImage2D(GL_TEXTURE_2D , 0 , GL_XXXXYYF , width , height , 0 , GL_RGBA , GL_FLOAT , 0);
glTexParameteri(GL_TEXTURE_2D , GL_TEXTURE_MIN_FILTER , GL_NEAREST);
cudaGraphicsGLRegisterImage (&resource , tex , GL_TEXTURE_2D , cudaGraphicsMapFlagsNone);
for integer texes change to that:

glTexImage2D(GL_TEXTURE_2D , 0 , GL_XXXXYYZZ , width , height , 0 , GL_RGBA_INTEGER , GL_UNSIGNED_BYTE , 0);
notes:
Notice that it is important to set the minification filter to GL_NEAREST.
In conclusion, it looks like the cudaGraphicsGL interface is working for most formats, excluding normalized internal formats such as the commonly used GL_RGBA8 format.

cuda GL allows to use RGB texes altough CUDA seems not from DOC!


OCL DX interop for Nvidia:

------------------------------------------------------------------
    DXGI Format                      cl_channel_order  cl_channel_type  
    ------------------------------   ----------------  ---------------
    DXGI_FORMAT_R32G32B32A32_FLOAT   CL_RGBA           CL_FLOAT
    DXGI_FORMAT_R32G32B32A32_UINT    CL_RGBA           CL_UNSIGNED_INT32
    DXGI_FORMAT_R32G32B32A32_SINT    CL_RGBA           CL_SIGNED_INT32
    DXGI_FORMAT_R16G16B16A16_FLOAT   CL_RGBA           CL_HALF_FLOAT
    DXGI_FORMAT_R16G16B16A16_UNORM   CL_RGBA           CL_UNORM_INT16
    DXGI_FORMAT_R16G16B16A16_UINT    CL_RGBA           CL_UNSIGNED_INT16
    DXGI_FORMAT_R16G16B16A16_SNORM   CL_RGBA           CL_SNORM_INT16
    DXGI_FORMAT_R16G16B16A16_SINT    CL_RGBA           CL_SIGNED_INT16
    DXGI_FORMAT_R8G8B8A8_UNORM       CL_RGBA           CL_UNORM_INT8
    DXGI_FORMAT_R8G8B8A8_UINT        CL_RGBA           CL_UNSIGNED_INT8
    DXGI_FORMAT_R8G8B8A8_SNORM       CL_RGBA           CL_SNORM_INT8
    DXGI_FORMAT_R8G8B8A8_SINT        CL_RGBA           CL_SIGNED_INT8
    DXGI_FORMAT_R32G32_FLOAT         CL_RG             CL_FLOAT
    DXGI_FORMAT_R32G32_UINT          CL_RG             CL_UNSIGNED_INT32
    DXGI_FORMAT_R32G32_SINT          CL_RG             CL_SIGNED_INT32
    DXGI_FORMAT_R16G16_FLOAT         CL_RG             CL_HALF_FLOAT
    DXGI_FORMAT_R16G16_UNORM         CL_RG             CL_UNORM_INT16
    DXGI_FORMAT_R16G16_UINT          CL_RG             CL_UNSIGNED_INT16
    DXGI_FORMAT_R16G16_SNORM         CL_RG             CL_SNORM_INT16
    DXGI_FORMAT_R16G16_SINT          CL_RG             CL_SIGNED_INT16
    DXGI_FORMAT_R8G8_UNORM           CL_RG             CL_UNORM_INT8
    DXGI_FORMAT_R8G8_UINT            CL_RG             CL_UNSIGNED_INT8
    DXGI_FORMAT_R8G8_SNORM           CL_RG             CL_SNORM_INT8
    DXGI_FORMAT_R8G8_SINT            CL_RG             CL_SIGNED_INT8
    DXGI_FORMAT_R32_FLOAT            CL_R              CL_FLOAT
    DXGI_FORMAT_R32_UINT             CL_R              CL_UNSIGNED_INT32
    DXGI_FORMAT_R32_SINT             CL_R              CL_SIGNED_INT32
    DXGI_FORMAT_R16_FLOAT            CL_R              CL_HALF_FLOAT
    DXGI_FORMAT_R16_UNORM            CL_R              CL_UNORM_INT16
    DXGI_FORMAT_R16_UINT             CL_R              CL_UNSIGNED_INT16
    DXGI_FORMAT_R16_SNORM            CL_R              CL_SNORM_INT16
    DXGI_FORMAT_R16_SINT             CL_R              CL_SIGNED_INT16
    DXGI_FORMAT_R8_UNORM             CL_R              CL_UNORM_INT8
    DXGI_FORMAT_R8_UINT              CL_R              CL_UNSIGNED_INT8
    DXGI_FORMAT_R8_SNORM             CL_R              CL_SNORM_INT8
    DXGI_FORMAT_R8_SINT              CL_R              CL_SIGNED_INT8


OCL supported textures see my program:
clGetSupportedImageFormats
use

 void getimageinfo(cl_context context,cl_mem_flags m,cl_mem_object_type te)
{
size_t num_entries;  cl_image_format *image_formats;
cl_int status=clGetSupportedImageFormats (context,m,te,0,NULL,&num_entries);
if(status==CL_SUCCESS&&num_entries>0)
{
image_formats=(cl_image_format*)malloc(num_entries*sizeof(cl_image_format));
status=clGetSupportedImageFormats (context,m,te,num_entries,image_formats,NULL);
if(status==CL_SUCCESS)
{
int o,t;
int i,j;
cl_int orders[]={CL_R,  CL_A,CL_INTENSITY, CL_LUMINANCE,CL_RG,  CL_RA,CL_RGB,CL_RGBA,CL_ARGB, CL_BGRA};
char  *or[]={"CL_R",  "CL_A","CL_INTENSITY", "CL_LUMINANCE","CL_RG",  "CL_RA","CL_RGB","CL_RGBA","CL_ARGB", "CL_BGRA"};
cl_int types[]={
CL_SNORM_INT8 , CL_SNORM_INT16, CL_UNORM_INT8, CL_UNORM_INT16, CL_UNORM_SHORT_565, CL_UNORM_SHORT_555, CL_UNORM_INT_101010,CL_SIGNED_INT8,
CL_SIGNED_INT16,  CL_SIGNED_INT32, CL_UNSIGNED_INT8, CL_UNSIGNED_INT16, CL_UNSIGNED_INT32, CL_HALF_FLOAT, CL_FLOAT};
char * tt[]={"CL_SNORM_INT8" ,"CL_SNORM_INT16","CL_UNORM_INT8","CL_UNORM_INT16","CL_UNORM_SHORT_565","CL_UNORM_SHORT_555","CL_UNORM_INT_101010",
"CL_SIGNED_INT8","CL_SIGNED_INT16","CL_SIGNED_INT32","CL_UNSIGNED_INT8","CL_UNSIGNED_INT16","CL_UNSIGNED_INT32","CL_HALF_FLOAT","CL_FLOAT"};
for(i=0; i
{
for(j=0; j
{
if(image_formats[i].image_channel_order==orders[j])
o=j;
}
for(j=0; j
{
if(image_formats[i].image_channel_data_type==types[j])
t=j;
}
printf("Format %d: %s, %s\n",i,or[o],tt[t]);
}
}
free(image_formats);
}
}

AMD and Nvidia return same for all args cl_mem_flags flags read or write only and cl_mem_object_type image_type set to 2d or 3d.. perhaps 3d write could report 0?

Nvidia:

Format 0: CL_R, CL_FLOAT
Format 1: CL_R, CL_HALF_FLOAT
Format 2: CL_R, CL_UNORM_INT8
Format 3: CL_R, CL_UNORM_INT16
Format 4: CL_R, CL_SNORM_INT16
Format 5: CL_R, CL_SIGNED_INT8
Format 6: CL_R, CL_SIGNED_INT16
Format 7: CL_R, CL_SIGNED_INT32
Format 8: CL_R, CL_UNSIGNED_INT8
Format 9: CL_R, CL_UNSIGNED_INT16
Format 10: CL_R, CL_UNSIGNED_INT32
Format 11: CL_A, CL_FLOAT
Format 12: CL_A, CL_HALF_FLOAT
Format 13: CL_A, CL_UNORM_INT8
Format 14: CL_A, CL_UNORM_INT16
Format 15: CL_A, CL_SNORM_INT16
Format 16: CL_A, CL_SIGNED_INT8
Format 17: CL_A, CL_SIGNED_INT16
Format 18: CL_A, CL_SIGNED_INT32
Format 19: CL_A, CL_UNSIGNED_INT8
Format 20: CL_A, CL_UNSIGNED_INT16
Format 21: CL_A, CL_UNSIGNED_INT32
Format 22: CL_RG, CL_FLOAT
Format 23: CL_RG, CL_HALF_FLOAT
Format 24: CL_RG, CL_UNORM_INT8
Format 25: CL_RG, CL_UNORM_INT16
Format 26: CL_RG, CL_SNORM_INT16
Format 27: CL_RG, CL_SIGNED_INT8
Format 28: CL_RG, CL_SIGNED_INT16
Format 29: CL_RG, CL_SIGNED_INT32
Format 30: CL_RG, CL_UNSIGNED_INT8
Format 31: CL_RG, CL_UNSIGNED_INT16
Format 32: CL_RG, CL_UNSIGNED_INT32
Format 33: CL_RA, CL_FLOAT
Format 34: CL_RA, CL_HALF_FLOAT
Format 35: CL_RA, CL_UNORM_INT8
Format 36: CL_RA, CL_UNORM_INT16
Format 37: CL_RA, CL_SNORM_INT16
Format 38: CL_RA, CL_SIGNED_INT8
Format 39: CL_RA, CL_SIGNED_INT16
Format 40: CL_RA, CL_SIGNED_INT32
Format 41: CL_RA, CL_UNSIGNED_INT8
Format 42: CL_RA, CL_UNSIGNED_INT16
Format 43: CL_RA, CL_UNSIGNED_INT32
Format 44: CL_RGBA, CL_FLOAT
Format 45: CL_RGBA, CL_HALF_FLOAT
Format 46: CL_RGBA, CL_UNORM_INT8
Format 47: CL_RGBA, CL_UNORM_INT16
Format 48: CL_RGBA, CL_SNORM_INT16
Format 49: CL_RGBA, CL_SIGNED_INT8
Format 50: CL_RGBA, CL_SIGNED_INT16
Format 51: CL_RGBA, CL_SIGNED_INT32
Format 52: CL_RGBA, CL_UNSIGNED_INT8
Format 53: CL_RGBA, CL_UNSIGNED_INT16
Format 54: CL_RGBA, CL_UNSIGNED_INT32
Format 55: CL_BGRA, CL_UNORM_INT8
Format 56: CL_BGRA, CL_SIGNED_INT8
Format 57: CL_BGRA, CL_UNSIGNED_INT8
Format 58: CL_ARGB, CL_UNORM_INT8
Format 59: CL_ARGB, CL_SIGNED_INT8
Format 60: CL_ARGB, CL_UNSIGNED_INT8
Format 61: CL_INTENSITY, CL_FLOAT
Format 62: CL_INTENSITY, CL_HALF_FLOAT
Format 63: CL_INTENSITY, CL_UNORM_INT8
Format 64: CL_INTENSITY, CL_UNORM_INT16
Format 65: CL_INTENSITY, CL_SNORM_INT16
Format 66: CL_LUMINANCE, CL_FLOAT
Format 67: CL_LUMINANCE, CL_HALF_FLOAT
Format 68: CL_LUMINANCE, CL_UNORM_INT8
Format 69: CL_LUMINANCE, CL_UNORM_INT16
Format 70: CL_LUMINANCE, CL_SNORM_INT16

AMD:

Format 0: CL_RGBA, CL_UNORM_INT8
Format 1: CL_RGBA, CL_UNORM_INT16
Format 2: CL_RGBA, CL_SIGNED_INT8
Format 3: CL_RGBA, CL_SIGNED_INT16
Format 4: CL_RGBA, CL_SIGNED_INT32
Format 5: CL_RGBA, CL_UNSIGNED_INT8
Format 6: CL_RGBA, CL_UNSIGNED_INT16
Format 7: CL_RGBA, CL_UNSIGNED_INT32
Format 8: CL_RGBA, CL_HALF_FLOAT
Format 9: CL_RGBA, CL_FLOAT
Format 10: CL_BGRA, CL_UNORM_INT8

OCL-GL interop I don't know:
for Nvidia is either the 70 above or the CUDA-GL supported formats or the GL equivalent of CUDA interop.. I suspect the CL_RGB ones supported..
for AMD either the CL image ones or CAL DX interop ones
I suspect RGB formats
AMD CAL:

CAL has textures exposed and CAL DX interop would be good to explore..

Read More
Posted in | No comments

Friday, 5 March 2010

CUDA 3.0 and Nexus in VS 2010, CUDA on FreeBSD 8.0 and much more!

Posted on 08:54 by Unknown
Interesting Nvidia threads:
1.Nexus: Unofficial Nexus / Visual Studio 2010 integration
http://forums.nvidia.com/index.php?showtopic=161096
->enables also cuda 3.x compiling with vs 2010!
this is awesome brings vs2010rc+cuda 3.0+nexus and also project templates for cuda and nexus apps!

It patches the vsvars32.bat file to read "Setting environment for using Microsoft Visual Studio 2008 x86 tools" instead of "Setting environment for using Microsoft Visual Studio 2010 x86 tools" to get around nvcc's Visual C++ version detection; otherwise it fails with this message: "nvcc fatal : nvcc cannot find a supported cl version. Only MSVC 8.0 and MSVC 9.0 are supported". It also creates the vcvarsamd64.bat file to make 64-bit builds work, or otherwise nvcc files with "nvcc fatal : Visual Studio configuration file '(null)' could not be found" (see this thread).
Nexus news: no DX9 and OGL in initial release:

DX10 is currently supported and DX11 will be available in the Beta 2 release which is scheduled for early March.DX10 and DX11 are the graphics APIs of choice for 1.0. Interesting that you feel OpenGL is favored, as full support for OpenGL won't be in the 1.0 release. The Beta 1 was focused on Compute - The Beta 2 will be released just before GDC and will bring full DX10, DX11 debugging and profiling into Visual Studio. This is a dream for game and graphics developers - perfhud on steroids. OpenGL support will come out *sometime* in late 2010. Pro version: (paid version) In addition to premium support, platform analysis (cpu+gpu correlated timeline) and advanced debugging capabilities will be available only in the pro version.
2.Feature Request: Support simultaneous native and CUDA debugging
I have noticed that it is not possible to debug CUDA and native code simultaneously on the same Visual Studio instance. I tried starting debugging through the Start CUDA Debugging option and then attaching the native debugger to the running process (inserting a 10 second sleep at the start of the program helped make this easier), but as soon as a breakpoint on a CUDA kernel is hit Visual Studio freezes.
I've been able to debug native and CUDA code on the same process simultaneously by having two Visual Studio instances open, and it works very well. I think it would be very valuable to be able to step through native code and device code on the same session, much like mixed debugging works with .NET.

2. Eclipse Plugin for CUDA and QT development

http://forums.nvidia.com/index.php?showtopic=160564

we developed a plugin for Eclipse, which comortably allows CUDA and QT development. It provides three toolchains, which can be used to compile CUDA and/or QT sources.

Features include:

- Error Parsing
- Dependency Calculation
- Automatic invocation of all tools
- ...

http://www.ai3.uni-bayreuth.de/software/eclipsecudaqt/index.php
Fastest CUDA reduction code to date! (following news last week of fastest matmul for GT200 and for AMD in C like language)
http://forums.nvidia.com/index.php?showtopic=160196

My simple but speedy reduction code (runs 106.4GB/s on GTX 295), 106.4/111.9=95.1% to the peak bandwidth good reduction code 5ms for 150m integers.
Testing with different input size I can see that your code is significantly slower if size is less than 16M, about the same speed with 32M and faster with more than 32M on the GTX 260.
Seems my code can beat SDK recution on every input size provided that the parameters M and K are properly choosed. Here is a detailed result for different M and K on different input sizes, and the performance for the SDK reduction with the same sizes are also listed.
 gtx 295 1 core.
[size=~512K]
My code (M=240, N=64, K=34): 60.3GB/s (23.3% faster)
SDK reduction (size=1<<19): 48.9GB/s
[size=~1M]
My code (M=240, N=64, K=69): 76.0GB/s (15.8% faster)
SDK reduction (size=1<<20): 65.6GB/s
[size=~2M]
My Code (M=240, N=64, K=137): 86.6GB/s (9.3% faster)
SDK reduction (size=1<<21): 79.2GB/s
[size=~4M]
My Code (M=240, N=64, K=273): 94.2GB/s (5.8% faster)
SDK reduction (size=1<<22): 89.0GB/s
[size=~8M]
My Code (M=240, N=64, K=546): 99.5GB/s (5.0% faster)
SDK reduction (size=1<<23): 94.8GB/s
[size=~16M]
My Code (M=240, N=64, K=1092): 103.1GB/s (5.5% faster)
SDK reduction (size=1<<24): 97.7GB/s
[size=~32M]
My Code (M=240, N=64, K=2184): 104.9GB/s (6.3% faster)
SDK reduction (size=1<<25): 98.7GB/s
[size=~64M]
My Code (M=480, N=64, K=2184): 105.8GB/s (7.3% faster)
SDK reduction (size=1<<26): 98.6GB/s
[size=~128M]
My Code (M=720, N=64, K=2912): 106.4GB/s (9.1% faster)
SDK reduction (size=1<<27): 97.5GB/s
*cuda_wrapper
The CUDA wrapper library provides means for an efficient resource sharing and resource protection on multi-user GPU clusters.It implements the following functionality:1) Virtualization of the physical GPU devices2) Ensuring NUMA affinity for GPUs
http://sourceforge.net/projects/cudawrapper/

It's suposed to show that allocating resources and freeing and allocating new ones show mem intact as left by last object so no privacy in this sense!

*Seems depth buffers/renderbuffers are not supported by GL interop in CUDA 3.1

so no tex where format is GL_DEPTH_COMPONENT32 in
cudaGraphicsGLRegisterImage (&resource, tex , GL_TEXTURE_2D , cudaGraphicsMapFlagsNone);
Also remember this is a post showing current color formats seems to be R,RG,RGB,RGBA in float,float16 and uint8 formats more or less similar to published OpenCL DX interop formats.. Good to write a tool that writes current formats  on OpenCL as there is a function for it for seeing if DX interop disables some formats on Nnvida hard at least.

*cuda on freebsd 8.0!
Inter-kernel communication is not supported under pain of me glaring at you really hard.
The recipe is:
FreeBSD 8.0 + NVidia driver 195.22 + CUDA 3.0
Also linprocfs and linsysfs should be mounted

uname -a
FreeBSD av429635.oops 8.0-RELEASE FreeBSD 8.0-RELEASE #0: Sun Feb 7 17:30:12 MSK 2010 root@av429635.oops:/usr/src/sys/i386/compile/ALECN80 i386

mount /compat/linux/proc/
mount /compat/linux/sys/

Well, not exactly "CUDA work on FreeBSD" - it's Linux program that use Linux libs under Linuxlator on FreeBSD that works.
Also I didn't try to compile Cuda programs yet, I've just launched programs pre-compiled on Linux (Debian)

also seems 190 drivers showed info with cudadeviceinfodrv but not created context.

*ipad: cpu is cortex a8 1ghz 1 core (same as 3gs) but stripped
gpu is power sgx variant.. but slow for pixel resolution (perhaps is 535 or 530 worse or 540 I doubt so)
so tegra2 is a lot better in cpu and gpus side seems
perhaps flash does`'t work by custom gpu altough using PowerVr IP.. as OMAP3 or 4 has been shown with Flash 10.1 video acceleration in MWC..

*"Optimus Works Perfectly With Intel Wireless Display (WiDi)"

A perfect notebook must have it!
 Still in WiDi mode you lose 3d 120hz via HDMI and also it hasn't HDCP so no Bluray..
I hope next Widi has HDCP and also HDMI 1.4 so 3d also work but will require double bandwith and seems to stress current wifi..
My question is with Optimus where Nvidia sends to Intel IGP if it have teoretically 3d screen built in with 120hz will work Nvidia 3d Vision and what about if it has DVI dual link output and I connect to 3d 120hz display? I suspect the answer is the same at least the technical hurdles seem to be.. and I think correctly is hard as is a PCI Express transfer and seems 1Gbytes/s is currently used for 60hz? so at least this would put more streess but entirelly doable if Intel IGP recognizes special 120hz modes of LCD and acts acordingly..
Also all requires Windows 7 (Optimus requires as it has two graphic drivers different IHVs at the same time and Widi seems to require 7 x64)
Also will work with macbookpro optimus laptops widi? It would require support from Intel as is using some MyWifi tech so must see.. Perhaps Apple waits for LightStage optical video outputs no wireless tech..
A dream notebook in graphics must have a d3d11 with 3d (so Fermi) also with standard 3d outputs so HDMI 1.4 outputs and 3d 120hz builtin screen and Optimus and possibly Widi better at least with HDCP support.. let's wait how long it takes to arrive to that I hope least than a year..
*Optimus has nvgpustateviewer tool that shows if Nvidia GPU is activated or not. Where to download?

intel widi no hdcp so no bluray viewing of course not 3d but optimus compatible now
similar a PERFECT 3D PROJECTOR
*720p at least
*Broad 3d support: 3d via hdmi 1.4, dlplink, 3d vision compatible
*hdcp support
so it can output 3d vision, PS3 3d games (HDMI 1.4) and Bluray 3d(HDMI 1.4+hdcp)
Now Acer and Viewsonic support all but HDMI 1.4.. so no ps3+bd3d support..

current projector is hdcp so bluray and 3d 120hz via duallink dvi or hdmi so no hdmi 1.4 3d spec support for projecting ps3 games bluray players output,etc..

iz3d 1.11 coming soon using catalyst 10.3 3d hooks for better multimon support (3d vision surround?) and possibly crossfire and also bringing d3d10 support for games

HYDRA in AMD chipset shown with GTX275+5870 are using improved Hydra 1.5 driver with better Mix mode.. it would be interesting to see how perf and compatibilty improves over time (i.e. see the hardware potential once all software issues remain solved/tuned..)

Regarding Widi:
"The software drivers that work with Intel® Wireless Display only apply to Microsoft Windows 7 64-bit*.
Intel® PROSet/Wireless WiFi Connection Utility for Windows 7 64-Bit for Intel Wireless Display
Requires special Proset driver:
Wireless Driver:
Drivers and management software for Microsoft Windows 7 64-bit OS*.
 NOTES:
http://www.intel.com/support/wireless/wtech/iwd/sb/CS-031109.htm

-The ZIP file is provided with Intel® My WiFi Technology enabled.
-Intel® My WiFi Technology has the following requirements:
-Intel® Centrino® Ultimate-N 6300, Intel® Centrino® Advanced-N 6200, Intel® Centrino® Advanced-N + WiMAX 6250, Intel® WiFi Link 1000, Intel® WiFi Link 5300, or Intel® WiFi Link 5100
-Minimum of Intel® PROSet/Wireless WiFi Connection Utility 13.0.0.0 on Microsoft Windows 7*
NOTE: Intel® Wireless Display requires one of the following products:
-Intel® Centrino® Ultimate-N 6300
-Intel® Centrino® Advanced-N 6200
-Intel® Centrino® Advanced-N+WiMAX 6250
NOTE: Features removed from this version:
Wake on Wireless LAN is not present in this version of the application.
the Intel® My WiFi Technology application is not supported for Windows Vista. This feature is available on Windows 7 only.
For the latest driver for the Intel® PROSet/Wireless WiFi Connection Utility (for Intel® Centrino® Advanced-N 6200). Intel recommends that you use the latest drivers for best performance.

intel media sdk 1.5rc

See http://software.intel.com/en-us/articles/intel-media-software-development-kit-intel-media-sdk/

Its going to support Intel Media SDK H.264 MVC codec of 3D Bluray either via GPU video processors or if they not support via optimized multithreaded SSE enabled code..
Also similar to CPU h.264 encoding support is going to be a 3D MVC encoder?


*Shader Model 5 (see Shader Model 5) vs OpenCL kernels:

Common (more or less):
Doubles with denorms
Reduced-precision reciprocal
Shader conversion instructions - fp16 to fp32 and vice versa
Structured buffer, which is a new type of buffer containing structured elements.
of which some things not present in OpenCL kernels
Resinfo on buffers
Count bits set instruction
Find first bit set instruction
Carry/Overflow handling
Bit reversal instructions for FFTs
Conditional Swap intrinsic
Also Dispatch indirect
remember it's about reading from GPU buffer the grid size to launch still requires CPU to launch the kernel..
but I doesn't require reading about 3 integers of grid which being so much size the PCI transaction still would be 1k? and add a lot of latency and add a CPU GPU synch point.. remember still no block size
at runtime kernel must be compiled for a fixed block size.
it' a evolution(?)  of Draw Indirect - Direct3D 10 implements DrawAuto, which takes content (generated by the GPU) and renders it (on the GPU). Direct3D 11 generalizes DrawAuto so that it can be called by a Compute Shader using DrawInstanced and DrawIndexedInstanced.

* gDEBugger CL is a new and exciting product; it brings all of gDEBugger's Debugging and Profiling capabilities to the OpenCL developer's world. gDEBugger CL, now in beta testing, supports all OpenCL implementations on Windows, Mac OS X and Linux. The upcoming gDEBugger iPhone version includes on-device debugging and profiling abilities, running in real-time and letting developers optimize their game on the actual iPhone device. gDEBugger iPhone displays invaluable inside information such as iPhone's GPU, CPU, graphic driver and operating system performance counters.
Read More
Posted in | No comments

Tuesday, 2 March 2010

New in Nvidia 196.75 drivers!

Posted on 18:09 by Unknown
opencl now has d3d interop:
cl_nv_d3d9_sharing cl_nv_d3d10_sharing cl_nv_d3d11_sharing
cl gl get info khr now?

new ogl extensions (dx10.1 and 11)

nv ones:
GL_NV_vertex_attrib_64bit
GL_NVX_gpu_memory_info
GL_NV_gpu_shader5
GL_NV_gpu_program5
GL_NV_gpu_program_fp64
GL_NV_gpu_program4_1

present in cat 10.3 also
GL_EXT_gpu_shader_fp64
GL_EXT_texture_buffer_object_rgb32
GL_EXT_tessellation_shader
GL_EXT_shader_subroutine
GL_EXT_gpu_shader5
GL_EXT_texture_compression_bptc

nv present:
GL_EXT_draw_indirect
GL_EXT_shader_image_load_store
GL_EXT_vertex_attrib_64bit
GL_EXT_transform_feedback3
GL_EXT_transform_feedback2

amd present:
GL_EXT_shader_atomic_counters
GL_AMD_conservative_depth

good all 195 drivers nv_
texture_buffer_object_rgb32
tessellation_shader
shader_subroutine

migrated to ext now all functionality is ext_ stuff!
nv lacks ext_shader_atomic_counters
and amd well the most imp:
GL_EXT_draw_indirect
GL_EXT_shader_image_load_store
and perhaps
GL_EXT_vertex_attrib_64bit
Read More
Posted in | No comments

GPU computing in a browser, and other news..

Posted on 18:08 by Unknown
Seems just after WebGL brings GPU graphics APIs to browsers (OpenGL ES) people are
asking about WebCL bringing similar to OpenCL to browser..
 
1.One way is via webgl using the old GPGPU using Graphics API tricks..

see here for a matmul running on GPU->learningwebgl.com

2.In the meantime seems DirectX11 plugin coming to browsers
"DirectX 11 3D Games coming to Browsers with Vision Engine 8"
this should allow compute shaders on a browser! altough not mentioned only tesselation is mentioned..

3. Search Jetpack CUDA plugin..
http://mozillalabs.com/jetpack/2010/01/25/elevating-javascript-performance-through-gpu-power/



4.nacl gpu computing opencl. Should be possible with Google NaCl for Chrome via OpenCL,CUDA ,etc.. ?

WebGL support for QtWebKit:
Related is Webkit in QT trunk has WebGL support working on N900.
Also a new backend for audio/video elements using the Qt Multimedia framework and initial work on
WebGL support.

NOTES:

* Works only when accelerated composition is not enabled in compilation
* Added --webgl command line switch to QGVLauncher, added toggle button to
QtLauncher
Why GraphicsLayer (accelerated composition layer) doesn't handle WebGL? Missing
methods:

* setContentsToGraphicsContext3D
* setGraphicsContext3DNeedsDisplay

I thinks adding support for content caching is subtask for this. WebGL support
can be tested by compiling with WTF_USE_ACCELERATED_COMPOSITING=0.
WebGL and Khronos stuff:
https://cvs.khronos.org/svn/repos/registry/trunk/public/webgl/sdk/tests/webgl-conformance-tests.html
http://www.khronos.org/webgl/wiki/Debugging
https://cvs.khronos.org/svn/repos/registry/trunk/public/index.php

 
opera 10.5 released: has faster javascript to date until minefield picks new *monkey
now concentrate on webgl..


Related is I forgot to blog about another amazing development, the DirectWrite & Direct2D landing in the Minefield nightly builds (though pref'd off.)

Enabling:
1.Enter 'about:config'
2.Click through the warning, if necessary
3.Enter gfx.font in the 'Filter' box
4.Double-click on 'gfx.font_rendering.directwrite.enabled' to set it to true
5.Below this, right click and select New > Integer to add a pref setting
6.Enter 'mozilla.widget.render-mode' for the preference name, 6 for the value
7.Restart
(To disable, set gfx.font_rendering.directwrite.enabled to false, delete mozilla.widget.render-mode, then restart.)
Old news:
"OpenSceneGraph-2.9.6 released, introduces OpenGL ES + OpenGL 3.x support!"

In March expect:
Launch of Fermi I would want PhysX 3.0,CG 3.0,CUDA 3.0final , OGL fermi d3d11 extensions and 200 drivers with CUDA 3.1 beta and OCL new d3d extensions and 3d image writes and 3d vision windowed, youtube 3d browser support and vdpau glx interop enhancements.
Unigine heaven linux demo
iz3d 1.11 direct3d 10 drivers
Events: Cebit first week, GDC second week, 15march 3rd gpgu workshoop
Snow Leopard 10.6.3
OpenRL public release
Ubuntu 10.4 beta with fglrx 8.72 beta which seems allows 3rdmultiple vendors ATI and Nvidia working together (PCI arbitration) similar to in Windows and Mac..
Joint that with an improved switcheroo patch for kernel 2.6.34 and that could possibly bring similar to Optimus on Linux.. reportedly Apple is working on Optimus tech for MacOS in next Macbook's possibly this spring.. that implies some GT2xx chip in Apple laptops.. I would hope some laptops with amd 5xxx mobility as Fermi seems long ago (well perhaps an anuncement this summer) which would bring D3D11 features but macoSX doesn't exploit's it currently barely OGL 3.x.. I hope OGL support pickup's fast on Macos and 10.6.4/5 has OGL 3.2 with ARB extensions bring parity to d3d 10.1.That would add 5xxx drivers for hackinttoshes but that can possibly come with Dual Xeon 6 cores Westmere Mac Pro coming perhaps this month also..

Also raw info:

Try less frequently than every Draw, e.g. after every important Release(), calling ClearState(), then Flush().
I assume D3D runtime check reference counters while Flush() or Present() is invoked.
yield
I am just dipping into Direct3D and i have created a app which is able to display UYVY video using D3DXLoadSurfaceFromMemory(), StrechRect() and Present() API's.

I'd like to capture and scale screenshots directly in video memory without having to rely on the CPU too much.

I've looked at GetFrontBufferData, but this copies data into system memory.

Any suggestions on how to go about doing this?

FYI I'm brand new to the Direct3D API, so nothing is to obvious to mention.

Thanks!

I have found 3dlabs GLSL frontend compiler and other utilities is on orange book web page..

cudaGetDeviceCount doesn't create a context. The first cudaMalloc will create a context. If you want to force context creation before a cudaMalloc, use cudaFree(0).
mira dc5.0 code para mul24 i IL en gpu shader analyzer para ver que pasa tambien
mads con float, integer i double

cg 2.2 gs_simple uses glsl geo shader and works with ati! so seems this would work CG on MacOSX on Nvidia and ATI also (remember Nvidia doesn't worked on Mac)..
this seems to show example to use that GLSL geo shader support on other programs (only this works).. also this would be final cg release and now waiting cg 3.0 with domain and hull shaders and fermi instructions..
Read More
Posted in | No comments

Monday, 1 March 2010

New findings and questions..

Posted on 11:52 by Unknown
Regarding DX IL:
Well I can only generate with fxc, right?.. also seems I can't feed DX IL to DX via fxc or D3DCompile or CreateComputeshader? seems no.. then what's is for excluding IHVs for doing drivers for it as base.. so no IL modification and compiling from that?ATI SKA also gets it but doesn't generate from it..
Also is DX IL spec public or anywhere avaiable?

Regarding OGL-DX interop trough OCL:
having new DX extensions for OCL Nvidia published only and AMD shipping is possible to
use for OGL-DX interop? (using createcontex with cl_context_properties having both ogl context and d3d context stuff)
It will work someday? one vendor at least? ogl extension says can be possible..
also what about wgl_dx_interop is going to be supported on Vista/7 and d3d9,10,11..
going to be introduced (at least spec txt) in  fermi gl extensions this month?

Regardinng OCL binaries
Found AMD OpenCL 2.01 supports binaries (both CPU and GPU targets) getting and building from that altough AMD release notes list that as a lacking feature..
perhaps since 2.0..
target CPU binary should be cross CPU i.e. work with all CPUs (AMD,INtel) across generations.. even Atoms..
there is a flag for only SSE2 requirement obviating current sse3 it will generate only sse2 code and run even on p4?..
GPU support is good but worse than Nvidia first binary chars are CLBC (cl byte code? similar to DXBC) and has assembly device code so I use 5xxx will not work on 4xxx would be better AMD IL so would work on all GPUs supported..
well at least seems that OCL generates AMD IL v2 in my 5xxx and I don't know if this works on 4xxx..
Also seems ELF binary and also has other info than code so you can't modify code as some headers will show code size etc..
How OCL GPU binaries compare to ELF CAL binaries with Calclassemble?..
Are the formats  going to be published simiar to CAL ELF binaries.. well at least they were some time ago but I don't know if they are up to date or possible now that seems device assmebly is not possible or at least not supported officialy on 5xxx..
Also remember Nvidia gets PTX so should work current OCL binaries with Fermi acording to Fermi compatiblity guide..
also straight ptx allows modificating code.. possible but spec 1.5 still not published (this month?)
Anyway I didn't mention last time but with decuda git now having most GT 200 arch instructions (SM 1.3) you teoretically could write a CUDA wrapper that intercept cubin and using decuda get PTX which you feed to CUDA stack.. don't know why Nvidia doesn't do that.. well they must have reason regarding precision,
mul24 is not native instruction,etc..

I have ported/fixed also swan to windows and added better opencl translation from cuda kernels..
Trying to get CAL++  fiexs for windows also..

Todays news:
*cebit: Geforce 480 boxes show 1.5gb ram 8pin+6pin connector..
ATI competition will be a 950mhz 5000mhz 5870 and 5970 with 4gb at 850mhz
also seems a Computex Dual Fermi possible by Asus..
*http://www.geosenseforwindows.com/ supplies a sensor driver for Windows for using location apis
gives a demo google maps enabled.. works with weather gadget..
Then I hope QT Location API in mobilty  pack has win7 location api support..
*cebit: gigabyte shows laptop with docking station having nvidia gtx2xx for laptops and netbook with multitouch and tablet convertible
*Hardware accelerated graphics and text in Firefox directwrite and 2d in nightly firefox for windows 7
*glu3 soon.
Old news:
*Flash 10.3 beta 3 supports GPU decoding for fluid HD youtube on netbooks with GMA500 (720p) and Broadcom CrystalHD (1080p) with new gma500 and CrystalHD new drivers..
as it's based on DXVA seem now they have proper DXVA on drivers.. it's 1 or dxva 2? i suppose 1 as it works on XP also but can be on vista uses dxva 2.0?..
*C3DL 2.0 now WebGL and beyond
*OpenScreenGraph 1.96 supports OGL ES 1.x and 2.0 and GL 3.x and Iphone coming soon..

OCL tip:
Images on today's hardware have caches, so you get most of the benefits of local memory without the difficulty. The caches are small (~32kB L1, ~768kB L2) so you need a lot of locality to make it work.
Writing to images is very slow. Avoid it if you can.
Read More
Posted in | No comments
Newer Posts Older Posts Home
Subscribe to: Posts (Atom)

Popular Posts

  • About ATI and Nvidia drivers (OCL included)!
    Hi I have been investigating AMD and Nvidia drivers.. for 10.3 there are 3d hooks support for 120hz monitors but is d3d9 d3d10 or d3d11 enab...
  • opencl/opengl linux interop! seen in opencl cuda 3.0 sdk samples
    Following my OpenCL/OpenGL Window interop work: now has come to Linux  for Nvidia GPU computing registered developers via 195.17 driver! Als...
  • State of the blog..
    Sorry for the delay guys of posting code of Apple OpenCL demos port.. the blog has been with no updated for more than 2 weeks in this rapid ...
  • Megapost!
    Today fools{ *GTX 485 is 512 cores 3gbytes gddr5 and 850/1750 shaders.. *ati 5990 has 4 gpus in board.. *bulldozer benchmarks }end fools.. A...
  • Optix and OpenCL SDKs with Visual Studio 2010
    Optix 1.0 ========= install cg download Cmake 2.80 cmake says error dumpbin not found and it is cuda doesn't work with vc2010 so copy pt...
  • things found in CUDA forums
    Also some CUDA news: Mandelbulb stereo angalyph -> have to port to 3D Vision http://forums.nvidia.com/index.php?showtopic=150985&st=2...
  • Shaders: measuring perf, source translation and parsing different languages!
    Hi, I hope to be pretty exhaustive of options for parsing and translating between graphics and compute shaders ( some open source) For DX sh...
  • Whises for OpenCL 1.1 and more!
    Make core DirectCompute 5.0 hardware features: posted http://www.khronos.org/message_boards/viewtopic.php?f=41&t=2160 *Atomics to global...
  • A long report of the silence before the storm: AKA a month before Fermi..
    Sorry raw dump of my ideas: Altough we are a month of a complete storm if we follow carefully we can hear some thunders of that storm known ...
  • News from the web!
    Some things learned in AMD forums: 1.Why 3xxx no OpenCL: Compute shader mode is a hardware feature that did not exist in the HD38XX line of ...

Blog Archive

  • ▼  2013 (5)
    • ▼  September (1)
      • What I expect from GCN2.0 and APU13 conference..
    • ►  March (3)
    • ►  February (1)
  • ►  2012 (1)
    • ►  December (1)
  • ►  2010 (46)
    • ►  July (4)
    • ►  May (1)
    • ►  April (3)
    • ►  March (9)
    • ►  February (15)
    • ►  January (14)
  • ►  2009 (125)
    • ►  December (51)
    • ►  November (53)
    • ►  October (21)
Powered by Blogger.

About Me

Unknown
View my complete profile