Merge pull request #1 from dkarkoulis/dk-dev

Dk dev
OpenCL host code - phase 0.0.0.1

1. Added nbnxn_ocl_types_ext.h
2. Added nbnxn_ocl_data_mgmt.c
3. Added nbnxn_ocl_data_mgmt.h
4. Updates for integrating nbnxn_opencl data structure
init_atomdata_first OCL imple, updated cl_atomdata_t

1. init_atomdata_first first implementation for OpenCL
2. Updated cl_atomdata_t structure
3. Fixed errors for pow functions - now both parameters are of type real
Function, data structures updates for OCL - see comments

1. Added HAS_CC_3_0_OR_LATER to replace fields from CUDA data structure
- needs to be later removed.
2. Replaced pointers with cl_mem for fields in cl_nbparam_t
3. Updated init_ewald_coulomb_force_table for OpenCL
4. Updated init_atomdata_first for OpenCL
5. Updated set_cutoff_parameters for OpenCL
6. Updated pick_ewald_kernel_type
7. Added command_queue to ocl_gpu_info_t
Updates for OCL - see comments

1. Added OpenCL host implementation for existing CUDA host functions:
- nbnxn_ocl_min_ci_balanced
- ocl_copy_H2D_generic
- ocl_copy_H2D_async
- ocl_copy_H2D
- ocl_free_buffered
- ocl_realloc_buffered
- init_timers
- nbnxn_ocl_init_pairlist
- nbnxn_ocl_upload_shiftvec
- nbnxn_ocl_clear_f
- nbnxn_ocl_init_atomdata
- nbnxn_ocl_init_pairlist
- nbnxn_ocl_init_atomdata
- nbnxn_ocl_upload_shiftvec
- nbnxn_ocl_min_ci_balanced
2. cl_atom_data : changed fields to cl_mem type
3. cl_timers: replaced 2 event fields by 1 event and two time fields
Updates for OCL - see comments

1. Added nbnxn_ocl.c file - the equivalent of nbnxn_cuda.cu
2. Added nbnxn_ocl.h file - the equivalent of nbnxn_cuda.h
3. Added nbnxn_ocl_kernels.clh - the equivalent of
nbnxn_cuda_kernels.cuh
4. Added kernel obj initialization in init_ocl_gpu (needs improvements)
5. ocl_gpu_info_t - added new fields for pointer to kernels

ISSUES
-------
1. Clean-up required for headers included in nbnxn_ocl_kernel_nvidia.clh
See cl build errors if commenting:
__kernel void test
and un-commenting:
__kernel void NB_KERNEL_FUNC_NAME(nbnxn_kernel, _F_cuda_opencl)
2. Some kernel parameters are currently data structures stored on host.
Also the data structures contain pointers. Must be redesigned.
See clEnqueueNDRangeKernel function call for comments.