Beispiel #1
0
        /// <summary>
        /// Alloc shared virtual memory
        /// </summary>
        /// <param name="size">Size to alloc in bytes</param>
        /// <returns>A pointer to the shared virtual memory</returns>
        public SvmPointer AllocSvmMemory(IntPtr size)
        {
            SVMMemFlags flags = SVMMemFlags.ReadWrite;

            if (IsFineGrainBufferSupported)
            {
                flags = SVMMemFlags.FineGrainBuffer;
                if (IsAtomicSupported)
                {
                    flags |= SVMMemFlags.Atomic;
                }
            }
            return(new SvmPointer(_ctx, Cl.SVMAlloc(_ctx, flags, size)));
        }
Beispiel #2
0
        public SvmPointer <T> AllocSvmMemory <T>(IntPtr size)
            where T : unmanaged
        {
            SVMMemFlags flags = SVMMemFlags.ReadWrite;

            if (IsFineGrainBufferSupported)
            {
                flags = SVMMemFlags.FineGrainBuffer;
                if (IsAtomicSupported)
                {
                    flags |= SVMMemFlags.Atomic;
                }
            }
            return((SvmPointer <T>) new SvmPointer(_ctx, Cl.SVMAlloc(_ctx, flags, new IntPtr((long)size * sizeof(T)))));
        }
Beispiel #3
0
        public SvmPointer AllocSvmMemory(long length)
        {
            SVMMemFlags flags = SVMMemFlags.ReadWrite;

            if (_device.IsFineGrainBufferSupported)
            {
                flags |= SVMMemFlags.FineGrainBuffer;
                if (_device.IsAtomicSupported)
                {
                    flags |= SVMMemFlags.Atomic;
                }

                return(new SvmPointer(_ctx, Cl.SVMAlloc(_ctx, flags, new IntPtr(length)), length));
            }

            return(new SvmPointer(_ctx, Cl.SVMAlloc(_ctx, flags, new IntPtr(length)), length));
        }
Beispiel #4
0
        public SvmPointer <T> AllocSvmMemory <T>(long count)
            where T : unmanaged
        {
            SVMMemFlags flags = SVMMemFlags.ReadWrite;

            long length = count * sizeof(T);

            if (_device.IsFineGrainBufferSupported)
            {
                flags |= SVMMemFlags.FineGrainBuffer;
                if (_device.IsAtomicSupported)
                {
                    flags |= SVMMemFlags.Atomic;
                }

                return((SvmPointer <T>) new SvmPointer(_ctx, Cl.SVMAlloc(_ctx, flags, new IntPtr(length)), length));
            }
            return((SvmPointer <T>) new SvmPointer(_ctx, Cl.SVMAlloc(_ctx, flags, new IntPtr(length)), length));
        }
Beispiel #5
0
 /// <summary>
 /// Alloc shared virtual memory
 /// </summary>
 /// <param name="size">Size to alloc in bytes</param>
 /// <param name="flags">Shared virtual memory attributes</param>
 /// <returns>A pointer to the shared virtual memory</returns>
 public SvmPointer AllocSvmMemory(IntPtr size, SVMMemFlags flags)
 => new SvmPointer(_ctx, Cl.SVMAlloc(_ctx, flags, size));
Beispiel #6
0
 /// <summary>
 /// Alloc shared virtual memory
 /// </summary>
 /// <typeparam name="T">Unmanaged retrun type</typeparam>
 /// <param name="size">Size to alloc in bytes</param>
 /// <param name="flags">Shared virtual memory attributes</param>
 /// <returns>A pointer to the shared virtual memory</returns>
 public SvmPointer <T> AllocSvmMemory <T>(IntPtr size, SVMMemFlags flags)
     where T : unmanaged
 => (SvmPointer <T>) new SvmPointer(_ctx, Cl.SVMAlloc(_ctx, flags, new IntPtr((long)size * sizeof(T))));
Beispiel #7
0
 public static extern IntPtr SVMAlloc(Context context,
                                      SVMMemFlags flags,
                                      IntPtr size,
                                      uint alignment = 0);