View Issue Details

IDProjectCategoryView StatusLast Update
0024317Open CASCADEOCCT:Visualizationpublic2014-11-10 20:11
Reporterkgv Assigned Tokgv  
PrioritylowSeverityfeature 
Status closedResolutionno change required 
PlatformAOSL 
Product Version6.7.0 
Summary0024317: TKOpenGl, Ray Tracing - provide support for CPU OpenCL devices
DescriptionCurrent implementation requires GPU device from active OpenGL context to be used for Ray Tracing OpenCL cores.

Whilst run-time Ray Tracing is unreachable on modern CPUs, it is still useful to support such rendering in some scenarios such as snapshot-making and regression testing in virtual environments.
TagsNo tags attached.
Test case number

Relationships

related to 0024130 closedbugmaster Implementing ray tracing visualization core 

Activities

osa

2014-01-20 10:25

developer   ~0027550

Now CPU OpenCl devices are supported.
The call of the command "vcldevices" allows to know the list of available OpenCL devices. The "vraytrace" command can be used as earlier (vraytrace 0|1) and in this case the OpenCL device will be defined automatically (as current OpenGL device if it is available or the first available OpenCL device otherwise). And with indication of the device number (for example, "vraytrace 1 device=2").

Current implementation was tested on next systems:
- AMD Athlon II Neo K145 Processor 1,8 GHz, 1 core, OpenCL 1.2;
- AMD Athlon II X4 640 Processor 3.0 GHz, 4 core, OpenCL 1.2;
- Intel Core i5 CPU 2,67 GHz, 4 cores, OpenCL 1.2;
And while it was not tested on Intel Graphics due to its absence.
Supported hardware for Intel OpenCL can be found here: http://software.intel.com/en-us/articles/intel-sdk-for-opencl-applications-2013-release-notes.

Some moments for raytracing on Intel CPU:
1) General crashes on Intel CPU were fixed but apparently not all. Occasionally the application crashes during rotation of objects.
2) According to Writing Optimal OpenCL™ Code with Intel® OpenCL SDK (see http://software.intel.com/sites/default/files/m/d/4/1/d/8/Writing_Optimal_OpenCL_28tm_29_Code_with_Intel_28R_29_OpenCL_SDK.pdf the point 2.8) it is recommended letting the OpenCL implementation to automatically determine the optimal work-group size (sometimes referred as “local work size”) for a given kernel. Simply pass NULL for a pointer to the local work size when calling clEnqueueNDRangeKernel.
But in this case the application crashes.
The experiment was executed with a work-group sizes (local group sizes) from 1 to 2 for x and from 1 to 64 for y (the application crashes if the x local group size is greater than 2). The optimal values without antialiasing are aLocX = 2, aLocY = 32, with antialiasing are aLocX = 2, aLocY = 8.
3) The comparison of average performance for model Axis_of_bearing.brep with window size 1280x962 and in "fit all" mode on CPU Intel Core i5 and GPU NVidia GeForce GTS 450:
with antialiasing
     GPU: 12-15 FPS
     CPU: 2-3 FPS
without antialiasing
     GPU: 24-30 FPS
     CPU: 3-6 FPS

osa

2014-01-20 10:29

developer   ~0027551

Dear dbp,

the patch is ready (branch CR24317). Please review.

dbp

2014-01-27 10:22

developer   ~0027644

Dear osa,

Please consider remarks on the code and re-base your patch on CR24503_3 branch.

Performance impact should be carefully checked. Please compare performace of re-based patch and CR24503_3 on various scenes (with different shapes and different number of OpenGL structures). You may prepare some test suite (as number of test shapes and DRAW scripts) and share it with ray-tracing working group.

Crashes on Intel CPUs must be eliminated. Explore the causes of such crashes more carefully.

kgv

2014-09-23 15:54

developer   ~0032017

Dear bugmaster,

please close the issue since it can not be processed anymore after migration from OpenCL to GLSL for Raytracing functionality.

git

2014-09-30 11:38

administrator   ~0032451

Branch CR24317 has been deleted by inv.

SHA-1: ec48bdc9a7261ce5d1002fe0975d2466e56de1c0

Issue History

Date Modified Username Field Change
2013-11-05 15:02 kgv New Issue
2013-11-05 15:02 kgv Assigned To => san
2013-11-05 15:02 kgv Assigned To san => dbp
2013-11-05 15:02 kgv Relationship added related to 0024130
2013-11-05 15:31 kgv Priority normal => low
2013-11-05 17:29 kgv Assigned To dbp => osa
2013-11-05 17:29 kgv Status new => assigned
2014-01-20 10:25 osa Note Added: 0027550
2014-01-20 10:29 osa Note Added: 0027551
2014-01-20 10:30 osa Status assigned => feedback
2014-01-20 10:31 osa Assigned To osa => dbp
2014-01-27 10:22 dbp Note Added: 0027644
2014-01-27 10:22 dbp Assigned To dbp => osa
2014-01-27 10:22 dbp Status feedback => assigned
2014-04-04 18:16 abv Target Version 6.7.1 => 6.8.0
2014-09-23 12:46 abv Target Version 6.8.0 => Unscheduled
2014-09-23 15:54 kgv Note Added: 0032017
2014-09-23 15:54 kgv Assigned To osa => bugmaster
2014-09-23 15:54 kgv Status assigned => feedback
2014-09-23 15:54 kgv Resolution open => no change required
2014-09-25 10:15 bugmaster Status feedback => closed
2014-09-25 10:15 bugmaster Assigned To bugmaster => kgv
2014-09-30 11:38 git Note Added: 0032451
2014-11-10 20:11 abv Target Version Unscheduled =>