Skip to content

Commit

Permalink
fix generic functions sample
Browse files Browse the repository at this point in the history
  • Loading branch information
Regis Portalez committed Feb 21, 2019
1 parent bb0fd2b commit 42b99c6
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 24 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,22 +5,24 @@
using System.Text;
using System.Threading.Tasks;

/// <summary>
/// experimental feature -- no extensive testing
/// </summary>
namespace GenericFunctions
{
class Vector<T> where T: struct
class Vector<T> where T : struct
{
T[] _data;
int _length;
readonly T[] _data;

public Vector(T[] data)
{
_data = data;
_length = data.Length;
Length = data.Length;
}

[Kernel]
public int Length { get => _length; }

public int Length { get; }
[Kernel]
public T this[int i] { get => _data[i]; set { _data[i] = value; } }
}
Expand All @@ -34,35 +36,32 @@ public static void Invoke<T>(Vector<T> v, int i, T val, Func<T, T, T> func) wher
}

[EntryPoint]
public static void AddOne(Vector<float> v)
public static void Add(Vector<float> v, float a)
{
int N = v.Length;
for (int i = threadIdx.x + blockDim.x * blockIdx.x; i < N; i += blockDim.x * gridDim.x)
{
Invoke(v, i, 1.0F, (x, y) => x + y);
}
Parallel.For(0, v.Length, i => Invoke<float>(v, i, a, (x, y) => x + y));
}
}

class Program
{
static void Main(string[] args)
{
const int N = 1024 * 1024 * 32;
const int N = 1024*1024*32;
float[] a = new float[N];

HybRunner.Cuda().Wrap(new Operations()).AddOne(new Vector<float>(a));

for(int i = 0; i < N; ++i)
var vect = new Vector<float>(a);
HybRunner.Cuda().Wrap(new Operations()).Add(vect, 1.0F);
cuda.DeviceSynchronize();

for (int i = 0; i < N; ++i)
{
if(a[i] != 1.0F)
if (a[i] != 1.0F)
{
Console.Error.WriteLine($"ERROR at {i} : got {a[i]} instead of 1.0F");
Environment.Exit(6); // abort
}
}

Console.Out.Write("OK");
Console.Out.WriteLine("OK");
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,10 @@
</ProjectConfiguration>
</ItemGroup>
<ItemGroup>
<CudaCompile Include="hybridizer-generated-sources\hybridizer.all.cuda.cu" />
<ClCompile Include="hybridizer-generated-sources\hybridizer.generated.cpp" />
</ItemGroup>
<ItemGroup>
<CudaCompile Include="hybridizer-generated-sources\hybridizer.wrappers.cu" />
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{f40af656-734b-4bdc-81a2-e84b2a6a4aea}</ProjectGuid>
Expand Down Expand Up @@ -72,7 +75,7 @@
<HybridizerJitterServicePath>$(HybridizerInstallPath)\bin\Hybridizer.PTXJitterService.10.0.exe</HybridizerJitterServicePath>
<HybridizerJitterServiceOptions>--gpu-architecture=auto;-G;--relocatable-device-code=false;-lineinfo;--std=c++14;-DNO_EXCEPTION</HybridizerJitterServiceOptions>
<HybridizerDllFullPath>..\$(DotNetProjectName)\$(DotNetProjectName).csproj</HybridizerDllFullPath>
<HybridizerBinaryPath>W:\VsSolutions\Transcoder\Altimesh.Hybridizer.Application\bin\x64\Debug\Altimesh.Hybridizer.Application.exe</HybridizerBinaryPath>
<HybridizerBinaryPath>$(HybridizerInstallPath)\bin\Hybridizer.exe</HybridizerBinaryPath>
<HybridizerBuildTask>$(HybridizerInstallPath)\bin\Hybridizer.VSIntegration.BuildSatelliteTask.dll</HybridizerBuildTask>
<HybridizerBuildSatellite>$(HybridizerInstallPath)\bin\Hybridizer.VSIntegration.BuildSatellite.exe</HybridizerBuildSatellite>
<HybridizerGenerateLineInformation>true</HybridizerGenerateLineInformation>
Expand All @@ -89,7 +92,7 @@
<HybridizerJitterServicePath>$(HybridizerInstallPath)\bin\Hybridizer.PTXJitterService.10.0.exe</HybridizerJitterServicePath>
<HybridizerJitterServiceOptions>--gpu-architecture=auto;--relocatable-device-code=false;-lineinfo;--std=c++14;-DNO_EXCEPTION</HybridizerJitterServiceOptions>
<HybridizerDllFullPath>..\$(DotNetProjectName)\$(DotNetProjectName).csproj</HybridizerDllFullPath>
<HybridizerBinaryPath>W:\VsSolutions\Transcoder\Altimesh.Hybridizer.Application\bin\x64\Debug\Altimesh.Hybridizer.Application.exe</HybridizerBinaryPath>
<HybridizerBinaryPath>$(HybridizerInstallPath)\bin\Hybridizer.exe</HybridizerBinaryPath>
<HybridizerBuildTask>$(HybridizerInstallPath)\bin\Hybridizer.VSIntegration.BuildSatelliteTask.dll</HybridizerBuildTask>
<HybridizerBuildSatellite>$(HybridizerInstallPath)\bin\Hybridizer.VSIntegration.BuildSatellite.exe</HybridizerBuildSatellite>
<HybridizerGenerateLineInformation>false</HybridizerGenerateLineInformation>
Expand Down Expand Up @@ -122,7 +125,8 @@
</PostBuildEvent>
<CudaCompile>
<TargetMachinePlatform>64</TargetMachinePlatform>
<Include>W:\VsSolutions\Transcoder\Transcoder.Cuda</Include>
<Include>
</Include>
</CudaCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
Expand Down Expand Up @@ -151,7 +155,8 @@
</PostBuildEvent>
<CudaCompile>
<TargetMachinePlatform>64</TargetMachinePlatform>
<Include>W:\VsSolutions\Transcoder\Transcoder.Cuda</Include>
<Include>
</Include>
</CudaCompile>
</ItemDefinitionGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
Expand Down

0 comments on commit 42b99c6

Please sign in to comment.