User:Rishabhsuthar32/GSoC20/Log

From BRL-CAD

Development Logs

Community Bonding Period

  • Compiled working version of BRL-CAD with OpenCL on Ubuntu 18.04
  • Got familiarised with the MGED commands and the sequence of code being called from the build
  • Checked out other primitives which have been parallelized and their structure

Weekly update

  • Week - 1 (June 1 - June 5)
    • June 1: Working on getting ARBN primitive parallelized via OpenCL
    • June 6: Submitted patch for review (June 6)
  • Week - 2 (June 8 - June 12)
    • June 8: Working on getting PIPE primitive parallelized via OpenCL
    • June 9: Worked on discont_radius_shot() function
    • June 10: Worked on bend_pipe_shot() function
    • June 12: Worked on linear_pipe_shot() function
  • Week - 3 (June 15 - June 19)
    • June 15: Worked on pipe_start_shot() and pipe_end_shot() function
    • June 17: Assembled all in pipe_shot() function
    • June 19: Fixed a few bugs in pipe_shot() file
  • Week - 4 (June 22 - June 26)
    • June 22: Submitted the PIPE patch file in sourceforge
    • June 23: Started working on Dispalcement Map primitive
    • June 24: Worked on dsp_in_rpp() function
    • June 26: Worked on recurse_dsp_bb() function
  • Week - 5 (June 29 - July 03)
    • June 29: Got stuck in recurse_dsp_bb() function
    • July 1: First Evaluation Feedback

// Kept DSP primitive on hold owing to it's complex structure. Once I get used to the simple primitives, I'll be in a better position to work on DSP primitive. Hence, have kept it for the last month.

    • July 3 : Started working on Volume primitive
  • Week - 6 (July 6 - July 10)
    • July 6: Completed rt_vol_shot() and rt_vol_norm() function
    • July 8: Resolved few bugs
    • July 9 - 10: Took a break for travelling to hometown owing to Covid-19
  • Week - 7 (July 13 - July 17)
    • July 13: Submitted patch for Volume primitive
    • July 14: Started working on Metaball primitive
    • July 15: Converted secondary function: rt_metaball_point_value_iso()
    • July 16: Converted secondary function: rt_metaball_find_intersection()
    • July 17: Implemented rt_metaball_shot() in metaball_shot.cl file
  • Week - 8
    • July 20: Completed rt_metaball_norm() function. Read about the inline functions being used here and it's possible counterpart and usage in OpenCL. I think I'll merge rt_metaball_norm_internal() into the norm method.
    • July 21: Seems like there were two versions of the algorithm, only one of which was being used. Have removed the old version code from metaball_shot.cl file to remove redundancy.
    • July 22: Submitted metaball primitive here: https://sourceforge.net/p/brlcad/patches/548/ . I made a typo mistake while developing a patch, I've resubmitted it. Use the latest patch in comments section. Onto EBM primitive now!
    • July 23: The -z flag worked FINALLY! I though of giving it a try once again today and it worked. I'd to change the FindOpenCL.cmake file locally to ensure it catches the correct path of OpenCL directory. This has indeed solved a big problem of mine. I'll revisit the previous patches now and update them accordingly. Will also include a detailed documentation of the commands and resolution of the errors I faced for future reference soon.
    • July 24: Submitted patch for FindOpenCL.cmake file here: https://sourceforge.net/p/brlcad/patches/549/ . Debugged the ARBN primitive patch files to remove the compile-time errors and typos! Moved on to VOL primitive, couldn't find relevant rendering command.
  • Week - 9
    • July 27: Debugging METABALL primitive. Looking into plausible ways of passing extra parameters r_min and r_max from metaball_shot() to its rt.cl declaration.
    • July 28: While compiling previously converted primitives like ELL and ARB8, I got compilation error - "failed to set OpenCL kernel arguments". On running the code, I found a bug in master branch itself. There was a mismatch between uchar2 and uchar3 in clt_frame() function in primitve_util.c and all it's related functions. I've updated the code, will include a patch for this. All primitives are rendering successfully now! Yayyyy!
    • July 29: Submitted patch for the above bug resovled here: https://sourceforge.net/p/brlcad/patches/551/ . Moving on to removing errors in PIPE primitive. Most of the compile time errors were related to Global-Private conversion, hence made all struct inside functions global as well. It is now compiling error-free but not rendering. Gotta deep dive more!
    • July 30: Looking for possible options to print inside OpenCL kernel to see where it might be failing. Can't find any previously converted primitive with bu_log in it. Maybe, I'll import bu.h and give it a try!