/// <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))); }
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))))); }
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)); }
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)); }
/// <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));
/// <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))));
public static extern IntPtr SVMAlloc(Context context, SVMMemFlags flags, IntPtr size, uint alignment = 0);